HikariCP Maximum Pool Size 설정 시, 고려해야할 부분
이 글의 예상 독자아래와 같은 에러의 원인을 찾아헤멘 개발자 o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: null o.h.engine.jdbc.spi.SqlExceptionHelper : ...
Read more
HikariCP Failed to Validate Connection Warning 이야기
hikari-pool - Failed to validate connectionSpringboot2.x를 사용하다 보면 이런 warn level 에러를 마주칠 수 있습니다. 123hikari-pool - Failed to validate connection com.mys ...
Read more
Spring-Kafka-Streams Serde 내부 이야기
Version Up팀에서 사용하는 Spring boot version up (2.1.6 -> 2.2.2)을 하면서 호환성을 맞추기 위해spring-cloud-stream-binder-kafka-streams 라이브러리도 같이 버전업을 하게 되었습니다. (2.2.0 ...
Read more
Custom @Enable Annotation 만들어보기
Multi 모듈 프로젝트에서 발생하는 일Maven, Gradle을 이용해서 멀티 모듈을 구성하다 보면 각 모듈 별로 중복된 Bean을 계속 생성 코드를 만드는 경우가 있습니다.(ex: Datasource, TransactionManager 등등) 예시 : Cust ...
Read more
Spring Rest Docs를 이용한 API 문서 만들기
Spring Rest API 문서를 자동으로 생성하고자 할 때, 보통 Swagger로 많이 사용하지만이번에는 Spring Rest Docs를 사용하여 API 문서를 자동으로 작성 할 수 있도록 해봤습니다. 포스팅에 작성된 코드는 https://github.com/ja ...
Read more
Event-Driven-Architecture란?
Event Driven 란? Event Driven은 IT 영역에서 오래 사용된 키워드이며, 현재도 그 영향력이 대단하여 2018년 Gartner에서 선정한 유망한 기술 트렌드 중 하나로 뽑히기도 했다.(Top 10 Strategic Technology Trends f ...
Read more
Item 88. readObject 메서드는 방어적으로 작성하라
서론Item 50에서는 불변인 날짜 범위 클래스를 만드는데 가변인 Date 필드를 이용했다.그래서 불변식을 지키고 불변을 유지하기 위해 생성자와 접근자에서 Date객체를 방어적으로 복사하느라 코드가 상당히 길어졌다. 12345678910111213141516171819 ...
Read more
Item 87. 커스텀 직렬화 형태를 고려해보라
서론개발 일정에 쫓기는 상황에서는 API 설계에 노력을 집중하는 편이 낫다.다음 릴리스에서 세부적인 기능을 제대로 구현하고 이번 릴리즈는 대충 동작만하게 하면 된다는 뜻이다.하지만 클래스가 Serializable을 구현하고 기본 직렬화 형태를 사용한다면 다음 릴리즈때 ...
Read more
Item 79. 과도한 동기화는 피하라
서론과도한 동기화는 성능을 떨어뜨리고, 교착상태에 빠뜨리고, 심지어 예측할 수 없는 동작을 낳기도 한다.응답 불가와 안전 실패를 피하려면 동기화 메서드나 동기화 블록 안에서는 제어를 절대로 클라이언트에 양도하면 안 된다. 동기화(synchronized) 된 코드 ...
Read more
Item 78. 공유 중인 가변 데이터는 동기화해 사용하라
서론싱글 스레드 기반의 프로그램에서는 하나의 스레드가 하나의 객체를 사용하면 되기 때문에 동기화에 대한 걱정을 하지 않아도 되지만,멀티 스레드 기반의 환경에서는 여러개의 스레드가 하나의 객체를 공유해서 사용하는 경우가 있다.하나의 객체를 공유하며 사용하는 경우 불변 객 ...
Read more