일지
2023.05.30
scarlet0star
2023. 5. 30. 21:04
AWS에 대한 강의를 듣다가 만것을 기억했다. 모르고 봤을 때보다 이렇게 훨씬 더 알고 있는 상태에서 보고 있으니 강의가 매끄럽게 잘 이해가 되었다. 특히 7회차부터는 지난 프로젝트에서 대체할 수 있는 부분이 보였기에 더 그랬던 것 같다. 지난 프로젝트에서 대체해서 사용할 수 있는 서비스는 다음과 같다. (SQS에 대해서는 언급이 없었지만 추가적으로 찾았다)
- 스토리지 (S3): Amazon S3 (Simple Storage Service)는 인터넷용 스토리지 서비스. 파일을 저장하거나 서버에서 사용자에게 전달할 정적 파일(이미지, 동영상 등)을 저장하는 데 주로 사용.
- 메시지 큐 (SQS): Amazon Simple Queue Service (SQS)는 분산 애플리케이션 간에 메시지를 교환할 수 있게 하는 완전 관리형 메시지 대기열 서비스. 메시지를 SQS에 넣으면, 다른 애플리케이션이 나중에 그 메시지를 받아 처리할 수 있다.
- DB (RDS): Amazon Relational Database Service(RDS). 관리형 데이터베이스 서비스로서, 데이터베이스를 설치하고 운영하는 데 필요한 작업을 대신 처리한다
지난 프로젝트에서는 Redis,Mysql을 EC2에서 docker-compose를 통해 직접 컨테이너를 실행하였고, 결과 이미지들을 인스턴스에 바로 저장했지만, 만약 서비스가 더 대형화된다면 EC2 인스턴스는 용량적으로도, 컴퓨팅 능력적에서도 버틸 수가 없을 것이다. 현재야 뭐 발표용으로 만든 것이고, 동접자는 한자리고, 이용해본 사람도 그렇게 많지 않지만 조금만 테스트를 해도 EC2 인스턴스에 과부하가 오는 걸 오는걸 생각해보면 위 서비스들을 사용해 분산하는 것은 필수적일 것이다.
S3에 업로드 되는 미디어 파일들을 저장하고, SQS를 통해 Celery가 worker에 전송하는 메세지를 담당하고, 마지막으로 생성되는 user 혹은 diary 인스턴스들은 RDS에 저장케 하는 것이다. 여기까지는 똑같았는데, 더 나아간다면 CloudFront를 이용하여 이 도메인들을 내 DNS로 감추어 준다면 완전한 서비스가 되는 것이다. 물론 BeanStalk를 이용하면 한번에 할 순 있긴 하지만, 개별적으로 뜯어보면 그렇다는 말이다.