dev/spring47 Spring Boot ShedLock in Action (with MongoDB) 개요Spring Boot를 사용하여 프로젝트를 진행할 때 간단한 예약 작업은 @Scheduled 어노테이션을 사용하여 간단하게 처리할 수 있다. @Scheduled 로직을 실행하는 서버가 1개인 경우에는 아무런 고민 없이 사용가능하지만, 고가용성을 위하여 2개 이상 서버를 실행하는 경우에는 @Scheduled의 로직이 중복으로 실행되어 개발자가 의도하지 않거나 예측하지 못한 결과가 발생할 수 있다.ShedLock을(https://github.com/lukas-krecan/ShedLock) 사용하면 @Schedule을 사용하여 작성된 로직이 여러 서버에서 실행되더라도 동시에 최대 한 번만 실행되도록 제어할 수 있다. ShedLock의 동작 방식은 @Scheduled 작업이 하나의 서버에서 실행 중이면 다른.. 2025. 3. 18. Spring Boot를 사용하여 MongoDB Auto-Generated Field 사용하기 개요MongoDB를 사용하면 _id 필드에 대하여 ObjectId를 사용하도록 권장하고 있지만, 다른 DB에서 데이터를 마이그레이션 하거나 데이터 구조상 _id의 값을 Number 형태의 값을 사용해야 하는 경우는 별도의 처리가 필요하다. JPA는 @GeneratedValue를 사용하여 Auto Increment Key 방식을 지원해 주지만 MongoDB의 경우에는 어떻게 처리해야 하는지 알아보자. Getting started프로젝트 설정Spring Boot 프로젝트를 생성하면서 MongoDB 의존성을 추가해 준다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' ......} 상품 .. 2025. 3. 12. Spring boot devtools 개요Spring Boot에는 개발 경험을 조금 더 즐겁게 만들어 줄 수 있는 spring-boot-devtools 모듈을 제공한다. Devtools는 모든 개발 프로젝트에 추가할 수 있으며, 개발 시점에 추가적인 기능을 제공한다. 사용방법Maven org.springframework.boot spring-boot-devtools true Gradledependencies { developmentOnly("org.springframework.boot:spring-boot-devtools")} 주의사항spring-boot-devtools는 다중 모듈 프로젝트에서 클래스 로드 등 문제가 발생할 수 있다. spring-boot-devtools는 패키징 된 애플리케이션을 실행할 때는 자동으로 비활성화한다.. 2025. 2. 7. Spring Boot + Testcontainers 테스트 빠르게 실행하기 개요Spring Boot 3.1.0에서는 로컬 개발, 테스트를 간소화하기 위해 Docker container를 사용한 테스트인 Testcontainers에(https://docs.spring.io/spring-boot/reference/testing/testcontainers.html) 대한 지원이 추가되었다. Testcontainers는 Mock객체를 활용한 테스트를 작성하는 대신 실제 종속성을 사용하여 테스트를 작성하는데 도움이 되지만 실제 Docker container를 사용하는 테스트를 실행하므로 Mock을 사용한 테스트보다는 테스트 시간이 증가할 수 있다. 아래 내용 등을 통해 Testcontainers를 사용하면서 테스트 실행 시간을 줄이는 방법과 장단점에 대하여 알아본다. Pre-requis.. 2025. 1. 16. Spring gRPC 개요아직 experimental 한 프로젝트지만 Spring Initializr에서 선택 가능한 Spring gRPC를 사용하여 빠르게 gRPC 서비스를 생성할 수 있다.'org.springframework.grpc:spring-grpc-spring-boot-starter'를 사용하여 빠르게 gRPC 서비스를 생성해 본다. Getting startedProject 생성Spring Initializr를 사용하여 Spring gRPC를 선택하고 프로젝트를 생성한다.Spring gRPC는 Spring Boot 3.3.x 이상만 지원한다.(https://docs.spring.io/spring-grpc/reference/getting-started.html) build.gradle생성된 build.gradle을 .. 2025. 1. 11. [Spring] Redisson으로 분산락 구현하기(Distrubuted Lock) 개요분산락은(Distrubuted Lock) 서로 다른 프로레스가 공유 리소스를 상화 배타적인 방식으로 작동해야 하는 분산 환경에서 매우 유용한 방식이다.Redis를 사용하면 쉽게 분산락을(Distrubuted Lock) 구현할 수 있다. Redis의 데이터 처리는 Single Thread로 처리되며 모든 요청이 순차적으로 처리되기 때문에 DB를 사용한 분산락 보다 쉽게 구현이 가능한다. Redis ClientLettuceSpring에 spring-boot-starter-data-redis를 사용하면 lettuce-core 라이브러리가 기본적으로 redis client로 사용된다. lettuce는 redis lock 관련 기능은 별도로 제공하지 않고, 일반적으로 Spin lock 형태로 별도로 구현한다... 2024. 11. 21. 이전 1 2 3 4 5 6 ··· 8 다음 728x90