Section 4 - Unit 9 [Deploy] AWS

정호재·2023년 3월 31일
0

코드스테이츠

목록 보기
34/37

AWS

: 아마존 웹 서비스(AWS)란 아마존이 자사의 노하우를 살려 제공하고 있는 ‘클라우드 컴퓨팅 서비스’를 의미

  • 컴퓨팅, 스토리지, DB, 분석, 모바일, IoT, 보안, 엔터프라이 app등 다양한 서비스를 제공해주면 해당 서비스를 사용해 인프라 구축을 원하는대로 할 수 있음
  • AWS와 AWS 외부 서비스를 조합해 대부분의 서비스 구축 가능
  • 적당한 규모의 서버까지는 편리하게 구축가능
  • CDN 형식으로 서비스를 제공하며 가까운 리전에서 사용함

Cloud Computing

: 서버의 자원과 공간 및 네트워크 환경을 제공하며 필요할 때마다 컴퓨팅 능력을 유연하게 조절하는 것이 가능

  • 즉시 다른 컴퓨터로 이주 가능함

But 단점

  • 클라우드 제공자의 해당 서비스가 종속돼 클라우드 제공자에 문제가 발생하면 해당 문제의 영향을 강하게 받음
  • 또한 백엔드 구성 자체가 해당 회사의 기술로만 구성해야하는 경우가 생길 수 있음

SaaS vs PaaS vs IaaS

  • SaaS: 클라우드 제공자가 사용 가능한 완전한 소프트웨어 솔루션을 제공하는 수준 (ex 구글 드라이브)
  • Paas: 클라우드 제공자가 서비스 구축을 위한 DB, 개발 플랫폼까지 제공하는 수준 (ex git??)
  • IaaS: 클라우드 제공자가 가상의 컴퓨터(스토리지, 컴퓨팅 자원 등)을 제공해 가상 핵심 인프라를 제공하고 호스팅하는 수준 (ex AWS)

EC2

: AWS에서 제공하는 클라우드 컴퓨팅 서비스

  • 인터넷을 통해 요청과 할당으로 환경 구성 편리
  • 다양한 os, cpu, ram 선택 가능, AMI 사용해 인스턴스의 플랫폼 제공(os, app-server, app)

RDS

: Relational Database Service, AWS에서 제공하는 관계형 DB

  • DB에 대한 유지보수를 RDS가 자동으로 관리하주기 때문에 편의성 확보
  • 다양한 DB엔진 지원

S3

: Simple Storage Service, AWS에서 제공하는 클라우드 스토리지

  • 확장성, 접근성, 내구성, 가용성 보장
  • 가용성 내구성 보장 How? 물리적 서버(리전)을 곳곳에 위치해 데이터 센터 문제 발생 시 대체할 수 있음
  • 정적인 웹 사이트 호스팅 가능
    [S3 Standard]
    : 범영 목적의 스토리지로, 빠른 데이터 접근 및 엑세스 요청 처리가 빠르지만 장기적인 데이터 보관시 비용 급증

[S3 Glacier]
: 접근성은 부족하지만 장기적인 데이터 보관에 적절

이 외에도 다양한 스토리지 클래스 제공

버킷

: 각 리전에서 고유한 이름을 가지는 파일을 담는 바구니 역할로 최상위 디렉토리에 해당하며, 무한 데이터 저장과 버킷 정책 수정을 통한 엑세스 권한 부여가 가능함

  • 버킷에는 객체 형식의 파일이 저장됨(key-value 형식)
  • 객체는 파일(데이터)과 메타 데이터(데이터 구조 정보)로 구성됨
  • 객체는 고유한 url을 가짐

배포 전략

  • Client 배포
    📌 AWS의 경우 S3 을 이용해 정적 파일로 빌드 배포 가능

    • asset이 정적일 경우 그대로 배포 가능, react의 경우 npm run bulid를 통한 빌드 기능 지원
    • Cloud Front (AWS의 CDN) 서비스를 통해 데이터를 가까운 리전에서 가져와 서비스를 사용하도록 배포함
  • Server 배포
    📌 AWS의 경우 EC2를 사용해 서비스를 구성하고 제공 가능

    • RDS를 사용해 EC2로 배포된 서버 데이터 제공
  • DNS
    📌 AWS의 경우 Route 53 서비스를 사용해 직관적인 도메인주소를 통해 사용자가 접근할 수 있도록 함

배포

: 사용자가 개발한 서비스를 이용가능하게 하는 과정
[ Development - Integration - Staging - Production ]

  • Development
    : 개발 단계로 코드를 작성하고 해당 코드를 더미 데이터를 사용해 테스트

  • Integration
    : 코드 병합 과정으로 병합 중 발생하는 충돌 확인 및 수정

  • Staging
    : 실제 환경과 유사한 환경에서 실제 데이터를 사용해 테스트를 진행해 확인하는 과정

  • Production
    : 서비스 출시

🔔 실제 서비스 환경과 개발 환경에서의 차이를 고려하면 코드를 분리 작성하는 것 중요
➢ 상대경로 사용, 환경에 따른 분기를 위한 환경 변수 설정
➢ 개발환경을 통일하면 모든 문제 없음

profile
공부 일기장

0개의 댓글