분류 전체보기
[Spring] 이벤트 처리를 위한 스케줄러 작업 조정(ShedLock 활용)
[Spring] 이벤트 처리를 위한 스케줄러 작업 조정(ShedLock 활용)
2021.09.22사용 배경 문제 인식 - 1. outbox 테이블 전체 조회로 인한 문제 - 2. scale-out 상황에서 스케줄러 작업의 중복 실행의 가능성 문제 ShedLock을 위한 프로젝트 설정 ShedLock을 이용한 스케줄링 Lock 설정 - Scale-out 상황에서 스케줄러 중복 실행에 대한 해결 전체 조회 내용을 chunk로 나누어 작업 수행 - 처음에 작은 단위로 조회해보기 - 비동기 방식으로 메일 전송 작업하기 끝나지 않은 고민 - 작업을 꼭 수행해야하는 기능에 대해서는 어떻게 구현할 것인가 📌 1. 사용 배경 프로젝트를 진행하면서 패스워드 변경 요청을 위한 Email 전송 기능이 필요해졌습니다. Email은 spring boot starter mail 라이브러리를 사용하여 테스트용도로 개발을 진행..
MyBatis insert 구문 사용시 mapping 주의 사항
MyBatis insert 구문 사용시 mapping 주의 사항
2021.09.07📌 MyBatis 사용함에 있어서 살짝의 아쉬움... (그래도 좋다!) MyBatis를 사용하면서 SQL 구문과 객체 관점을 매핑해준다는 점에서 많은 장점이 있습니다. 지연 로딩 등의 여러 유용한 기능들도 제공해주기도 하고 JPA와 같이 사용하면서 성능 조절을 할 수 있다는 점도 장점이라고 할 수 있겠네요. 하지만 제가 사용하면서 느낀점은 개발할 때 Entity Class와 Mapper xml 설정 내용 둘다 유심히 잘 봐야한다는 점에서 번거로움이 있었습니다. 특히 xml 설정 내용은 철자 하나하나 정확하게 작성해야 하고 java 코드가 아니라 쌩 SQL 구문을 이용해야 한다는 점에서 살짝 불편함을 느꼈습니다. 그 중 제가 자주 에러를 마주했던 부분에 대해 기록하고자 합니다. 📌 기본적인 INSERT 쿼..
Docker로 Elastic APM 구성하기 (Spring Boot 환경)
Docker로 Elastic APM 구성하기 (Spring Boot 환경)
2021.08.09Overview What is APM? docker compose file 구성하기 실행하기 📌 1. Overview 프로젝트 진행하면서 ngrinder 성능테스트 툴까지 세팅은 다 마친 상황에서 이제 이를 모니터링 할 수 있는 툴을 적용해야 될 시점이 왔습니다. 여러 모니터링 툴들이 많이 있었지만 저는 그 중에 Elastic APM을 적용해봤습니다. 📌 2. What is APM? APM(Application Performance Monitoring or Management) 영어 명칭 그대로 애플리케이션의 성능을 모니터링해주는 시스템을 뜻합니다. 리얼타임에서 서비스 애플리케이션의 성능을 보여주는데 정말 많은 지표들을 제공해줍니다. (Request에 대한 응답 시간, DB 쿼리 성능, 캐쉬 등등) 애플..
[Spring] Interceptor, Resolver 객체 전달을 통한 리팩토링
[Spring] Interceptor, Resolver 객체 전달을 통한 리팩토링
2021.08.02Overview Interceptor와 Resolver 기존 방식 리팩토링 진행 후 코드 정리 📌 1. Overview 최근 프로젝트를 개발하면서 로그인 인증 처리와 세션 연장 처리 부분을 Spring Security 사용하지 않고 구현해보는 과정을 진행하였습니다. Interceptor를 사용하였고 인증된 UserSession 객체를 handler parameter에 전달하기 위해 HandlerMethodArgumentResolver를 사용하였습니다. 문제는 각각의 interceptor와 Resolver 구현체에서 Redis 조회가 이루어져 비용측면에서 비효율적인 부분이 보였습니다. 이를 개선해본 내용들을 블로그에 글로 정리해봤습니다. 📌 2. Interceptor와 Resolver Interceptor..
docker를 이용한 Ngrinder 성능 테스트 환경 세팅
docker를 이용한 Ngrinder 성능 테스트 환경 세팅
2021.07.25Overview Ngrinder dockerfile 구성 Ngrinder Controller에서 테스트 설정하기 결론 📌 1. Overview Spring Boot(Scale-out) Docker MySQL Nginx(Load Balancer) Redis 진행하고 있는 프로젝트의 대략적인 환경입니다. 여기에서 간단한 성능 테스트를 해보고자 Naver에서 Open Source로 제공하고 있는 Ngrinder 성능테스트 툴을 적용해보려고 합니다. Ngrinder와 성능테스트에 대한 세세한 내용은 생략하고 단순히 Ngrinder 적용 방법에 대한 간단한 글을 적어둘까해요. (사실 제가 나중에 보려고 적어두는 글입니다. ㅎㅎ) 📌 2. Ngrinder dockerfile 구성 Ngrinder war 파일을 직접..
[IntelliJ] java import 인식 못하는 상황
[IntelliJ] java import 인식 못하는 상황
2021.07.25IntelliJ로 Java Project 진행시 package 구조 수정해야하는 상황에서 발생하는 문제 수정하고나서 java 파일 import를 못하는 상황 (아예 해당 자바파일이 조재하지 않는다고 인식) gradle reimport, .idea 파일 지우고 build project 진행해도 해결되지 않음 📌 해결 문제가 되는 해당 자바 파일을 지웠다가 다시 작업 취소(ctrl + z)하는 방식으로 해결