일단 해보고, 아니면 뭐

실패했어도 배웠으면 실패가 아냐.

무한한 개발세계 여행기

Programing/Spring 11

WAS (Spring Boot) - DB 성능 개선과 최적화 (4) - RedisTemplate

드디어 마지막 시간이다. 이번에는 Redis 데이터베이스와 연동하여 사용 중인 RedisTemplate에 대해서 정리해보고자 한다. RestTemplate는 이름에서도 보이다시피 Redis Command를 도와주는 Template이다. 결론부터 보자면 나는 이렇게 사용중이다. 천천히 확인해보자 일단 설정값들을 확인해 보기 전에 Connection Pooling의 필요성 여부를 확인해 봐야 한다. Redis는 서버 자체가 Single Thread 기반이기 때문에 WAS 측에서 Connection Pooling을 한다고 하더라도 성능 상의 이점이 두드러지지 않는다. 왜냐면 Connection Pooling이라는 행위가 일단 Connection을 만들어 놓는 거기 때문에 그만큼에 메모리 자원을 점유하게 되기 ..

Programing/Spring 2022.06.02

WAS (Spring Boot) - DB 성능 개선과 최적화 (3) - RestClient

다른 부분 정리하느라 좀 늦어졌지만 세 번째로 RestClient에 대해서 정리하려고 한다. 프로젝트 내에서 사용중인 데이터베이스 중에서 Elastic Search 를 위해 사용 중인 라이브러리이다. RestClient는 Elastic Search REST Client 인 High Level REST Client Library에 포함되어 있는 부분으로 Elastic Search 서버에 HTTP 요청을 위한 Client 용 객체이다. 나는 다음과 같이 사용 중이다. RestClient를 생성하는 비즈니스 로직을 분석해보며 많이 놀랐다. public RestClient build() { if (this.failureListener == null) { this.failureListener = new Failu..

Programing/Spring 2022.06.02

Spring 양방향 Dependency Injection

핑계라면 핑계겠지만, 개발 일정에 쫓겨가며 부랴부랴 개발을 하고 있던 시절이 있었다. 최대한 노력하며 보기 좋고 깔끔한 코드를 짜고자 했지만, 일이 터지고 말았다. 로컬에서 개발과 테스트를 마친 후, 개발서버에 배포를 했는데 프론트앤드 개발자분에게 바로 메신저가 왔다. 'API 응답이 안오는데요? 제품 로그인이 안되네요.' 나는 로그인쪽을 수정하지 않았기에 내가 원인이 아닐 거라는 생각만 가지고 원인 파악을 들어갔다. (대체 누구야 라는 건방진 생각도 했다지) 로그를 까고 보니 서버는 기동조차 하지 못하고 기동중에 죽어버렸던 것이다. 마지막 서버 로그를 확인해보니 StackOverFlowError 무한참조... 어쩌고... 로그를 내면서 내가 구성한 서비스들끼리에 순환 참조 관계를 그림으로 나타내주었는데..

Programing/Spring 2022.05.29