AWS의 EC2, S3, CloudFront, OriginShield 서비스

신세한탄·2021년 12월 1일
1
post-thumbnail

프로젝트를 진행하면서, AWS의 여러 서비스를 사용해보게 되었다.

지금이야 차이점을 인식하고 있지만, 초반에는 EC2와 S3가 대체 어떻게 다른지, CloudFront는 왜 쓰고, Origin Shield는 또 뭔지 어려운 게 한 두개가 아니었다.

각각의 서비스를 이용하는 이유와 장단점에 대해 기록해보고, 추후 기회가 되면 배포 과정을 기록해둔 것도 올려볼까 한다.

1. EC2

  • 사용자 정의 가상 컴퓨팅 환경을 제공하는 서비스
  • Amazon VPC와 함께 작동하여 보안성 및 강력한 네트워킹 기능을 제공함
  • AWS Auto Scaling 등을 통해 몇 분 내에 용량을 늘리거나 줄일 수 있음.

말 그대로, 컴퓨터를 빌려서 사용한다고 보면 된다.
원하는 운영체제를 고르고, 원하는 용량과 성능으로 가상의 공간에 있는 컴퓨터를 빌려 사용하는 것이다.

2. S3

  • 파일 서버의 역할을 하는 서비스
  • 파일을 “버킷(Bucket)”에 무제한으로 저장하고 가져올 수 있도록 설계된 서비스
  • 버킷이란 S3에서 생성할 수 있는 최상위 디렉토리, region별로 이름이 유일해야 함.
  • S3 버킷이 자동으로 확장 및 축소되기 때문에 스토리지 공간을 계획하여 특정 크기를 할당할 필요가 없음.
  • S3는 서버리스(Serverless) 서비스이기 때문에 파일이 저장되는 서버를 관리하거나 패치할 필요가 없고, 콘텐츠를 저장하고 가져오기만 하면 돼서 편리함.

정적 파일을 올릴 때 사용하는 저장소 개념이다.
html, css, js 번들 파일과 이미지 리소스들, font 파일까지 여러 정적 파일들을 올려두고 사용한다.
사실 '서버리스' 서비스라는 말이 잘 와닿지는 않지만, 파일이 저장되는 서버를 직접 관리하거나 패치할 필요가 없다는 말이 중요한 것 같다.

3. CloudFront

  • 전 세계의 정적/동적 웹 콘텐츠, 비디오 스트림 및 API를 안전하게 대규모로 전송할 수 있는 콘텐츠 전송 네트워크(CDN) 서비스
  • S3 버킷과 함께 사용하면 비용을 효과적으로 관리하면서 성능과 보안까지 최적화할 수 있음.
  • CDN(Content Delivery Network)
    • 콘텐츠 배포 네트워크(CDN) 서비스가 등장하기 전까지는 특정 지역에 서버를 두고 일일이 서비스해야 했음.
    • 엣지 서버를 사용해 콘텐츠를 캐싱하고 서비스를 제공하면 최종 사용자가 위치한 곳에 더욱 가깝게 콘텐츠를 전송할 수 있기 때문에 성능이 향상됨.

S3와 클라이언트 사이에 임시 저장소가 하나 더 있다고 보면 된다.
여기에 웬만한 컨텐츠를 캐싱해두면 사용자의 요청이 S3까지 모두 가지 않아도 되니, 비용도 절감되고 서버 부하도 적어진다.
거기에 자체적으로 보안 정책도 제공해주니, 보안까지 챙길 수 있다.

CloundFront의 장점

  • 비용 측면 장점

    • 오리진 서버로 직접 요청들이 들어오지 않기 때문에 대역폭 비용이 크게 절감됨.
      (대역폭? -> 여러 요청이 한번에 들어오지 않으니까 처리용 도로를 넓게 깔지 않아도 됨)
    • CloudFront에서 데이터를 전송하면 S3에서 직접 사용자에게 전송하는 것보다 더욱 비용 효율적 (거리가 짧아지니까)
    • S3에서 CloudFront로 데이터를 전송하는 수수료도 없음.
  • 성능 측면 장점

    • CloudFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠 서비스를 제공
    • 한국 서울에도 4개의 엣지 로케이션이 있음.
    • 엣지 로케이션들에 대해 꾸준한 헬스 체크가 이루어지고, 상태가 좋지 않을 경우 다른 엣지 로케이션으로 요청을 보내기 때문에 안정성 증가
    • 엣지 로케이션에 캐싱하기 때문에 오리진 서버에 대한 부하를 줄일 수 있음.
    • 요청이 직접 몰리지 않고 엣지로 분산되기 때문에 과부하로 인한 오류 가능성이 낮아져 안정성이 증가함.
    • 콘텐츠가 퍼블릭 인터넷이 아닌 AWS 프라이빗 네트워크를 통해 전송되는 동시에 CloudFront가 TCP 핸드셰이크를 최적화하기 때문에 요청 및 콘텐츠 반환 속도가 퍼블릭 인터넷을 통해 액세스하는 것보다 훨씬 빠름.
  • 보안 측면 장점

    • 모든 CloudFront 고객은 추가 비용 없이 자동으로 AWS Shield Standard의 보호를 받을 수 있음.
    • 오리진 서버가 DDos 등 악성 공격을 직접 받지 않고, aws에서 엣지 로케이션들에 대해 이러한 공격 대비를 잘 해두었기 때문에 상대적으로 훨씬 안전함.
    • CloudFront를 사용하면 지리적 제한, 서명된 URL, 서명된 쿠키 등 액세스 제한을 추가로 설정하여 기준이 서로 다른 콘텐츠에 대한 액세스 제한을 강화할 수 있음.

4. OriginShield(엣지 로케이션)

  • CDN과 origin server 사이의 추가적인 캐싱 레이어
    OriginSheild 사용 시 CloudFront 콘텐츠 요청 - 전송 흐름

CDN과 오리진 서버(S3 버킷) 사이에 캐싱 레이어를 하나 더 두고(지리적으로 더 가까운 엣지 로케이션을 설정해두고), 그곳에 컨텐츠 캐싱을 해두는 것이다.

CDN - OriginShield - Origin Server의 구조로, 중간에 OriginShield를 거치는 것이기 때문에 s3에 직접적으로 요청이 갈 확률이 더 줄어든다.
결과적으로 캐싱된 컨텐츠를 사용하는 cache hit의 비율도 높아지며, 지리적으로도 더 가깝기 때문에 비용이나 성능 면에서도 유리하다.

따로 설정할 것도 없고, 설정 단계에서 체크만 해주면 알아서 설정되니 사용하지 않을 이유가 없다고 생각한다.

profile
신세한탄 안 합니다.

1개의 댓글

comment-user-thumbnail
2021년 12월 1일

잘 읽고 갑니다!

답글 달기