[Deployment] Amazon Web Services

Steve·2021년 7월 8일
0

웹개발 코스

목록 보기
58/59

Cloud Computing

기존

  • 전산실에 서버 컴퓨터 직접 구매 및 설치
  • 요청 수용능력 한계시 컴퓨터 추가구매 및 성능 업글
  • 관리비용 많이듦, 공간의 한계

-> 가상화 기술 발전, 데이터 센터 등장. "On promise" 환경

Cloud

  • 서버의 자원, 공간, 네트워크 환경 제공
  • 필요할 때마다 컴퓨팅 능력을 유연하게 조절
  • 사용한 만큼만 요금 지급
  • 컴퓨터의 이미지를 이용, 다른 컴퓨터로 즉시 이주 (migration) 가능
  • 클라우드 제공자에게 종속되는 단점

형태

Iaas - Infrastructure as a Service: Network, Hardware, OS (AWS)
Paas - Platform as a Service: + Platform (Github)
Saas - Software as a Service: + Software (Google Drive)


Deploy

4 stages of deployment

Development - Integration - Stating - Production

Development - 각자의 컴퓨터(local)에서 코드 작성/테스트
Integration - 통합
Staging - Production 단계와 유사한 환경에서 테스트, 모든 관계자들에게 검증
Production - 실제 서비스 출시

각자가 작성한 코드가 다른 환경에서 작동하게 만드려면

  • 상대경로 사용
  • 환경변수 설정
  • Docker 와 같은 개발환경 자체를 통일시키는 solution 사용

Deployment Platforms

heroku, DigitalOcean, Microsoft Azure, Firebase, AWS...


AWS

EC2

Elastic Compute Cloud
클라우드 컴퓨팅 서비스.
AWS 에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것.

  • 구성하는데 필요한 시간 짧음
  • 다양한 운영체제 선택
  • 빌린 컴퓨터 = Instance
  • AMI(Amazon Machine Image) - 소프트웨어 구성 템플릿

RDS

Relational Database Service
AWS 에서 제공하는 관계형 DB 서비스

장점

직접 EC2 instance 에 db 를 설치하는 것에 비해,

  • AWS 가 가용성, 내구성, 백업, 설치/관리 등을 알아서 관리해줌.
  • 다양한 DB 엔진 제공

S3

Simple Storage Service

AWS 에서 제공하는 cloud storage service

Cloud Storage - 인터넷 공간의 데이터 저장소(Google Drive 등)

장점

  • 확장성 - 데이터 무한히 저장가능
  • 내구성 - 파일 유실 가능성 적어짐
  • 가용성(availability) - 정상적으로 사용할 수 있는 시간
    AWS 는 세계 각지에 IDC(Internet Data Center) 를 두고, 각 지역마다 2~3개의 데이터 센터가 존재하여 한곳에 문제가 생겨도 다른 센터에서 백업된 데이터를 활용.

대표적 storage class

S3 standard - 일반적. 데이터에 자주 액세스 해야 할 경우
S3 Glacier - 데이터 장기보관 (비용 저렴

정적 웹 사이트 호스팅 가능

정적 웹 - 서버에 미리 저장된 파일(html, css, js)가 그대로 전달되는 웹페이지
동적 웹 - 서버에 있는 데이터들을 스크립트에 의해 가공처리한 후 생성되어 전달되는 웹

  • 포털, 커뮤니티, 유튜브 등 대부분 동적 웹.

호스팅 - 웹페이지 배포를 위한 서버의 공간을 빌려주는 서비스

S3에서는 버킷을 통해 정적 웹 사이트 호스팅 - 버킷에 파일을 저장.
버킷에 담기는 파일 - 객체

  • 객체는 파일과 metadata 로 구성
  • 모든 객체는 고유한 key 를 가짐 (key-value pair 로 저장되어서 객체라고 명명)
  • URL 주소를 통해 객체에 접근 가능
  • URL 주소형식: http://{bucket name}.S3.amazonaws.com/{object key}

Deploy Strategy

클라이언트는 앱을 정적 파일로 빌드하여 S3 통해 배포

  • 빌드: 불필요한 데이터를 없애고 통합/압축하여 배포에 최적화된 상태 만들기. 데이터 용량이 줄어들고 웹사이트 로딩속도가 빨라짐.

서버는 EC2 인스턴스에 서버 실행

DB 는 RDS 사용

사용자들이 빠르게 파일을 받도록 CDN 서비스인 CloudFront 사용

  • 각지의 데이터센터에 데이터를 저장 후 가까운 지역에서 제공

Route 53 을 이용하여 도메인 주소 접근 만들기


기타

  • 도메인 구입
  • HTTPS 적용 (ACM: Amazon Certificate Manager)
    • AWS 에서 도메인 구입시 자동으로 인증됨

--- 일단 여기까지만 알아도 되지만, HTTPS를 적용하고 싶다면? ---

S3 - CloudFront (CDN이면서 동시에 SSL/TLS 인증서 제공)
EC2 - 로드밸런서 (리버스 프록시 서버이면서 동시에 HTTPS 터널링 제공)
- 그런데 로드밸런서를 적용하려면 "HTTPS 인증서"가 필요
- 그러려면 도메인을 하나 장만해야 함
- 도메인과 인증서는 다음 두가지 방법으로 장만 가능
- Route 53에서 사면, 도메인과 인증서를 한방에
- 다른데서 사면, 도메인은 받지만 Let's Encrypt를 이용해 인증서 발급이 필요

그 후...
Route 53
api.yourdomain.com은 로드밸런서로 연결하고
www.yourdomain.com은 CloudFront로 연결하면 HTTPS 배포 끝!!

profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글