본문 바로가기

Cloud solutions

#005) 스냅챗 cloud solution (메신저 솔루션 with AWS)

snap architecture on AWS by Snapchat 

 


Snapchat

스냅챗은 유저들과 즉각적인 메시지와 사진 전송과 스토리 기능이있는 미국의 멀티미디어 메신저 앱이다.

전 세계 많은 사람들이 친한 친구들과 빠른 의사소통을 할 수 있도록 하는것이 주 목적

이 때 보내는 하나의 메세지가 Snap 이라고 표현 된다.

 

스냅을 보내는 일련의 과정에서 각각의 요소들을 오케스트레이션 서비스를 중심으로 동작

전 세계 3억명의 active 사용자들이 보내는 수많은 스냅의 양과 트래픽을 관리하기위해선 효율적인 플로우가 필요



사용자들이 보내는 스냅을 EKS 미디어 클러스터로 전달하고 Cloudfront 로 보내서 S3에 보관한다. 클라우드 프론트의 엣지 기능으로 가까이 있는 사용자에게 필요할때 빨리 가져올 수 있도록 가능하게 한다.

Cloudfront- 정적 및 동적 컨텐츠를 사용자에게 더 빨리 배포하도록 도와주는 서비스

S3 - 확장성,가용성,보안과 성능을 보장하는 정적 파일 스토리지 서비스

 

MCS 라는 중심 컨테이너 EKS 클러스터로 FriendGraph 클러스터에서 보내는 사람이 받는사람간의 전송 관계를 확인해주고 허락해주는 일련의 과정이 일어난다.

EKS- AWS 에서 관리하는 쿠버네티스 서비스

스냅 전송, 보관 방식 그리고 TTL 같은 서비스를 구현하기위해 자체 SnapDB 를 사용하고 DynamoDB 로 메타데이터인 데이터베이스를 보내 비용절감을 이룰 수 있다.

DynamoDB- 완전 관리형 서버리스로 NoSQL 형식의 데이터 베이스

스냅을 받는과정에선 지연속도를 최소화 하기 위해서 MCS 코어서비스에서 서버 ID 로 Elasticache에 요청하고 기존에 연결된 서버가 있다면 즉각적으로 메세지를 보낼 수 있도록 한다.
Elasticache- 어플리케이션 성능을 높이기 위한 AWS 의 캐싱 서비스





오케스트레이션 서비스의 900 여개의 EKS 클러스터와 지속적인 Autoscaling 과 모니터링으로 
높은 스케일링 서비스와 비용절감
 

refrence - https://www.youtube.com/watch?v=Cgv0kfp_6xQ&t=3s