threadPoolExecutor 일반적으로 멀티쓰레딩 작업이 필요할때 우리는 별도의 ThreadPoolTaskExecutor를 등록하여 쓰레드풀을 통해서 멀티쓰레드가 관리 될 수 있도록 합니다. 이때 작업의 성격에 따라 쓰레드풀을 공용으로도 상요하기도 하고 작업마다 나누어서 사용하기도 하는데, 작업의 트래픽이나 중요도 등을 고려하여 알맞은...
virtualThread jdk21, spring boot 3.2 버전부터 virtualThread가 도입되면서 한동안 크게 변치 않던 java의 thread 처리방식에 변화가 생겼습니다. 기존 플랫폼 스레드를 사용할때의 단점을 보완하여 멀티쓰레드 프로그램의 처리량을 더 늘리기 위한 목적으로 신규 도입된 기능입니다. virtualThread 관련한...
우리가 내가 일하는 방법 다소 도발적인 제목으로 이번 포스팅 주제를 잡아보았습니다. 몇년전, 우아한 형제들에서 우리가 일하는 방법 이라는 제목으로 사내의 개발 문화에 대해 발표를 들었던 기억이 나서 제목을 오마쥬 해보았는데요, 오늘 공유하고자 하는 내용은 제가...
Spiring boot 3.2.0 update Spring boot 3.2.0 update 사항 정리 (2023. 11. 23) 원문 https://spring.io/blog/2023/11/23/spring-boot-3-2-0-available-now/ https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes 내기준 주요 변경사항 RestClient 지원 webClient와 비슷한 RestClient 제공 RestTemplate를 대체할수 있는 기능이 될듯 가상 스레드 지원 java19 부터...
Lombok builder reflection rowmapper 작업중 lombok builder를 바로 사용하지 못하고 reflection 을 통해 rowmapper를 구성해야 할 일이 생겨 작업했던 코드를 기록합니다. 여러 타입들에 대해 사용될 수 있는 공통적인 rowMapper 구성 필요시 유용 할 수 있습니다....
Spring batch 5 메이저 업데이트 작년 말, Spring 6, Spring boot 3.0 업데이트와 함께 Spring batch 또한 5.0 으로 메이저 업데이트가 되었습니다. 업데이트 된지는 반년이 지났지만 최근 배치 프로젝트 작업을 진행하면서 확인했던 변경점들을 정리해보려고 합니다....
Spiring boot 3.1.0 update Spring boot 3.1.0 update 사항 정리 (2023. 05. 18) 원문 https://spring.io/blog/2023/05/18/spring-boot-3-1-0-available-now/ https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.1-Release-Notes 내기준 주요 변경사항 Git 커밋 ID Maven 플러그인 버전 속성 변경 maven id 변경사항 수정 필요 테스트 컨테이너 종속성...
단순한 Spring Data JDBC 이전 포스팅 내용에 이어지는 포스팅입니다. 먼저 단순한 사용을 지향하는 Spring Data JDBC에 대해서 조금더 알아보도록 하겠습니다. 객체매핑 테이블 구조에 대응된 객체 매핑 기능들을 제공합니다. JPA와 비슷한 방식으로 @Table, @Id, @Column등의 어노테이션을...
Spring Data JDBC 소개 이번 포스팅에서는 저희 팀에서도 활발하게 사용하고 있는 Spring Data JDBC에 대한 가벼운 소개를 해보려고 합니다. 혹시 처음 들어보셨다고 하더라도 이름만 보면 spring 에서 공식적으로 지원하는 data를 다루기위한 jdbc 프레임워크이겠구나 라고 알수...
기능 전환 롤백 개발을 하면서 신규 기능이 추가되는 경우 배포후 이슈가 확인되었을때 빠르게 롤백하는것은 장애영향을 줄이기위해 아주 중요한 작업입니다. 특히나 최근 제가 작업중인 대규모 시스템 리팩토링에서는 배포 -> 이슈확인 -> 롤백이 자주 일어날 수 있는...
레거시코드 요즈음 레거시코드 최신화 작업을 진행하면서 느끼는 생각들에 대해 정리해보고자 합니다. 많은 개발자, 아니 모든 개발자들에게 있어서 레거시코드란 두려움의 대상이지만 쉽사리 개선에 도전하기 어려운 무시무시한 존재라고 생각합니다. 사실 레거시코드의 정의 또한 모호하기도 한데 아래와 같은...
Spiring boot 3.0.0 update 4.5 년만에 메이저 업데이트 Spring boot 3.0.0 update 사항 정리 (2022. 11. 24) 원문 https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes 내기준 주요 변경사항 Java 버전 최소기준치 java17 사용 스프링 버전업을 위해서라도 java 버전을 함께 올리는...
메세지 발행 트랜잭션 보장 필요상황 메세지를 발행하는 Producer를 구축할때 일반적으로 고민하는 이슈중 하나는 DB 와 메세지 발행의 트랜잭션 보장 방법 입니다. 단순히 메세지 발행만 하는 시스템일 경우에는 크게 고민이 되지 않을수 있겠지만 아래와 같은 예시상황에서는...
망취소? 금융/결제 관련 업무를 진행해보셨다면 망취소라는 단어를 접해보셨을분들이 많이 계시겠지만, 그렇지 않은 경우라면 이 단어자체가 생소하신분도 많이 계실것 같습니다. 한글단어로써는 무슨 의미인지 잘 이해가 되지 않을수 있지만, 영단어로 번역해보면 net cancel으로 벌써 어떤 내용인지 벌써...
카프카 마이그레이션 시도의 이유 최근 일 3,000만 이상의 대용량 Kafka 메세지가 발행되는 신규 Producer 시스템을 리빌딩하는 프로젝트를 성공적으로 마무리했습니다. 이 프로젝트를 진행하면서 Kafka 또한 운영중인 상태에서 멈춤 없이 신규 Cluster로 전환 할 수 있었는데, 안전하게...