Spring Scheduler를 사용할 때, 같은 작업을 하는 스케줄러가 다중 인스턴스 환경에서 중복 실행되는 문제가 있습니다.이 문제를 해결하기 위해 Quartz, ShedLock 등을 고려할 수 있습니다. 저는 그 중 ShedLock을 선택했는데, 그 이유는 해결하려는 문제가 클러스터 안의 서버 노드 중 스케줄링 작업을 선택하거나 예외 처리 등의 기능이 필요한 것이 아니라, 단순히 중복 작업을 방지하는 데 ShedLock이 충분하다고 판단했기 때문입니다단일 환경에서 중복 실행 문제 위에서 설명한 중복 실행 문제는 모두 다중 인스턴스 환경에서 발생할 수 있지만, 단일 환경에서도 중복 실행 문제가 발생할 수 있습니다.단일 환경에서 운영되는 서버라도 Blue/Green 무중단 배포 상황에서 두 개의 인스턴..
기존 배포 환경의 문제점 기존에는 빌드/배포 자동화를 위해서 Github Action에 Self-hosted Runner를 사용했습니다 하지만 Self-hosted Runner를 사용하면서 여러 불편한점이 있었습니다. 환경 변수 관리 문제 첫 번째로, 환경 변수의 관리가 어려웠으며, 어떤 값이 설정되었는지 알기 힘들었습니다. 단일 장애 지점(SPOF) 발생 두 번째로, 러너를 배포하기 위해 서버에 직접 설치해야 했는데, 이는 러너에 문제가 발생할 경우 단일 장애 지점(SPOF)으로 이어질 수 있습니다. 실제로 배포중에 메모리가 부족해서 서버가 다운되는 경우가 종종 있어서 가상 메모리를 추가했었습니다. 예상 치 못한 문제 추가적으로, 러너가 종료될 때 고아 프로세스들이 함께 종료되어서 서버가 다운되는 문제..
코틀린답게 JPA Entity 작성하기 @Entity public class Parents { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; ... } 자바에서는 일반적으로 GeneratedValue를 사용해 id를 설정하며, 별도로 id 값을 초기화하지 않습니다. @Entity data class Parents( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long?, ) { } 하지만 코틀린의 Null Safety 특성 때문에 id를 초기화하지 않고 null 상태로 둘려면 ?를 사용하여 null을 허용해야 합니다. 이는 코틀린의 Null Safety..
- Total
- Today
- Yesterday
- @ElementCollection
- WebFlux 의존성
- dto 위치
- HTTPInterface
- defer-datasource-initialization
- feignClient
- DispatcherServletInitializer
- @FormProperty
- HandlesTypes
- Spring Boot 3
- FormProperty
- setDateFormat
- 구글 소셜로그인
- User Scenario
- CreationTimestamp
- JPA SQL Injection
- Attribute Converter
- 유저 스토리
- BasicBinder
- dto 검증
- entity 검증
- 레이어드 아키텍처
- 유저 시나리오
- org.springframework:spring-webflux
- ServletContainerInitializer
- ValidateException
- java 17
- CreatedDate
- 구글 OpenID
- @Converter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |