-
Chat Server 분석Back-End/ETC 2021. 9. 7. 21:56
채팅서버 구현 방향성을 살펴 보기위해 몇가지 방안 비교 (지극히 주관적)
- 채팅은 양방향 통신을 위해 소켓(Socket) 통신을 해야한다. 큐 시스템은 추후에 고려
1. AWS Serverless ( API GW(socket) + Lambda + DynamoDB)
- 장점
- 서버리스 구조로 구축해 두면 운영과정에서 좀 더 유연함 및 편리함
- 단점
- 사용 환경에 따라 WebSokcet 비용이 많이 나갈 수 있다.
- Read/Write에 비례하여 DynamoDB 비용 상승확률이 높아짐
- API GW (WebSocket API)
- 소개 - https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/apigateway-websocket-api-overview.html
- 비용예시
-
채팅 애플리케이션: 1,000명의 사용자가 하루 기준 12시간 동안 채팅 애플리케이션에 연결됩니다. 각 사용자는 하루 기준 100개의 메시지를 보내고, 500개의 메시지를 받습니다. 각 메시지 크기는 3KB입니다.
아래 예제는 미국 동부(버지니아 북부)의 요금을 보여 줍니다.메시징 요금
매달 총 메시지 수 = (100(보낸 메시지) + 500(받은 메시지)) * 1000(사용자) * 30(일) = 1800만 개
총 메시징 요금 = 18,000,000/1,000,000 * 1.00 USD(백만 개 기준) = 18 USD
연결 요금
매달 총 연결 시간(분) = 1000(사용자) * 12(시간) * 60(분) * 30(일) = 21,600,000
총 연결 요금 = 21,600,000/1,000,000 * 0.25 USD(백만 개당 요금) = 5.40 USD
총 요금 = 18 USD(메시징 요금) + 5.40 USD(연결 요금) = 23.40 USD
https://aws.amazon.com/ko/api-gateway/pricing/
- Lambda * 3 ( onConnect , sendMessage, onDisconnect )
- 비용
-
함수에 512MB 메모리를 할당하고 한 달에 3백만 회 실행하며 매번 1초간 실행되었다면 요금은 다음과 같이 계산됩니다. 월별 컴퓨팅 요금
월별 컴퓨팅 요금은 GB-초당 0.00001667 USD이고 프리 티어에서 400,000GB-초를 제공합니다.
총 컴퓨팅(초) = 3M * (1초) = 3,000,000초
총 컴퓨팅(GB-초) = 3,000,000 * 512MB/1024 = 1,500,000GB-초
총 컴퓨팅 – 프리 티어 컴퓨팅 = 월별 청구 대상 컴퓨팅 GB-초
1,500,000GB-초 – 400,000 프리 티어 GB-초 = 1,100,000GB-초
월별 컴퓨팅 요금 = 1,100,000 * 0.00001667 USD = 18.34 USD
월별 요청 요금
월별 요청 요금은 1백만 회 요청당 0.20 USD이고 프리 티어에서 월별 1백만 회 요청을 제공합니다.
총 요청 수 – 프리 티어 요청 수 = 월별 청구 대상 요청 수
3백만 회 요청 – 1백만 회 프리 티어 요청 = 2백만 회 월별 청구 대상 요청
월별 요청 요금 = 2백만 회* 0.2 USD/월 = 0.40 USD
총 월별 요금
총 요금 = 컴퓨팅 요금 + 요청 요금 = 18.34 USD + 0.40 USD = 월별 18.74 USD
https://aws.amazon.com/ko/lambda/pricing/
- DynamoDB
- Ref
- https://github.com/aws-samples/simple-websockets-chat-app
- https://aws.amazon.com/ko/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/
- https://www.youtube.com/watch?v=3SCdzzD0PdQ
2. Serverless + Redis 버전 ( 1번에서 dynamoDB -> Redis ( Amazon ElastiCache))
- 장점
- 사용량이 많을 경우 db사용시 보다 비용 효과적일 수 있다.
- R/W 성능 및 네트워크 성능에 따라 다르다
- 사용량이 많을 경우 db사용시 보다 비용 효과적일 수 있다.
- 단점
- Redis 유지비용 ( 클러스터를 위해 최소 2대이상)
- 사용량이 적을경우 낭비가 심할 수 있다.
- 24시간 켜져 있어야 한다.
- 인프라 관리를 위해 추가 노력이 필요 ( 관련 vpc 구축 및 장애대책 플랜 등)
- Redis 유지비용 ( 클러스터를 위해 최소 2대이상)
3. Node EC2 Server + Redis
- 장점
- 최저 인스턴스 사용이라면 비용이 적을 수 있다.
- 단점
- 서비스가 커질수록 유지 및 관리가 힘들다. (비용 및 안정성)
'Back-End > ETC' 카테고리의 다른 글
Jenkins + Unity (0) 2022.01.09 Jenkins + GitHub (0) 2022.01.08 Github Action + Unity (0) 2021.11.21 리더보드 (Ranking) 서버 (0) 2021.08.26 Serverless.yml simple example (0) 2021.08.21 - 장점