[TIL] AWS EC2 & S3 & RDS 이론 정리

Captainjack·2021년 6월 4일
0

TIL

목록 보기
42/258

Amazon Web Service(AWS)는 배포를 위한 클라우드 서비스로 굉장히 유명하다.

Amazon EC2(Elastic Compute Cloud)

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

AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것.

EC2의 Elastic은 탄력있는, 유연한이라는 뜻인데
사용한 만큼의 비용을 지불하는 피씨방과 같은 의미로 썼다고 한다.

비용적인 뿐만아니라 성능과 용량도 자유롭게 설정 할 수 있다.

즉, EC2 서비스는 AWS에서 비용, 성능, 용량면에서 탄력적인 클라우드 컴퓨터를 제공하는 서비스라고 할 수 있다.

EC2 서비스의 장점

  1. 구성하는 데 필요한 시간이 짧다 (직접 컴퓨터를 배송하고 설치하고 준비하려면 필요한 최소의 시간이 필요)

  2. 다양한 운영체제 선택 가능(AMI를 통해 운영체제 선택 가능)

  3. 운영체제 뿐만 아니라 CPU, RAM, 용량까지 설정 가능

Amazon EC2에서 AWS에서 빌리는 컴퓨터를 Instance라고 한다.

NOTE: 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM 혹은 런타임 등이 구성된 컴퓨터를 빌리는 것

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

AMI(Amazon Machine Image)

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

이미지 종류로는 단순히 운영체제(윈도우, 우분투 리눅스 등)만 깔려있는 템플릿을 선택가능하고,
다른 특정 런타임이 설치되어있는 템플릿이 제공되는 경우도 있다.
(우분투 + node.js, 윈도우 + JVM 등)

즉 AWS에서 빌릴 PC는 사용ㅇ용도에 맞게 운영체제, 런타임 등이 구성된 셋팅을 선택 가능.
예)우분투 20.04LTS로 인스턴스 구성

NOTE: 셋팅되어 있는 AMI 이외에도 필요에 따라 직접 AMI를 구성할 수도 있습니다.


RDS(Relational Database Service)

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

EC2 인스턴스에서 Mysql과 같은 관계형 데이터 베이스 엔진을 설치하는 것과 RDS를 이용하는 것의 차이는??

렌터카 회사에서 대여한 차량과 개인 소유 차량으로 생각하면 이해하기 편하다!

개인 소유 차량이 잔 고장이 나서 카센타로 간다거나, 보험처리 같은 일들이 전부 자기가 처리해야하지만 RDS를 이용하면 모든 일들을 렌터카 회사에서 전부 대신 처리해주기 때문에 따로 시간과 돈을 쓰지 않아도 관리가 가능하다.

즉, RDS를 이용하면 데이터베이스 유지보수와 관련된 일들을 RDS에서 전적으로 자동 관리한다.

RDS의 장점

  1. 데이터베이스 유지보수와 관련된 일들을 RDS에서 전적으로 자동 관리한다.

  2. 다양한 데이터 베이스 엔진 선택지 제공(필요와 목적에 맞게 데이터베이스 엔진을 선택하여 효율성을 높일 수 있다.)


클라우드 스토리지란?

인터넷 공간에 데이터를 저장하는 저장소
ex)Google Drive, Naver MYBOX, Microsoft Onedrive...

클라우드 스토리지 서비스의 장점

  1. 뛰어난 접근성(언제어디서나 접근 가능)
  2. 컴퓨터뿐만 아니라 다른 전자기기도 접근 가능

S3(Simple Storage Service)

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

S3의 장점

  1. 뛰어난 접근성(기존 클라우드 스토리지 장점과 같다.)
  2. 확장성(스토리지 규모 확장/축소를 많은 시간과 비용을 들이지 않고 가능)
    -> 돈만 내면 저장공간 무한 확장가능(???????)
  3. 내구성
    -> 저장된 파일이 유실될 가능성이 매우 적다(길을 걷다가 벼락을 맞을 약 0.0000007%의 확률이 S3에 저장된 파일을 잃어버릴 확률의 700배라고 함)
  4. 가용성
    -> 가용성이 높으면 스토리지에 저장된 파일들을 정상적으로 사용할 수 있는 시간이 길어진다.

NOTE: S3는 연간 99.99%의 스토리지 가용성을 보장하도록 설계가 되어 있습니다. 이는 다른 말로 1년 동안 S3에 파일을 저장했을 시, 8.76 시간 동안만 스토리지를 이용하는 데 있어서 장애가 발생한다는 뜻

  1. 다양한 스토리지 클래스를 제공
    -> 어떤 목적으로 저장소를 활용하는지에 따라 다르게 설정할 수 있음

대표적으로 Standard 클래스, Glacier 클래스

S3 Standard는 가장 일반적으로 사용되는 스토리지 클래스이며 데이터에 자주 액세스해야 할 경우 사용

  1. 데이터에 빠른 속도로 접근가능하며 액세스 요청에 대한 처리 속도가 빠름.
  2. 대신데이터를 오래 보관하면 보관 비용이 비싸기 때문에 오래 보관하면 비효율적

Glacier 클래스는 데이터의 장기보관 목적, 데이터를 보관하는 데 드는 비용이 저렴

-> 저장된 데이터에 액세스하는 속도가 느리지만 데이터를 보관하는 비용이 저렴

이 외에 존재하는 스토리지 클래스는 ....
Standard-IA, One Zone-IA, S3 Glacier Deep Archive 등등


  1. 정적 웹 사이트 호스팅이 가능

S3에서는 버킷을 통해 정적 웹 사이트 호스팅이 가능하다.

정적 파일: 서버의 개입 없이 클라이언트에 제공될 수 있는 파일

동적 파일: 클라이언트가 서버에 요청을 보내면, 서버가 요청에 맞추어 그 자리에서 생성한 파일이 동적 파일

웹 호스팅(Web Hosting): 서버의 한 공간을 빌려주어 웹 사이트의 배포, 운영이 가능하게 만들어주는 서비스

S3에서 버킷은 사용자들이 정적 웹 사이트를 배포할 수 있는 공간을 제공한다.
버킷이라는 저장 공간에 정적 파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트를 배포 할 수 있다.

버킷

  1. 버킷은 파일을 담는 바구니(최상위 디렉토리이며 모든 파일은 버킷안에 저장해야 함)
  2. 무한히 많은 파일을 저장 가능
  3. 버킷의 이름은 각 리전(생성 지역)에서 고유해야 함(게임 캐릭터 닉네임 정할 때랑 같음)
  4. 버킷의 정책을 생성하여 액세스 권한을 부여 가능

객체

  1. 객체는 버킷에 담기는 파일(JS 객체처럼 키-값 페어 형식으로 데이터를 저장함)
  2. 객체는 파일과 메타데이터로 구성(파일의 값은 실제 데이터를 저장하며, 객체의 값은 데이터의 최대크기 5TB)
    -> 메타데이터는 객체의 생성일, 크기, 유형과 같은 객체에 대한 정보가 담긴 데이터
  3. 모든 객체는 고유한 키를 가짐(파일의 키는 각각을 고유하게 만들어주는 식별자 역할을 하며, 파일의 키를 이용하여 원하는 객체를 검색 가능)
  4. URL 주소를 통해서 객체에 접근 가능(모든 객체는 고유한 URL 주소를 가짐)
  5. URL 주소 형식 http://[버킷의 이름].S3.amazonaws.com/[객체의 키]

NOTE: EC2, RDS, S3은 공통적으로 '높은 가용성'과 '높은 내구성'을 보장한다.


배포

S3를 이용해서 사용자에게 client application을 제공가능
클라이언트를 위해 EC2인스턴스를 사용자에게 주는 것이아닌 클라이언트를 S3를 이용하여 정적파일로 빌드하여 배포한다.

이때 필요한 것이 빌드

빌드

  1. 불필요한 데이터를 없애고, 통합/압축하여 배포하기 최적화된 상태를 만드는 것
  2. 데이터의 용량이 줄어들고 웹 사이트 로딩 속도가 빨라진다

일반적인 의미의 빌드는 소스코드를 실행 가능한 번들로 변환하는 컴파일 과정을 의미합니다.(컴퓨터에게 친숙한 방식) 웹 앱에서와같이 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 서비스를 이용하면
직관적인 도메인 주소를 통해서 서비스에 접근하도록 할 수 있다.


profile
til' CTF WIN

0개의 댓글