S3는 AWS가 제공하는 '스토리지(저장소)'다.
크기 제한은 있지만, 개수 제한이 없기 때문에 대용량의 데이터를 무제한으로 업로드할 수 있다.
대용량 데이터가 저장되는 경우 서버가 다운될 수 있다.
Load Balancer을 통해 서버를 분산시킬 수 있지만, 결국 최종적으로 컴퓨터를 추가하기 때문에 비효율적이다.
E2 추가 비용 >>>>>>>> S3 업로드 비용
정적 콘텐츠를 내 컴퓨터의 서버에 계속해서 올리면 과부화가 일어난다.
따라서, 무제한 업로드가 가능한 S3에 올리는 것이 좋다. (S3를 사용하지 않는다면, Apache나 Engine X 사용)
예외적으로 Node.js에서는 fs
모듈로 파일 시스템에 사용되는 기능을 이용할 수 있다.
내 컴퓨터의 서버에 파일을 올리면 과부화가 일어난다고 했는데, 어떻게 fs 모듈을 사용할 수 있는 것일까?
stream
덕분이다. stream은 파일은 chunk 단위로 쪼개서 읽기 때문에 과부화를 막을 수 있다.
CloudFront - AWS에서 제공하는 CDN 서비스
CDN은 각 region
마다 존재한다.
S3는 사용자가 파일을 다운받는 순간 비용을 지불한다. 만약 같은 region에서 다운 받은 기록이 있다면 CDN에 접근하여 파일을 가져온다. 매번 S3에 접근하지 않기 때문에 비용 절약과 네트워크 지연 방지 측면에서 유용하다.
S3는 '건 당 + 데이터 크기'로 CDN은 '데이터 크기'로 비용을 측정한다. CDN을 캐싱이라고 생각하면 된다. 유효시간은 24시간으로 변경 가능하다.
CloudFront 사용 여부는 Network - Headers 탭에서 확인 가능하다. X-Cache
가 'Miss from cloudfront' 라면 S3에서 'Hit from cloudfront' 라면 CDN에서 콘텐츠를 가져오는 것이다.