Amazon Web Service

play·2022년 8월 5일
0

Chapter1. Amazon Web Service

📌 클라우드 컴퓨팅

✨ 등장배경

  • 기존 서버의 방식 : 서버실에 컴퓨터 배치하고 인터넷을 연결하여 서비스 제공
    • 서버 요청 수용 능력이 한계에 도달했다면? 같은 공간에 컴퓨터를 추가
      • 단점
        • 서버실 주기적인 관리 필요 = 인력 및 비용 증가
        • 공간의 한계
  • 온프레미스(On-premise) : 이러한 이유로 데이터 센터 건물 증축 & 데이터 센터의 유휴 자원을 대여하는 서비스 등장
    → 서버의 자원과 공간, 및 네트워크 환경을 제공을 빌려 사용하는 클라우드 컴퓨팅의 시초

✨ 클라우드 등장

  • 서버의 자원과 공간 및 네트워크 환경 제공

  • 장점

    • 필요할 때마다 컴퓨팅 능력을 유연하게 조절
    • 고정적인 비용이 들어가는 온프레미스와 달리 사용한 만큼의 요금 지불
    • 컴퓨터의 스냅샷(이미지)을 이용해 다른 컴퓨터로 즉시 이주 가능
  • 단점

    • 운영 환경이 클라우드 사업자(vendor)에게 종속됨 = 백엔드 구성을 특정 회사의 기술로만 구성해야하는 경우 발생

  • 클라우드 목표 : 모든 것을 서비스화 한다.

  • 대표적 클라우드 서비스

    • SaaS(Software as a Service) : 클라우드 제공자가 당장 사용가능한 소프트웨어를 제공하는 경우
    • PaaS(Platform as a Service) : 클라우드 제공자가 데이터베이스, 개발 플랫폼까지 제공하는 경우
    • IaaS(Infrastructure as a Service) : 클라우드 제공자가 가상 컴퓨터까지 제공하는 경우



📌 Deploy

배포 : 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정

  • Development 환경과 Production 환경은 서로 다를 수 있다.
    • 여러 명이 작업하는 프로젝트, 각자 다른 node 버전, 엔드포인트도 제각각...
    • 따라서 배포에선 환경 설정을 코드와 분리하는 것이 중요.

  • 작성한 코드가 다른 환경에서 작동할 수 있게 하려면?
    • 절대경로 대신 상대경로 사용
    • 설정을 환경 변수(env)에 저장
      • 환경 변수 : 코드 변경 없이 배포 때마다 쉽게 변경 가능
        설정 파일과 달리, 코드 저장소에 잘못 올라갈 가능성 낮음
    • Docker와 같은 가상화 도구로 개발 환경을 통일 시키기



📌 Amazon EC2(Elasic Compute Cloud)

Elastic : 탄력(신축성)있는, 유연한.

아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스

💡 웹서버를 설치하고 이를 통해 사용자가 요청하는 서비스를 제공

  • 클라우드 컴퓨팅 : 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스
  • AWS에서 가상의 컴퓨터를 한 대 빌리는 것과 같은 이치
  • 장점
    • 구성하는데 필요한 시간이 짧음 : 클릭만으로 PC 구성 가능
    • 다양한 운영체제 선택 가능 : AMI 템플릿 제공으로 필요에 따라 손쉽게 운영체제 선택
      • AMI : 소프트웨어 구성이 기재된 템플릿
    • CPU, RAM, 용량 구성 가능

  • Instance : AWS에서 빌리는 1대의 컴퓨터를 의미하는 단위
  • 인스턴스 생성 : AWS에서 컴퓨터를 빌리는 것
    즉, EC2 인스턴스 생성은 곧 AMI를 토대로 setting된 PC를 빌리는 것,
    • AMI(Amazon Machine Image)

      • 인스턴스를 생성하는데 필요한 소프트웨어 구성이 포함된 템플릿
      • 사용용도에 따라 운영체제, 런타임 등이 구성된 Setting 선택 가능



📌 RDS(Relational Database Service)

AWS에서 제공하는 관계형 데이터베이스 서비스

다양한 데이터베이스 엔진을 선택하여 이용 가능

EC2RDS
It's like...개인 소유 차량렌터카 회사에서 대여한 차량
데이터 관리방식인스턴스에 관계형 데이터베이스 엔진을 설치해서 관리RDS를 통해 관리
데이터베이스 규모 확장직접 관리AWS가 관리
가용성, 내구성 확보직접 관리AWS가 관리
데이터 백업직접 관리AWS가 관리
운영체제 설치/관리직접 관리AWS가 관리
기반 시설 구축직접 관리AWS가 관리



📌 S3(Simple Storage Service)

  • 클라우드 스토리지 : 인터넷 공간에 데이터를 저장하는 저장소
    • ex. 구글의 Google Drive, 네이버의 MYBOX 같은 서비스

AWS에서 제공하는 클라우드 스토리지 서비스

  • 장점

    • 필요한 만큼 스토리지 규모 확장/축소 가능
    • 사용한 만큼만 비용 지불하므로 효율적
    • 높은 내구성 : 저장된 파일 유실 가능성 적음
    • 높은 가용성 : 스토리지에 저장된 파일을 정상적으로 사용할 수 있는 시간이 길어짐
    • 다양한 스토리지 클래스 제공

      • Standard 클래스 : 일반적으로 사용되는 스토리지 클래스.
        데이터 액세스 요청 처리속도가 빠름 / 보관목적은 비효율적
      • Glacier 클래스 : 데이터 장기보관 목적.
        저장된 데이터에 액세스하는 속도는 느림 / 데이터 보관 비용은 저렴
    • 버킷을 통해 정적 웹 사이트 호스팅 가능

      • 정적 파일 : 서버의 개입 없이 클라이언트에 제공될 수 있는 파일
      • 웹 호스팅 : 서버의 한 공간을 빌려줘 웹 사이트 배포, 운영이 가능하게 만들어주는 서비스
      • 버킷과 객체

AWS가 높은 가용성, 내구성을 보장할 수 있는 이유


  • 리전(Region) : AWS에서 클라우드 서비스를 제공하기 위해서 운영하는 물리적인 서버의 위치
  • 가용 영역(Availability Zone) : 각 리전 안에 존재하는 데이터 센터(IDC)
    • 각각 개별적인 위치에 떨어져서 존재
    • 한 곳의 가용영역이 가동 불가능해져도 다른 가용영역에 백업을 해놓은 데이터를 활용해 문제없이 서버 가동 가능



📌 배포 전략

  • 사용자에게 Client를 어떻게 제공할지
  • Client를 받은 사용자가 서비스를 이용하기 위한 요청을 처리할 Server를 어떻게 제공할지
  • Server의 데이터를 저장하고 제공할 Database는 어떻게 제공할지

✨ Client 배포

S3 이용

  • 클라이언트 앱을 정적파일로 빌드하여 제공
    • 빌드 : 불필요한 데이터를 없애고, 퍼져있는 데이터를 통합/압축하여 배포하기 최적화된 상태를 만드는 것
      • 데이터의 용량이 줄어들고, 웹 사이트 로딩속도가 빨라진다.
      • 일반적인 의미의 빌드 : 소스코드를 실행 가능한 번들로 변환하는 컴파일 과정
      • 웹 앱은 배포 가능한 정적 파일의 형태로 만들어줘야 한다.
      • React로 정적 파일 만들기 : npm run build

CDN 이용

  • AWS에서 제공하는 CDN 서비스인 CloudFront를 통해서 각지의 데이터 센터에 데이터를 분산시켜 저장해뒀다가 가까운 지역에서 데이터를 주는 방식으로 사용자에게 콘텐츠를 빨리 배포할 수 있다

✨ Server Application 배포

EC2 이용

  • 가상의 PC(AWS EC2)를 빌려 서버를 구성하고 서비스 제공 가능

✨ Database 배포

RDS 이용

  • RDS서비스를 이용해 EC2를 통해 배포된 Server Application의 데이터를 저장, 제공하는 데이터베이스를 배포 가능

도메인 이름 시스템(DNS)

  • AWS의 Route 53 : 직관적인 도메인 주소를 통해 서비스에 접근 가능.
profile
블로그 이사했습니다 🧳

0개의 댓글