프로젝트를 진행하면서, AWS의 여러 서비스를 사용해보게 되었다.
지금이야 차이점을 인식하고 있지만, 초반에는 EC2와 S3가 대체 어떻게 다른지, CloudFront는 왜 쓰고, Origin Shield는 또 뭔지 어려운 게 한 두개가 아니었다.
각각의 서비스를 이용하는 이유와 장단점에 대해 기록해보고, 추후 기회가 되면 배포 과정을 기록해둔 것도 올려볼까 한다.
- 사용자 정의 가상 컴퓨팅 환경을 제공하는 서비스
- Amazon VPC와 함께 작동하여 보안성 및 강력한 네트워킹 기능을 제공함
- AWS Auto Scaling 등을 통해 몇 분 내에 용량을 늘리거나 줄일 수 있음.
말 그대로, 컴퓨터를 빌려서 사용한다고 보면 된다.
원하는 운영체제를 고르고, 원하는 용량과 성능으로 가상의 공간에 있는 컴퓨터를 빌려 사용하는 것이다.
- 파일 서버의 역할을 하는 서비스
- 파일을 “버킷(Bucket)”에 무제한으로 저장하고 가져올 수 있도록 설계된 서비스
- 버킷이란 S3에서 생성할 수 있는 최상위 디렉토리, region별로 이름이 유일해야 함.
- S3 버킷이 자동으로 확장 및 축소되기 때문에 스토리지 공간을 계획하여 특정 크기를 할당할 필요가 없음.
- S3는 서버리스(Serverless) 서비스이기 때문에 파일이 저장되는 서버를 관리하거나 패치할 필요가 없고, 콘텐츠를 저장하고 가져오기만 하면 돼서 편리함.
정적 파일을 올릴 때 사용하는 저장소 개념이다.
html, css, js 번들 파일과 이미지 리소스들, font 파일까지 여러 정적 파일들을 올려두고 사용한다.
사실 '서버리스' 서비스라는 말이 잘 와닿지는 않지만, 파일이 저장되는 서버를 직접 관리하거나 패치할 필요가 없다는 말이 중요한 것 같다.
- 전 세계의 정적/동적 웹 콘텐츠, 비디오 스트림 및 API를 안전하게 대규모로 전송할 수 있는 콘텐츠 전송 네트워크(CDN) 서비스
- S3 버킷과 함께 사용하면 비용을 효과적으로 관리하면서 성능과 보안까지 최적화할 수 있음.
- CDN(Content Delivery Network)
- 콘텐츠 배포 네트워크(CDN) 서비스가 등장하기 전까지는 특정 지역에 서버를 두고 일일이 서비스해야 했음.
- 엣지 서버를 사용해 콘텐츠를 캐싱하고 서비스를 제공하면 최종 사용자가 위치한 곳에 더욱 가깝게 콘텐츠를 전송할 수 있기 때문에 성능이 향상됨.
S3와 클라이언트 사이에 임시 저장소가 하나 더 있다고 보면 된다.
여기에 웬만한 컨텐츠를 캐싱해두면 사용자의 요청이 S3까지 모두 가지 않아도 되니, 비용도 절감되고 서버 부하도 적어진다.
거기에 자체적으로 보안 정책도 제공해주니, 보안까지 챙길 수 있다.
비용 측면 장점
성능 측면 장점
보안 측면 장점
- CDN과 origin server 사이의 추가적인 캐싱 레이어
OriginSheild 사용 시 CloudFront 콘텐츠 요청 - 전송 흐름
CDN과 오리진 서버(S3 버킷) 사이에 캐싱 레이어를 하나 더 두고(지리적으로 더 가까운 엣지 로케이션을 설정해두고), 그곳에 컨텐츠 캐싱을 해두는 것이다.
CDN - OriginShield - Origin Server
의 구조로, 중간에 OriginShield를 거치는 것이기 때문에 s3에 직접적으로 요청이 갈 확률이 더 줄어든다.
결과적으로 캐싱된 컨텐츠를 사용하는 cache hit의 비율도 높아지며, 지리적으로도 더 가깝기 때문에 비용이나 성능 면에서도 유리하다.
따로 설정할 것도 없고, 설정 단계에서 체크만 해주면 알아서 설정되니 사용하지 않을 이유가 없다고 생각한다.
잘 읽고 갑니다!