달록 팀에서는
프론트엔드 배포를 AWS EC2 인스턴스를 생성하고 Nginx
를 설치해서 진행했습니다.
다양한 클라우딩 서비스들이 있지만 백엔드 크루들과의 통일성을 위해서 EC2를 개설하기로 했습니다.
Github PR -> Merge -> Github Actions -> webhook -> jenkins -> nginx
로 이어지는 CI/CD, 배포 과정이 깔끔하게 잘 정리되었기 때문이죠!
하지만 개인적으로는 S3와 CloudFront를 이용하는 것이 설정도 편하고 설치할 것도 없기 때문에 더 좋을 것 같다는 생각이 들긴했습니다. 팀적인 선택은 EC2였지만 저는 S3가 궁금했어요.
Simple Storage Service, 웹 호스팅 서비스가 아니라 "저장소" 서비스입니다.
따라서
1. 단순히 파일을 저장하거나
2. 다른 AWS 서비스의 로그를 저장하는 등의 기능을 담당합니다.
3. 하지만 웹 호스팅도 가능합니다.
무한
이예요.다운로드
가 가능해요.권한
이 있는 사람만 접근이 가능해요. (보안 Good🔒)✋ 잠깐, REST와 SOAP이란?
CDN의 일종으로 HTML,CSS,JS,이미지 파일 등의 정적/동적 웹 컨텐츠를 사용자에게 더 빠르게 배포할 수 있도록 지원하는 서비스입니다.
✋ 잠깐, CDN이란?
넷플릭스는 전세계적으로 실시간 동영상 스트리밍 서비스를 제공하죠.
넷플릭스는 Cloudfront같은 CDN 서비스를 통해 사용자와 물리적으로 가까운 곳
에 위치한 Cache Server를 구축했습니다.
사용자와 S3에서 호스팅하는 페이지 중간에서 사용자에게 빠르게
페이지를 응답할 수 있도록 사용자와 지리적으로 가까운 Cache Server에 페이지를 캐싱을 했어요.
또한 보안 측면
에서도 이점이 있다고 해요.
CloudFront는 지리적 제한, 서명된 URL, 서명된 쿠키 등 액세스 제한을 추가할 수 있는데요, 이를 활용하여 유료 회원에게만 어떤 컨텐츠를 제공한다거나 특정 지역의 사람들에게만 제공할 수 있는 컨텐츠 등 다양한 작업을 할 수 있겠죠.
처음에는 캐싱이 되어있지 않은 상태입니다. 그러니 [사용자 <-> Cloudfront <-> S3]
순서로 요청이 되겠죠!
하지만 Cloudfront의 캐싱 이후에는 S3까지 요청이 가지 않고 [사용자 <-> Cloudfront]
사이에서 응답과 요청이 처리되게 됩니다!
게다가 Cloudfront는 사용자와 물리적으로 가까운 위치한 캐시 서버라 더욱 빠른 것이죠.
https://aws.amazon.com/ko/blogs/korea/amazon-s3-amazon-cloudfront-a-match-made-in-the-cloud/