💡 참고자료
AWS S3란?(개념, 속성)
[AWS] S3 개념 & 버킷 권한 설정 방법
AWS 간단히 이해하기 - S3, EC2, Cloud Front
클라우드 서비스가 제공하는 서비스 모델 Iaas, PaaS, SaaS, BaaS
AWS : EC2 / S3 / CloudFront 트래픽 요금 분석
본격적인 배포 자동화 작업에 앞서, 어떤 툴들이 존재하는지 알아보고 각각의 클라우드 모델들에 대해 알아보자.
📂 XaaS - 클라우드 서비스 제공 모델
Iaas
(Infrastructure as a Service)
- 서버의 물리적인 부분에 대해 기업에 돈을 지불하고 이용하며 소프트웨어를 직접 관리하는 방식
- AWS 의 EC2 / S3 + CloutFront, 구글의 GCP, MS의 Azure 등
Saas
(Software as a Service)
- On-demand Software(주문형 소프트웨어)
- 소프트웨어 및 관련 데이터는 중앙에 호스팅되고, 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하는 형태의 소프트웨어 전달 모델
- 클라우드 환경에서 동작하는 응용프로그램을 서비스 형태로 제공하여 소프트웨어를 설치하지 않아도 애플리케이션을 이용할 수 있다.
- 네이버 클라우드, Dropbox, Google Apps 등
- 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공
- 카카오 API, 네이버 API, AWS의 Elastic Beanstalk 등
Baas
(Backend as as Service)
- 모바일 앱 개발자를 위한 클라우드 서비스
- 앱 개발에 있어서 필요한 다양한 기능들(데이터 베이스, 소셜서비스 연동, 파일 시스템 등)을 API로 제공해 줌으로써 개발자들이 서버 개발을 하지 않고서도 필요한 기능을 쉽고 빠르게 구현할 수 있게 해준다.
- 비용은 API를 사용한 만큼 나간다.
- Google의 Firebase, AWS의 mBaas 등
Faas
(Function as a Service) - 서버리스
- 서버리스로, 서버를 관리할 필요 없이 특정 이벤트에 반응하는 함수를 등록하고, 해당 이벤트가 발생하면 함수가 실행되는 구조
- 앱 개발 및 런칭에 하부 구조의 복잡한 빌드, 유지보수 없이 애플리케이션 기능을 개발, 실행, 관리할 수 있도록 플랫폼을 제공
- 업로드한 코드를 함수 단위로 쪼개어 대기시키다가 요청이 발생하면 함수를 실행시키고 작업이 끝나거나 일정 시간이 경과되면 대기 상태로 돌아간다.
- 함수들이 실행되는 횟수 (그리고 실행된 시간)만큼 비용을 지불한다.
- AWS Lambda, MS Azure Function 등
💡 이 중에서 배포 자동화 시스템 구축을 위해 사용할 클라우드 모델은 AWS S3+Cloudfront, EC2 등을 제공하는 Iaas
.
📂 AWS S3 vs EC2
💡 대표적인 Iaas
모델인 S3와 EC2 비교
☁️ S3 (Simple Storage Service)

- AWS S3는 스토리지 서비스(Simple Storage Service)를 뜻한다.
- 웹에서 사용 가능한 객체(Object) 저장소로, S3의 객체는 키(고유 식별자)와 연결됨으로서 어디서나 웹을 통해 액세스 가능하다.

ex) User
라는 이름의 버킷에 profile.png
객체 파일을 저장하면 http://User.s3.amazonaws.com/profile.png
라는 url이 생성된다.
☁️ CloudFront
- 직접 만들 수 있는 CDN(Content Delivery Network)
- Client에게 빠른 전송 속도를 제공하기 위해 이곳 저곳에 중계서버(Edge Location)을 두고, Client에게 가장 가까운 서버에서 웹 자원을 대신 전달하여 빠르게 데이터를 제공한다.
💡 Origin : 원본 데이터를 가지고 있는 서버 (AWS S3, EC2 인스턴스 등)
Edge Location : 세계에 퍼져있는 중계 서버. 요청 받은 데이터에 대해 빠르게 응답해주기 위해 Cache 기능을 제공한다. 간단히 말해 CloudFront의 실제 캐싱 콘텐츠가 위치하는 곳을 뜻함.
Client → Edge Location 요청 → 캐싱 여부 확인 → 응답 전송
⚡️ EC2 (Elastic Compute Cloud)
- AWS에서 크기 조정이 가능한 컴퓨팅 용량을 제공하는 웹 서비스
- 가상 서버를 구축하여 트래픽 증감을 용이하게 관리할 수 있다.
- 기업의 물리적 컴퓨터를 인터넷을 통해 대여하고, 그곳에 운영체제 및 운영 프로그램 등을 설치하여 URL을 제공해준다.
⚡️ CodeDeploy
- 운영환경에 자동 배포하는 역할을 수행하는 AWS 서비스
- 즉, 지속적인 배포(CD) 서비스를 뜻함
- 배포 대상은 EC2, ECS, Lambda 등이 있음
💡 <FE 프로젝트 배포하는 방법 선택>
- AWS - S3 + CloudFront 를 활용한 배포 ✅
- AWS - EC2 + CodeDeploy 를 활용한 배포
→ 프론트엔드 배포 시, EC2에 리액트로 생성한 애플리케이션인 SPA를 그대로 올리는 것은 비용적인 면이나 사용 측면에서 과할 수 있다고 생각이 들기 때문에 상대적으로 더 저렴한 S3를 CloudFront와 결합하여 사용하기로 함
→ 대신 백엔드 배포는 EC2와 CodeDeploy를 활용한 CI/CD 가 필요함!