Amazon Web Service(AWS)는 배포를 위한 클라우드 서비스로 굉장히 유명하다.
AWS에서 제공하는 클라우드 컴퓨팅 서비스
AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것.
EC2의 Elastic은 탄력있는, 유연한이라는 뜻인데
사용한 만큼의 비용을 지불하는 피씨방과 같은 의미로 썼다고 한다.
비용적인 뿐만아니라 성능과 용량도 자유롭게 설정 할 수 있다.
즉, EC2 서비스는 AWS에서 비용, 성능, 용량면에서 탄력적인 클라우드 컴퓨터를 제공하는 서비스라고 할 수 있다.
구성하는 데 필요한 시간이 짧다 (직접 컴퓨터를 배송하고 설치하고 준비하려면 필요한 최소의 시간이 필요)
다양한 운영체제 선택 가능(AMI를 통해 운영체제 선택 가능)
운영체제 뿐만 아니라 CPU, RAM, 용량까지 설정 가능
Amazon EC2에서 AWS에서 빌리는 컴퓨터를 Instance라고 한다.
NOTE: 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM 혹은 런타임 등이 구성된 컴퓨터를 빌리는 것
아마존 EC2를 통해 웹서버를 설치하고 웹 서버를 통해서 사용자가 웹 브라우저를 통해 요청하는 서비스를 제공
AMI는 소프트웨어 구성이 기재된 템플릿
이미지 종류로는 단순히 운영체제(윈도우, 우분투 리눅스 등)만 깔려있는 템플릿을 선택가능하고,
다른 특정 런타임이 설치되어있는 템플릿이 제공되는 경우도 있다.
(우분투 + node.js, 윈도우 + JVM 등)
즉 AWS에서 빌릴 PC는 사용ㅇ용도에 맞게 운영체제, 런타임 등이 구성된 셋팅을 선택 가능.
예)우분투 20.04LTS로 인스턴스 구성
NOTE: 셋팅되어 있는 AMI 이외에도 필요에 따라 직접 AMI를 구성할 수도 있습니다.
AWS에서 제공하는 관계형 데이터 베이스 서비스
EC2 인스턴스에서 Mysql과 같은 관계형 데이터 베이스 엔진을 설치하는 것과 RDS를 이용하는 것의 차이는??
렌터카 회사에서 대여한 차량과 개인 소유 차량으로 생각하면 이해하기 편하다!
개인 소유 차량이 잔 고장이 나서 카센타로 간다거나, 보험처리 같은 일들이 전부 자기가 처리해야하지만 RDS를 이용하면 모든 일들을 렌터카 회사에서 전부 대신 처리해주기 때문에 따로 시간과 돈을 쓰지 않아도 관리가 가능하다.
즉, RDS를 이용하면 데이터베이스 유지보수와 관련된 일들을 RDS에서 전적으로 자동 관리한다.
데이터베이스 유지보수와 관련된 일들을 RDS에서 전적으로 자동 관리한다.
다양한 데이터 베이스 엔진 선택지 제공(필요와 목적에 맞게 데이터베이스 엔진을 선택하여 효율성을 높일 수 있다.)
인터넷 공간에 데이터를 저장하는 저장소
ex)Google Drive, Naver MYBOX, Microsoft Onedrive...
클라우드 스토리지 서비스의 장점
AWS에서 제공하는 클라우드 스토리지 서비스
NOTE: S3는 연간 99.99%의 스토리지 가용성을 보장하도록 설계가 되어 있습니다. 이는 다른 말로 1년 동안 S3에 파일을 저장했을 시, 8.76 시간 동안만 스토리지를 이용하는 데 있어서 장애가 발생한다는 뜻
대표적으로 Standard 클래스, Glacier 클래스
S3 Standard는 가장 일반적으로 사용되는 스토리지 클래스이며 데이터에 자주 액세스해야 할 경우 사용
Glacier 클래스는 데이터의 장기보관 목적, 데이터를 보관하는 데 드는 비용이 저렴
-> 저장된 데이터에 액세스하는 속도가 느리지만 데이터를 보관하는 비용이 저렴
이 외에 존재하는 스토리지 클래스는 ....
Standard-IA, One Zone-IA, S3 Glacier Deep Archive 등등
S3에서는 버킷을 통해 정적 웹 사이트 호스팅이 가능하다.
정적 파일: 서버의 개입 없이 클라이언트에 제공될 수 있는 파일
동적 파일: 클라이언트가 서버에 요청을 보내면, 서버가 요청에 맞추어 그 자리에서 생성한 파일이 동적 파일
웹 호스팅(Web Hosting): 서버의 한 공간을 빌려주어 웹 사이트의 배포, 운영이 가능하게 만들어주는 서비스
S3에서 버킷은 사용자들이 정적 웹 사이트를 배포할 수 있는 공간을 제공한다.
버킷이라는 저장 공간에 정적 파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트를 배포 할 수 있다.
버킷
객체
NOTE: EC2, RDS, S3은 공통적으로 '높은 가용성'과 '높은 내구성'을 보장한다.
배포
S3를 이용해서 사용자에게 client application을 제공가능
클라이언트를 위해 EC2인스턴스를 사용자에게 주는 것이아닌 클라이언트를 S3를 이용하여 정적파일로 빌드하여 배포한다.
이때 필요한 것이 빌드
빌드
일반적인 의미의 빌드는 소스코드를 실행 가능한 번들로 변환하는 컴파일 과정을 의미합니다.(컴퓨터에게 친숙한 방식) 웹 앱에서와같이 HTML, CSS, JS의 형태로 배포하는 경우는 다르게 웹 앱은 배포 가능한 정적 파일(static files)의 형태로 만들어야한다.
Client 배포를 진행할 때 사용자들이 더 빠르게 파일을 받을 수 있게 AWS에서 제공하는
CDN 서비스인 CloudFront를 통해 사용자에게 콘테츠를 더 빠르게 배포할 수 있다.
CloudFront는 각지의 데이터센터에 데이터를 분산시켜서 저장해 뒀다가 가까운 지역에서 데이터를 주는 방식이다.
그럼 각 사용자들은 S3와 CloudFront를 통해 Client Application을 제공 받았는데,
Client Application을 통해서 요청과 응답을 주고 받을 서버는 위에서 썻던 AWS EC2서비스를 통해 손쉽게 서버를 구성하고 서비스를 제공한다.
데이터베이스도 RDS서비스를 통해 배포한다.(RDS서비스를 이용하여 EC2를 통해 배포된 Server Application의 데이터를 저장, 제공하는 데이터베이스를 배포)
마지막으로 도메인!
기존에는 S3의 주소가 매우 길고 복잡해서 접근성이 낮기 때문에 도메인도
대기업마냥 바꿔줘야한다.
Route 53 서비스를 이용하면
직관적인 도메인 주소를 통해서 서비스에 접근하도록 할 수 있다.