Live Shopping Mall 시나리오 및 기술 구현
1. 사용자 로그인 및 등록
1.1 계정 생성 및 로그인
- 사용자는 웹 애플리케이션에 개인 계정을 생성할 수 있습니다.
- 계정 생성은 기존 계정 또는 소셜 미디어 계정을 활용한 로그인으로 이루어집니다.
1.2 계정 관리
- 사용자는 계정 관리 페이지를 통해 개인 정보를 확인 및 수정할 수 있습니다.
- 비밀번호 변경, 프로필 사진 업로드 등의 기능을 제공하여 사용자 편의성을 증진시킵니다.
2. 제품 업로드 및 관리
2.1 상품 정보 업로드
- 판매자는 웹 애플리케이션을 통해 간편하게 상품 정보를 업로드할 수 있습니다.
- 제품명, 가격, 수량, 상세 설명, 이미지 등의 정보를 입력하여 제품을 등록합니다.
2.2 라이브 스트리밍 설정
- 판매자는 상품 업로드 시 라이브 스트리밍을 설정할 수 있습니다.
- WebRTC를 활용하여 라이브로 제품을 소개하고, 상품의 특징을 실시간으로 고객에게 전달합니다.
3. 라이브 스트리밍 및 실시간 채팅
3.1 라이브 스트리밍 시청
- 사용자는 판매자의 라이브 스트리밍을 웹 앱을 통해 시청할 수 있습니다.
- 실시간으로 진행되는 라이브 소개 중에도 다양한 상품 정보를 확인할 수 있습니다.
3.2 실시간 채팅
- 라이브 스트리밍 중 사용자는 채팅 기능을 통해 질문이나 의견을 소통할 수 있습니다.
- Firebase를 활용하여 실시간으로 채팅 메시지를 전달하고 저장합니다.
4. 상품 검색 및 구매
4.1 편리한 검색 기능
- 사용자는 편리한 검색 기능을 활용하여 빠르게 원하는 상품을 찾을 수 있습니다.
- 상품명, 가격, 카테고리 등을 활용한 고급 검색 기능을 제공합니다.
4.2 신속한 구매 프로세스
- 사용자는 라이브 스트리밍 중에도 상품을 장바구니에 담거나 즉시 구매할 수 있습니다.
- IAMport를 통해 안전하고 신속한 결제 프로세스를 제공합니다.
5. 대용량 트래픽 관리
5.1 클라우드 기반 서버 아키텍처
- AWS EC2 인스턴스를 사용하여 대용량 트래픽을 관리합니다.
- Auto Scaling 그룹을 활용하여 트래픽 변동에 따라 자동으로 서버를 확장 또는 축소합니다.
5.2 전 세계 서비스 지원
- Amazon CloudFront를 통해 전 세계 사용자에게 빠르고 안정적인 콘텐츠 전송을 제공합니다.
- 지역별로 캐시된 콘텐츠를 효과적으로 제공하여 응답 속도를 최적화합니다.
6. CI/CD 구성
6.1 지속적 통합 (CI)
- GitHub Actions를 활용하여 소스 코드 변경 시 자동으로 CI 파이프라인이 실행됩니다.
- 단위 테스트, 빌드 및 코드 품질 검사를 포함한 CI 작업을 수행합니다.
6.2 지속적 배포 (CD)
- CodeDeploy를 사용하여 신규 코드가 EC2 인스턴스에 안전하게 배포되도록 합니다.
- 배포 전에는 스테이징 환경에서 테스트를 진행하여 안정성을 확인합니다.
7. 보안 강화
7.1 SSL/TLS 적용
- 웹 애플리케이션과 사용자 간의 통신을 안전하게 보호하기 위해 SSL/TLS를 적용합니다.
- 사용자의 개인 정보 및 결제 데이터를 암호화하여 보안성을 강화합니다.
7.2 데이터베이스 보안
- MySQL 데이터베이스에 접근하는 권한을 최소한으로 제한하고, 안전한 접속을 보장하기 위해 SSL 연결을 활성화합니다.
- 민감한 사용자 데이터는 암호화하여 저장하고, 데이터베이스 보안 정책을 수립하여 운영합니다.
7.3 웹 애플리케이션 방화벽
- 웹 애플리케이션 방화벽을 도입하여 SQL Injection, XSS 등의 보안 취약점을 방어합니다.
- 부정한 접근 및 공격 시도에 대비하여 로깅 및 감지 시스템을 구축하여 보안 이벤트를 모니터링합니다.
8. 사용자 경험 향상
8.1 모바일 반응성
- 다양한 디바이스에서의 이용을 고려하여 웹 애플리케이션을 모바일에 최적화합니다.
- 모바일 반응형 디자인을 채택하여 사용자가 어떠한 기기에서도 편리하게 이용할 수 있도록 합니다.
8.2 푸시 알림
- 중요한 이벤트나 할인 정보 등을 사용자에게 실시간으로 알리기 위해 푸시 알림 기능을 도입합니다.
- 사용자의 동의를 받아 푸시 알림을 사용자 정의에 맞게 구성합니다.
8.3 사용자 행동 분석
- 사용자의 행동 패턴을 분석하여 개인 맞춤형 서비스를 제공합니다.
- Google Analytics 등을 활용하여 사용자 행동과 관련된 데이터를 수집하고 분석합니다.
이러한 추가 부분을 통해 보안성을 강화하고 사용자 경험을 높일 수 있습니다.
Traffic 병목 지점 예상 및 대응 시나리오
목표
프로젝트의 트래픽 최적화 및 성능 대응을 위한 전략을 수립하고, 예상되는 상황에 따른 대응책을 마련합니다.
1. 라이브 스트리밍 서버 부하 대응
1.1 WebRTC SFU 활용
- 목적: 라이브 스트리밍 서버의 부하 분산.
- 방법: WebRTC SFU를 도입하여 동시 접속자를 효과적으로 처리.
1.2 CDN 활용
- 목적: 지역별로 캐시된 라이브 스트리밍 콘텐츠 제공.
- 방법: CDN을 활용하여 사용자에게 안정적이고 빠른 서비스 제공.
2. 데이터베이스 부하 대응
2.1 데이터베이스 샤딩 적용
- 목적: 데이터베이스 부하 분산 및 성능 향상.
- 방법: 제품 정보 및 주문 데이터를 여러 서버에 분할하여 저장.
2.2 캐싱 전략 활용
- 목적: 빈번한 조회가 필요한 데이터의 캐싱을 통한 응답 속도 개선.
- 방법: 데이터 캐싱을 활용하여 데이터베이스 부하 최소화.
3. 실시간 채팅 서버 부하 대응
3.1 확장 가능한 아키텍처 설계
- 목적: 채팅 메시지 처리 서버의 확장성 향상.
- 방법: 확장 가능한 아키텍처로 채팅 서버 설계 및 동적으로 인스턴스 조절.
3.2 Firebase 확장성 있는 프로덕션 플랜 활용
- 목적: Firebase를 활용한 채팅 서버 부하 분산 및 안정적인 운영.
- 방법: Firebase의 확장성 있는 프로덕션 플랜을 적용하여 운영.
4. 예상 시나리오 및 대응 시간대 표
- 주말 오후 3시 - 5시: 대규모 라이브 스트리밍 접속
- 대응 방법: WebRTC SFU 동적 확장, CDN 적극 활용
- 월요일 오전 10시 - 11시: 프로모션 이벤트로 데이터베이스 부하 발생
- 대응 방법: 데이터베이스 샤딩, 캐싱 전략 적용
- 매일 저녁 8시 - 10시: 실시간 채팅 활발한 시간
- 대응 방법: 확장 가능한 채팅 서버 아키텍처 구성, Firebase 프로덕션 플랜 활용
5. 상황별 테스트 및 시뮬레이션
5.1 라이브 스트리밍 부하 테스트:
- 동시 접속자 1000명 이상의 라이브 스트리밍 시뮬레이션, SFU와 CDN의 대응 확인.
5.2 데이터베이스 부하 테스트:
- 대량의 제품 정보 및 주문 데이터 생성, 데이터베이스 샤딩 및 캐싱 전략의 대응 확인.
5.3 실시간 채팅 부하 테스트:
- 다수의 사용자가 동시에 실시간 채팅 시나리오 시뮬레이션, 채팅 서버의 확장성 및 Firebase 성능 확인.
6. 코드 및 설정 수정
6.1 라이브 스트리밍 서버 코드 수정:
- WebRTC SFU 및 CDN 설정을 코드에 적용, 동적으로 스트리밍 서버 확장 코드 작성.
6.2 데이터베이스 코드 수정:
- 데이터베이스 샤딩 및 캐싱 전략을 코드에 적용, 데이터베이스 부하 대응 코드 작성.
6.3 실시간 채팅 서버 코드 수정:
- 채팅 서버 확장성 및 Firebase 프로덕션 플랜 적용 코드 작성.
7. 주요 성능 지표 모니터링
7.1 라이브 스트리밍 서버 성능 모니터링:
- SFU의 사용률, 대역폭, 연결 수 등 모니터링하여 부하 상태 파악.
7.2 데이터베이스 성능 모니터링:
- 데이터베이스의 쿼리 응답 시간, 연결 수, 트랜잭션 수 등 모니터링하여 부하 상태 파악.
7.3 실시간 채팅 서버 성능 모니터링:
- 채팅 서버의 CPU 사용률, 메모리 사용률, 연결 수 등 모니터링하여 부하 상태 파악.
8. 운영 및 모니터링 자동화
8.1 모니터링 대시보드 구성:
- Grafana 또는 CloudWatch 등을 활용하여 주요 성능 지표를 실시간으로 모니터링하는 대시보드 구성.
8.2 자동화된 운영 스크립트 작성:
- 부하 상황에 따라 자동으로 스케일 업 또는 다양한 대응 조치를 취할 수 있는 운영 스크립트 작성.
9. 시나리오 별 예외 처리 및 대응
9.1 라이브 스트리밍 부하 대응:
- SFU 오류 시 적절한 에러 핸들링 및 자동 재시도 로직 구현.
9.2 데이터베이스 부하 대응:
- 데이터베이스 연결 오류 시 재연결 로직 구현, 임계치 초과 시 경고 및 로깅 수행.
9.3 실시간 채팅 부하 대응:
- 채팅 메시지 처리 오류 시 롤백 및 사용자에게 적절한 안내를 제공하는 예외 처리 구현.