
- 실시간 스트리밍 기능을 제공하는 라이브 커머스 서비스
- 동시성 제어를 통한 안정적인 결제 서비스

👨🏻🔧 방송 추가 기능 - 이미지 업로드, 상품 정보도 포함
👨🏻🔧 회원가입을 통해 발급 받은 스트림키로만 방송 시작 가능
🕰️ 짧은 딜레이를 통해 실시간 방송 시청 가능
💼 동시성 제어를 통한 실시간 재고 업데이트 기능으로 정확한 재고 정보
💰 효율적인 결제 시스템
락이 적용되지만, 재고차감이 정상적으로 되지 않음
방송 시청 중 멈춤
HTTPS로 연결된 서비스 서버에 미디어 서버가 HTTP 요청으로 들어와서 접근이 제한됨
동시성 제어 : Redis Distributed Lock/Redis Fair Lock/Redis Sorted Set
• Redis Distributed Lock
- 직관적으로 코드를 이해하고 구현하기 용이함
- AOP 기반의 코드 레퍼런스가 있어 사용하기 용이함
• Fair Lock
- 순서를 보장한다는 장점을 가졌지만, 대규모 요청에는 추가 오버헤드로 인해서 성능이 떨어짐
• Sorted Set
- 대기열이 길어질수록 대기 시간이 길어지므로 성능 저하 가능성 有, 우선 순위가 잘못 설정되면 요청이 무시됨
→ 레퍼런스가 다양하고, 기본적으로 분산락 기능을 제공해주는 Redisson 분산락 선택
CI/CD 무중단 배포 : CodeDeploy+S3+GithubAction / Docker-compose+GithubAction
• Github Actions + CodeDeploy + S3 + EC2
- 블루/그린 배포는 하나의 버전만 프로덕션 되기 때문에 버전 관리 문제를 방지할 수 있음
- 운영 환경에 영향을 주지 않고 실제 서비스 환경으로 새 버전 테스트가 가능
- 새 버전으로 전환 후에 문제가 생겼을 시에 구 버전으로 되돌리기 위한 롤백이 용이함
- 오토스케일링과 결합하여 무중단 배포 가능
• Github Actions + Docker-compose + EC2
- 도커를 이용해서 배포 시 빠른 배포와 환경 일관성을 유지하며 배포할 수 있음
- 복잡한 설정과 관리를 필요로해, 복잡한 애플리케이션의 경우 컨테이너 간의 네트워킹 및 데이터 공유 문제가 발생할 수도 있음
테스트 툴 : jmeter / k6
• Jmeter
- 대용량 트래픽을 시뮬레이션 할 수 있음
- 플러그인 설치 시 RTMP와 같은 방송 송출 및 시청 테스트가 가능함
- GUI가 존재해 사용이 편리함
- 100% 자바로 개발된 오픈소스 성능 테스트 도구
- 다양한 통신 프로토콜을 지원함
- 분산 부하 테스트 기능을 기본적으로 제공해줌
• K6 - 익숙치 않은 파이썬과 CLI을 사용함
- Python을 이용하여 스크립트를 작성함
- 로컬 혹은 원격지의 스크립트를 로드하여 테스트 할 수 있음
- GUI 가 없고, CLI툴을 사용하여 성능 테스트를 수행
대용량 트래픽 처리
• Elastic Load Balancer
- 트래픽을 분산하고 고가용성을 제공
- 도메인 관리 및 DNS 서비스로서, 로드 밸런서의 도메인을 관리
- 외부 도메인과 연결, ssl 설정이 용이함
• Auto Scaling Group
- 트래픽 증가에 따라 자동으로 리소스를 조절해줘서 편리함
→ 오토스케일링을 통해서 인스턴스를 추가 생성 후 + 요청을 분산
→ 다른 포트로 들어오는 요청 8080 포트로 실행