-
Notifications
You must be signed in to change notification settings - Fork 1
Used Technology
joyfulviper edited this page May 25, 2023
·
3 revisions

- Java 버전 17 사용
- Spring boot 버전 3.0.0 버전 사용
- 그 외 특이사항 없음
- Develop branch에 Push 발생시 자동 Test / Build / Deploy진행
- 실제 db를 사용하는 환경과 같은 환경의 Container를 띄워 테스트 진행
- Docker를 이용해 ElasticSearch 클러스터 생성 및 Vault 서버 실행
- 단일 클러스터로 적용
- 조회시 ElasticSearchRepository를 이용해 조회
- Kibana를 이용해 통계 자료 시각화(가장 많이 팔린 상품, 매출 통계, 가장 구매를 많이 한 사용자)
- Nginx의 리버스 프록시 기능을 이용해 무중단 배포
- 기존의 Nginx서버가 8080포트를 가리키고 있는 상황인 경우 새로운 버전의 프로젝트를 8081 포트에 배포한 후 Nginx가 8081포트를 가리키도록 설정
- WebClient를 이용해 비동기적으로 네트워크 요청
- 리액티브 스트림을 이용해 유연한 코드 작성 및 오류처리
- 구독한 사용자에 한하여 매달 28일 00시 구독 결제 Spring batch를 이용해 일괄처리
- 구독 취소 사용자 또한 매달 28일 00시 구독 취소 처리 진행
- Step을 구독 취소 -> 구독 결제의 순서로 구현했기 때문에 구독 취소한 사용자가 다시 구독처리 될 상황은 없음
- 배치과정을 비동기로 처리해서 성능향상
- 비동기 처리시 데이터를 읽어올 때 멀티 스레드에 안전한 JpaItemReader를 이용해 동시성 문제 제어
- MySQL과 Elasticsearch 저장소의 데이터 일관성을 위해 두 저장소 사이 Kafka로 중계
- 메시지 큐 오류 시 다른 토픽에 전송하도록 예외 처리
- AOP를 이용해 RDBMS 저장 메소드 종료시 Kafka에 전송하도록 구현