codestates/section4
Unit9 - [Deploy] Amazon Web Service
나아눙
2023. 3. 31. 07:56
Cloud Computing & Deployment
배포를 위한 클라우드 서비스 Amazon Web Service(이하 AWS)를 이용해서 웹 애플리케이션을 배포
- 신속한 인프라 구축
- 유연한 인프라 관리
- 예상치 못한 트래픽 폭주 대응
- 손쉬운 글로벌 서비스
- 강력한 보안과 장애 없는 서비스
- 합리적인 요금제
기존 서버의 방식
서버실과 같은 곳에 컴퓨터 배치
=> 서버가 요청에 대한 수용 능력 한계
같은 공간에 더 많은 컴퓨터를 추가 혹은 성능을 높임
문제점
첫번째 주기적인 관리 필요
두번째 공간 한계
=> 데이터 센터 등작
물리적인 컴퓨터 대여
즉 서버의 자원과 공간, 및 네트워크 환경을 제공(온프레미스)을 빌려 사용하는 클라우드 컴퓨팅이 시작
현대의 클라우드 컴퓨팅(데이터 센터와 비슷한 역활)
가상 컴퓨터를 대여
컴퓨팅 능력을 유연하게 조절
사용한 만큼의 요금만 지불
컴퓨터의 스냅샷(이미지) 을 이용해 다른 컴퓨터로 즉시 이주(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이란, 변하지 않는 파일이며 서버에 요청되었을 때 그대로 반환될 수 있는 파일