- 대규모 트래픽 처리 E-Commerce 숙박 예약 서비스
- 사용자가 다양한 숙소를 검색하고 예약하며 결제를 완료할 수 있도록 지원하는 플랫폼
- MSA(마이크로서비스 아키텍처)를 통해 각 기능을 독립적으로 관리하며 확장성, 유연성, 그리고 장애 복구 능력을 높임
-
대규모 트래픽 대응
- MSA 아키텍처 도입으로 각 기능 독립 관리, 확장성 및 장애 복구 능력 강화
- Redis와 Kafka를 활용하여 대규모 트래픽에 안정적으로 대응
- 주요 API 처리량 200.0/sec 이상 달성
- 동시성 문제 해결로 안전한 서비스 제공
-
모니터링 시스템 구축
-
Prometheus, Grafana로 실시간 메트릭 모니터링으로 안정성 있는 프로젝트 구축
-
Loki로 알람 상황에 맞춰 설정 → 빠른 파악
-
-
데이터 일관성 및 트랜잭션 관리
- TransactionSynchronizationManager로 데이터 일관성 관리
- 중복 및 데이터 손실을 방지하는 Kafka Batch Listener 구현
-
운영 및 배포 효율화
- Docker와 Github Actions를 이용한 CI/CD 파이프라인 구축으로 배포 자동화
이름 | 포지션 | 담당 | Github 링크 |
---|---|---|---|
김성훈 | 리더 |
▶ Coupon 도메인 개발 ▶ Gateway 통합 swagger 설정 완료 ▶ 모니터링(Promethues, Grafana, Loki)설정, Kafka, Redis ▶Docker-compose 파일 설정 |
https://github.com/kimsung3113 |
강찬욱 | 팀원 |
▶ Auth/User 도메인 개발 ▶ Gateway 개발 ▶ 깃 서브모듈 구현 ▶ 인프라 및 CI/CD 구축 |
https://github.com/chanwookK |
김지수 | 팀원 |
▶ Payment 도메인 개발 ▶ 포트원 API 연동을 통해 실제 결제 환경 제공 ▶ Point 도메인 개발 |
https://github.com/jelliclesu |
문시원 | 팀원 |
▶ Lodge 도메인 개발 ▶ S3 이미지 업로드 구현 ▶ 협업을 위한 컨벤션 설정 |
https://github.com/muncool39 |
조우석 | 팀원 |
▶ Reservation 도메인 개발 ▶ Review 도메인 개발 ▶ S3 이미지 업로드 구현 |
https://github.com/wooseok50 |
예약-결제 Flow
🏠 숙소 예약 서비스:
- 숙소 정보 검색 및 숙박 날짜 예약
- 예약 시 쿠폰 및 포인트 적용
💰 결제 서비스:
-
포트원 API 연동으로 결제 처리
-
결제 성공, 취소 상태 관리
💵 포인트 서비스:
-
포인트 적립, 사용 및 자동 만료 처리
-
Redis Cache 로 포인트 사용/적립/만료 내역 관리
🎫 쿠폰 서비스: Redis 및 Kafka를 통한 비동기 쿠폰 발급, 동시성 처리
- 대용량 트래픽을 수용하기 위한 비동기 쿠폰 발급
- Redis의 Lua Script로 동시성 제어 및 쿠폰 발급 상태 관리
- Kafka 를 활용한 실시간 이벤트 & 병렬 처리 (시간 및 수량 제한)
🖥️ 언어 및 프레임워크
- Java 17: 최신 기능과 안정성을 제공하는 언어.
- Spring Boot 3.3.7: 빠르고 유연한 애플리케이션 개발.
- Spring Cloud Gateway: API 게이트웨이 및 로드 밸런싱.
- Spring Cloud Netflix Eureka: 서비스 디스커버리 및 로드 밸런싱.
- Spring Cloud OpenFeign: 마이크로서비스 간 통신을 위한 HTTP 클라이언트.
- JPQL & QueryDSL: 복잡한 데이터 조회와 효율적인 SQL 작성.
- Mapstruct: DTO 변환 자동화.
📩 메시징
- Apache Kafka: 고성능, 실시간 스트리밍 데이터 플랫폼.
🛠 툴 및 소스 관리
- Git & Github: 소스 버전 관리.
- Postman: API 테스트 및 디버깅.
- IntelliJ IDEA: 강력한 개발 환경.
- Slack: 팀 협업 및 커뮤니케이션.
- Gradle: 프로젝트 빌드 및 의존성 관리.
📊 로그 관리 및 모니터링
- Prometheus: 모니터링 및 경보 시스템.
- Grafana: 데이터 시각화 및 대시보드.
- Zipkin: 분산 트레이싱.
- Loki: 로그 관리.
- Actuator: 애플리케이션 상태 모니터링.
🔐 인증 및 보안
- JWT: 안전하고 가벼운 인증 토큰.
- Argon2: 강력한 비밀번호 해시 알고리즘.
🌍 외부 API
- PortOne API: 결제 처리 및 통합.
🗄 ORM
- Spring Data JPA: 객체-관계 매핑 및 데이터 액세스.
💾 데이터베이스
- PostgreSQL: 고성능 오픈소스 RDBMS.
⚡ 성능 최적화 및 캐싱
- Redis & Redisson: 고속 데이터 캐싱 및 분산 잠금.
- LuaScript: Redis 스크립팅 확장.
☁️ 인프라 및 배포
- AWS EC2, RDS, S3, ECS, ECR, Elastic Cache: 클라우드 인프라 및 관리.
- Docker & Docker Compose: 컨테이너 관리 및 오케스트레이션.
- Github Actions (CI/CD): 지속적 통합 및 배포.
✅ 테스트
- Jacoco: 코드 커버리지 분석.
- SonarQube: 코드 품질 관리.
- JUnit5 & Mockito: 단위 테스트 및 목(Mock) 테스트.
📈 성능 테스트
- Apache JMeter: 부하 및 성능 테스트.
📚 문서화
- Notion: 프로젝트 관리 및 문서화.
- Swagger: API 문서화 및 테스트.
💡 ELK Stack Vs Prometheus + Grafana + Loki
🐢 쿠폰 발급 동시 요청으로 인한 Consumer Lag 문제, Jmeter 부하테스트
🐯 쿠폰 발급 동시성 문제 해결 및 기술 선택, Redis ‐ 분산락 vs LuaScript