진짜 개발자
본문 바로가기

AWS/Elasticity & Management

AWS - SNS(Facebook 등) 서비스 아키텍쳐 구축방법

728x90

시나리오

SNS (Simple Notification Service가 아닌 Social Network Service) 서비스를 위한 아키텍쳐 라고하자



문제점

- US Region에 있는 사용자가 사진을 찍어 업로드를 한 경우 Asia Region에 있는 사용자는 US Region에 있는

   DB의 데이터가 Asia Region으로 업데이트 되기 전까지는 사진을 보지 못하는 상황이 발생할 수 있다 


=> 이때 S3를 이용하여 사진을 업로드하면 전역에서 S3의 URL을 통해 접근하여 사진을 볼 수 있지 않을까 

하지만 앱서버에서 DB를 통해서만 해당 사진의 URL을 알아낼 수 있다는 것을 감안하면 S3는 완벽한 

해결책은 아니다.

 

해결방법

1. Cloud FrontLambda와 S3 이용

1) Cloud Front에서 패킷을 전달받았을 때 Lambda가 호출되도록한다

2) Lambda가 호출되었을 때 Json data를 받아 image이면 image가 저장된 Database쪽으로 패킷을 

   라우팅시키고 나머지는 다른 Database로 라우팅을 시킨다

3) image 정보가 저장된 Database에서 이미지의 Url을 얻는다

4) 얻어온 Url을 통해 S3에 저장된 이미지에 접근한다.


2. Dynamo DBGlobal TableS3 이용

1) Dynamo Db의 Global Table에 접근하여 image에 대한 Url을 얻는다

2) Url을 통해 S3에 접근한다