배치 성능 최적화 - JdbcTemplate 리팩토링 배경 (이전글)삭제배치 성능 최적화 이전 글에서 DB 데이터 정리 배치가 4시간 30분 → 30초대로 줄어든 과정을 정리했었다. ROWNUM <= CHUNK_SIZE 방식으로 네이티브 쿼리를 chunk size만큼 반복 삭제하는 방식이었고, Tasklet으로 구성했었다. 그런데 리...
✨TIL - 동시성 문제 해결
문제발생 여러 애플리케이션에서 한 테이블로 로그성 데이터를 남겼다. 그러기도 했고, 단말에서 부터 이중~사중으로 호출되는 경우가 있어 운영 중 락이 걸리는 위험한 경우가 발생했다. 서버 로그에는 문제가 없었지만, 해당 시간 대의 SQL session을 확인 했을 때 insert 쿼리가 한개씩 여러번 실행되는 것이 아닌 … 한번데 4개의 ...
✨TIL - 삭제 배치 성능 최적화
배치 성능 최적화 디비 데이터 정리 배치 중 유독 한 배치만 느리게 실행된다. 다른 기존에 잘 사용하고 있던 배치를 가져다 만든 같은 코드였지만, 여러 배치가 있는데 해당 배치가 너무 오래걸려 다른 배치들이 밀리기 시작했다. 이 배치가 자정에 시작해 4시간 반 소요되어 운영 시작 시간이 오전 5시 이후에도 끝나지 않는 문제가 발생하였다. 테...
✨TIL - cicd 와 무중단배포
CI/CD란? 무중단 배포란? CICD 와 무중단배포는 다른 것! 현재 방식은 taskkill → build → start 또는 build -> restart 를 사용하고 있다. 주로 사용자가 없을 시간에 패치를 하기 때문에 무중단 까지는 필요하지 않다. 하지만 지금 방식에서 무중단 배포로 변경하려면 start /b ...
✨TIL - 자바 Virtual Thread
자바 Virtual Thread (참고) Java의 미래, Virtual Thread 4월 우아한테크세미나 ‘Java의 미래, Virtual Thread’
✨TIL - Netty request type 으론 dto를 사용할 수 없는가?
Netty request type 으론 dto를 사용할 수 없는가? 기존 netty 프로젝트에서 추가 개발에 들어갔다. 필수값 exception 처리에 대한 기존 코드들을 보고, 왜 이렇게 했을까 하는 생각에 새로 추가할 api에는 request dto에 validate annotation을 사용하는 방법으로 해보려했다. 근데 요청이 ...
✨TIL - 스레드 풀과 DB 커넥션 풀
스레드 풀과 DB 커넥션 풀 스레드 풀 작업 처리를 위해 스레드를 효율적으로 관리하는 방법 커넥션 풀 데이터베이스 연결을 재사용함으로써 연결 생성과 소멸에 드는 비용을 줄이는 기술 스레드 풀과 커넥션풀 의 상관관계 스레드 풀 > 커넥션 풀 동시에 많은 스레드가 디비 커넥션을 요구하게 ...
✨TIL
스프링 모니터링 툴 프로메테우스, 그라파나 설정
✨TIL - WebClient(2)
(관련 글) 이전 ✨TIL 이전 글과 같은 WebFlux 코드를 완성하고 baseUrl 관련해 .yml 파일로 관리하기 위해 변수에 넣어 주었다. @Value("${url.server1}") private String baseUrl1; @Value("${url.server2}") private String ba...
✨TIL - WebClient(1)
WebClient 구현한 부분에서 추가 수정에 들어갔다. 원래는 서버로 요청을 하고 Exception 이 발생하면 바로 뱉았지만 1server 로 요청을 하고 실패했을 때 2server 로 재요청을 한 뒤 그때도 실패한다면 Exception 을 뱉는 것이다. 다음은 원래 코드의 일부 예시다. this.webClient = webCl...