채팅 시스템 설계
인프사 요구 조건
- 평균적으로 약 1000명의 유저가 해당 서비스를 사용
- 최대 동시 접속 사용자 수 500명 예상
- 초당 약 50건의 메시지 전송 처리 필요
- 최대 6개월간 메시지 내역 보관 필요
- 메시지 전송 지연 시간은 2초 이내
더 생각해보기 - 심화 조건
- 그룹 채팅 지원: 최대 100명까지 참여 가능한 그룹 채팅방 제공
- 첨부 파일: 채팅에서 최대 10MB 크기의 파일 첨부 기능 지원
- 오프라인 메시지 처리: 사용자가 오프라인 상태일 때 메시지 저장 및 재접속 시 동기화
- 멀티 디바이스 지원: 동일 계정으로 최대 3개 기기 동시 접속 지원 (동일 계정 접속 수 제한)
주제: 아티스트가 되어보세요 페이크 버블 (미정)
- 방장: 아티스트 라벨을 달고 연예인처럼 화려한 디자인 하에서 채팅을 남김
- 방을 만드려면 비밀번호를 입력 → 비밀번호로만 방장 로그인 가능 (필수)
- 웬투밋처럼 하면 로그인 구현 간단!!
- 회원 정보 만들 필요 X, 각 채팅방만 고유 O
- 프로필 사진 업로드 용으로 S3 사용
- 익명: 익명으로 채팅을 남김 (로그인 필요 x)
- 방장과 익명유저 각자의 시점에서 채팅 UI는 서로 반대로 렌더링 (본인이 쓰는 쪽이 우측)
- 각 채팅방의 URL은 고유함 (링크가 UUID)


1주차에는 주제를 정하고 필요한 기술과 아키텍처 초안을 정하는 시간을 가졌다.
대규모 실시간 채팅 시스템이다보니 클라이언트와 서버 간에 양방향 실시간 통신이 가능한 Websocket 프로토콜을 사용하기로 했다.
Websocket의 특징
- 웹 소켓은 본질적으로 양방향이다. (Web-sockets are bi-directional in nature)
- 웹 소켓을 사용하여 개발된 연결은 참가자(클라이언트 또는 서버) 중 하나가 연결을 종료하기 전까지지속된다.
- 웹 소켓은 HTTP를 사용하여 연결을 시작한다.

Websocket을 이용한 채팅시스템 설계
Websocket API - Lambda - DynamoDB

AWS CloudFormation 으로 인프라 생성
*AWS Cloudformation
인프라를 코드로 관리하는 서비스
서버, 데이터베이스, 네트워크 구성 등 인프라를 일일이 수동으로 생성하지 않고, YAML/JSON 파일에 인프라 구성을 코드로 작성해서 자동으로 배포/관리할 수 있게 해줌.


-> Lambda, DynamoDB 생성
ws-chat-app.yaml
0.02MB
1. 채팅 메세지 저장
AWS DynamoDB
2. 유저 데이터, 채팅방 데이터 저장
AWS RDS (MySQL)
3. 메세지 큐
AWS ElasticCache(Redis Pub/Sub) vs AWS SQS
특성Amazon SQSRedis
특성 | AWS SQS | Redis |
주요 사용 사례 | 백오피스 작업 큐, 이메일 전송 대기열, 비동기 데이터 처리 | 캐싱, 세션 관리, 실시간 데이터 업데이트, 분산 락 |
주요 특징 | - 완전 관리형- 표준 큐와 FIFO 큐 지원- 자동 확장 가능 | - 메모리 기반 처리 속도 - 단순한 데이터 구조 지원 - Pub/Sub 모델 지원 |
기반 저장소 | AWS 인프라 기반 (클라우드 저장소 활용) | 메모리 기반 저장소 (휘발성 데이터 처리에 유리) |
메시지 순서 보장 | 표준 큐와 FIFO 큐 선택 가능 | 순서 보장 기본 제공하지 않음, 구현 필요 |
확장성 | 자동 확장 가능 (AWS 인프라 활용) | 노드 추가를 통한 클러스터 확장 가능 |
프로토콜 | AWS API (HTTP/HTTPS 방식) | Redis 자체 프로토콜 (TCP 기반) |
내결함성 | 다중 가용 영역으로 데이터 손실 방지 | 기본적으로 데이터 복제 및 클러스터링 가능 |
성능 특성 | 비용 효율적이고 확장 가능한 처리 용량 | 고속 데이터 접근 및 처리 속도, 지연시간 짧음 |
운영 및 관리 | 완전 관리형 서비스로 설정 및 관리 간소화 | 단순한 설정과 클러스터링 구성 가능 |
장점 | - 완전 관리형으로 인프라 관리 필요 없음- 유연한 스케일링 | - 빠른 응답 속도 - 다양한 데이터 구조 지원 - Pub/Sub 기능 강력 |
단점 | - FIFO 큐 사용 시 처리 비용 증가- API 호출 수에 따른 요금 발생 | - 데이터가 휘발성으로 사라질 수 있음 - 메시지 순서 보장 어려움 |
4. API 서버
AWS EC2, AWS VPC
5. 트래픽 제어
ALB Loadbalancer
'공부 > Cloud Computing' 카테고리의 다른 글
AWS Storage & CloudFront (0) | 2025.03.31 |
---|---|
AWS 네트워크 구성 - VPC, Route53 (0) | 2025.03.25 |
AWS Solution Architect dump 정리 (1) | 2025.01.23 |