배포 자동화 프로젝트(2) - S3 + CloudFront / EC2 + CodeDeploy (feat. Iaas, Saas, Paas, Baas, Faas)

신혜린·2024년 5월 31일
0

💡 참고자료
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 등

Paas (Platform as a Service)

  • 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공
  • 카카오 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 모델인 S3EC2 비교

☁️ S3 (Simple Storage Service)

  • AWS S3스토리지 서비스(Simple Storage Service)를 뜻한다.
    • 객체(Object) - 저장되는 파일

    • 버킷(Bucket) - 파일이 저장될 프로젝트 (루트 디렉토리)

      → S3는 키(고유 식별자)와 값(데이터 자체)으로 구성된 데이터 조각인 객체의 개념을 기반으로 한다.

  • 웹에서 사용 가능한 객체(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 프로젝트 배포하는 방법 선택>

  1. AWS - S3 + CloudFront 를 활용한 배포 ✅
  2. AWS - EC2 + CodeDeploy 를 활용한 배포

→ 프론트엔드 배포 시, EC2에 리액트로 생성한 애플리케이션인 SPA를 그대로 올리는 것은 비용적인 면이나 사용 측면에서 과할 수 있다고 생각이 들기 때문에 상대적으로 더 저렴한 S3를 CloudFront와 결합하여 사용하기로 함
→ 대신 백엔드 배포는 EC2와 CodeDeploy를 활용한 CI/CD 가 필요함!

profile
개 발자국 🐾

0개의 댓글