목록Java/Spring (4)
Lewis's Tech Keep
처리율 제한 장치(rate limiter)란?클아이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치 특징특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한요청 횟수가 임계치를 넘어가면 추가로 도달한 모든 호출은 처리가 중단(block) 이점DoS 자원 고갈 방지비용 절감추가 요청을 block 하기 때문에 더 많은 서버 자원이 필요하지 않게 됨서버 과부하 방지bot에서 오는 트래픽이나 사용자의 잘못된 이용패턴으로 유발된 트래픽을 걸러내는데 활용 요구되는 사항들낮은 응답시간가능한 적은 메모리분산형 처리율 제한여러 서버나 프로세스에서 공유예외 처리 - 발생한 경우에 사용자에게 분명히 보여주기높은 fault tolerance : 제한 장치에 장애가 생기더라도 전체 시스템에 영향을 주..
java 21 로 버전업하면서 Spring kafka consumer도 virtual threads 로 사용하고 싶었기에 ListenerContainerFactory 빈을 등록할 때 링크 를 참고해서 AsyncTaskExecutor와 virtualThread 옵션을 활성화 시켜봤다.그러나 운영 배포 후 rebalancing 이 계속 발생하면서 파드가 떨어지기 시작했다.왜 그런가 했더니 설정 시 asyncTaskExecutor.setConcurrencyLimit(SimpleAsyncTaskExecutor.UNBOUNDED_CONCURRENCY);아래와 같이 TaskExecutor ConcurrenyLimit 정책을 UNBOUNDED_CONCURRENCY로 가져갔더니 쓰레드를 무한히 생성하였고 이로 인하여..
Spring Hibernate Envers 사용 시 아무것도 설정하지 않고 사용 시 revisionId와 revision timestamp를 저장하는 revinfo라는 테이블이 있는데, 해당 테이블의 revisionId 값은 integer로 저장된다.Dev 환경이라면 괜찮지만 Production 환경에서 Envers를 사용하고 있고 자주 기록하는 서버라면 Integer MAX값인 21억을 넘는 것은 현실이 될 수도 있다.이런 경우 테이블이 이미 생성되어 있는 경우 마이그레이션과 함께아래와 같이 CustomRevisionEntity를 준비해서 변경해주는 것이 좋다.-- table seq type 변경ALTER TABLE revinfo ALTER COLUMN rev TYPE BIGINT USING rev::..
계기 Spring으로 user 관련 서비스를 만들다 DataJpaTest를 통한 테스트 코드 운용 중에 에러를 발생! 에러 메시지 o.h.e.internal.DefaultLoadEventListener : HHH000327: Error performing load command org.hibernate.exception.SQLGrammarException: could not prepare statement at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63) ~[hibernate-core-5.6.10.Final.jar:5.6.10.Final] at org.hibernate.e..