codestates/section4

Unit9 - [Deploy] Amazon Web Service

나아눙 2023. 3. 31. 07:56

Cloud Computing & Deployment

배포를 위한 클라우드 서비스 Amazon Web Service(이하 AWS)를 이용해서 웹 애플리케이션을 배포

 

  1. 신속한 인프라 구축
  2. 유연한 인프라 관리
  3. 예상치 못한 트래픽 폭주 대응
  4. 손쉬운 글로벌 서비스
  5. 강력한 보안과 장애 없는 서비스
  6. 합리적인 요금제 

기존 서버의 방식 

서버실과 같은 곳에 컴퓨터 배치 

 

=> 서버가 요청에 대한 수용 능력 한계

 같은 공간에 더 많은 컴퓨터를 추가 혹은 성능을 높임

 

문제점

첫번째 주기적인 관리 필요

두번째 공간 한계

 

=> 데이터 센터 등작 

물리적인 컴퓨터 대여 

즉 서버의 자원과 공간, 및 네트워크 환경을 제공(온프레미스)을 빌려 사용하는 클라우드 컴퓨팅이 시작

 

현대의 클라우드 컴퓨팅(데이터 센터와 비슷한 역활)

가상 컴퓨터를 대여

 

컴퓨팅 능력을 유연하게 조절

사용한 만큼의 요금만 지불

컴퓨터의 스냅샷(이미지) 을 이용해 다른 컴퓨터로 즉시 이주(migration)가 가능


EC2 

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

인터넷(클라우드)를 통해 서버 , 스토리지 , 데이터베이스 등의 컴퓨팅 서비스를 제공하는  서비스 

아마존에서 가상의 컴퓨터를 한 대 빌리는 것

 

Elastic Compute Cloud 서비스

Elastic은 비용적인 부분뿐만이 아니라 필요에 따라 성능, 용량을 자유롭게 조절할 수 있다는 의미

 

장점

필요한 시간이 짧다

AMI를 통해서 필요한 용도에 따라 다양한 운영체제에 대한 선택이 가능

뿐만 아니라 CPU와 RAM, 용량까지도 구성

 

빌린 컴퓨터는 데이터 센터(인프라)에 만들어져 있기 때문에

컴퓨터를 조작하기 위해 네트워크(인터넷)를 통해서 컴퓨터를 제어

 

웹서버를 설치하고 웹 서버를 통해서 사용자가 웹 브라우저를 통해 요청하는 서비스를 제공

 

1대의 컴퓨터 빌리다. -> 인스턴스 생성하다.

 

AMI는 소프트웨어 구성이 기재된 템플릿

이미지 종류로는 단순히 운영체제(윈도우, 우분투 리눅스 등)만 깔려있는 템플릿을 선택

특정 런타임이 설치되어 있는 템플릿이 제공

 

인스턴스 생성하는데 필요한 소프트웨어 구성(운영체제, 애플리케이션 서버 , 애플리케이션)이 포함된 템플릿


RDS 

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

다양한 데이터베이스 엔진 선택

뛰어난 접근성

 

EC2인스턴스에 데이터베이스 설치하면 ? 

직접 관리

데이터 베이스 규모 확장 , 가용성, 내구성 확보 , 데이터 백업 , 데이터 베이스 설치 / 관리

AWS 관리

운영체제 설치 / 관리 , 기반 시설 구축

 

but RDS를 이용

직접 관리

초기설정 , 데이터베이스에 저장된 데이터 관리 

AWS 관리

데이터 베이스 규모 확장 , 가용성, 내구성 확보 , 데이터 백업 , 데이터 베이스 설치 / 관리 , 운영체제 설치 / 관리 , 기반 시설 구축


S3(Simple Storage Service)

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

인터넷 공간에 데이터를 저장하는 저장소 

 

장점

웹 환경이라면 언제 어디서나 저장된 파일에 접근

웹에 접속이 가능한 다른 전자기기를 활용하여 클라우드 스토리지에 저장된 데이터에 접속

뛰어난 접근성

높은 확장성 -> 스토리지 규모 확장 / 축소

사용한 만큼 비용 지불  -> 비용 효율적 

높은 스토리지 내구성 -> 저장된 파일을 유실한 가능성이 적다

높은 가용성 -> 스토리지에 저장된 파일들을 정상적으로 사용

 

 

EC2, RDS, S3 공통점

높은 가용성과 높은 내구성

 

한 곳의 가용 영역이 불가능해지더라도 백업을 해놓은 데이터를 활용하여 문제없이 서버가 가동

가용 영역?  각 리전(Region) 안에 존재하는 데이터 센터(IDC)

각각 개별적인 위치에 떨어져서 존재

리전? AWS에서 클라우드 서비스를 제공하기 위해서 운영하는 물리적인 서버의 위치

 

장기적인 보관 목적으로 스토리지를 사용하실 때는 Glacier를 사용하는 것이 효율적


 배포전략

Client 배포 

AWS서비스 중 하나인 S3를 이용해서 사용자에게 client application을 제공할수 있다.

 

지금까지 로컬 환경에서 자체 개발 서버(Create - react - app)를 이용해서 클라이언트 앱 실행

이제 클라이언트 앱을 정적 파일로 빌드하여 제공->S3이용해서 클라이언트를 배포한다.

 

빌드 ? 불필요한 데이터를 없애고, 여러 갈래로 퍼져있는 데이터들을 통합/ 압축하여 배포하기에 최적화된 상태

 

일반적 빌드 ? 소스코드를 실행 가능한 번들로 변환하는 컴파일 과정을 의미

웹 앱에서와같이 HTML, CSS, JS의 형태로 배포하는 경우는 다르다.(배포가능한 정적파일로 만들어줌)

 

정적(static)인 asset이란, 변하지 않는 파일이며 서버에 요청되었을 때 그대로 반환될 수 있는 파일

 

빠르게 서비스 제공하기

AWS에서 제공하는 CDN 서비스인 CloudFront를 통해서 각지의 데이터 센터에 데이터를 분산시켜서 저장-> 

가까운 지역에서 데이터를 주는 방식으로 사용자에게 더 빠르게 서비스를 제공

 

Server Application은 어떻게 배포?

AWS EC2 서비스를 통해 서버를 구성하고 서비스를 제공

 

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

 

S3, EC2를 이용해서 배포된 서비스는  긴 도메인 주소를 통해 접근

AWS에서 제공하는 Route 53 서비스를 이용->메인 주소를 통해서 서비스에 접근


Deploy

Deveplopment -> Integration -> staging -> production

Deveplopment

각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정

더미 데이터 이용

 

Integration

각자의 컴퓨터에서 작성한 코드를 합치는 과정

코드 간에 conflict가 없는지 확인

 

staging 

실제 출시 단계인 Production 단계와 가장 유사한 환경에서 테스트를 진행

실제 데이터를 복사해서 문제가 있지 않은지 등 다양한 환경에서 테스트를 진행

모든 관계자들에게 검증하는 단계

 

production

개발된 서비스를 출시하는 단계

사용자가 접속할 수 있는 Production 환경에서 코드를 구동하고 서비스를 제공