본문 바로가기

TIL ( CODESTATES)

AWS 클라우드 컴퓨팅 서비스 (EC2, RDS, S3)

Amazon Web Service에서 제공하는 클라우드 컴퓨팅 서비스에 대해 알아본다.

 

EC2

Elastic Compute Cloud 

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

EC2 서비스는

  • 사용한만큼 비용을 지불하고
  • 필요에 따라 성능, 용량을 자유롭게 조절할 수 있기 때문에

이름처럼 탄력적인 클라우드 컴퓨터를 제공하는 서비스라고 할 수 있다.

 

 

EC2 서비스의 장점

  • 구성하는 데에 필요한 시간이 짧다.
    • 직접 컴퓨터를 물리적으로 구매해서 구성할 필요가 없으니까
  • 다양한 운영체제에 대한 선택이 가능하다. (ex: redhat, suse, ubuntu, windows, linux)
    • EC2에서는 AMI라는 다양한 템플릿을 제공하고 있어서 필요에 따라 손쉽게 운영체제를 선택하고 구성할 수 있다.
  • 운영체제 뿐만 아니라 CPU와 RAM, 용량까지도 구성할 수 있다.

 

 

EC2 인스턴스 생성

AWS에서 빌리는 컴퓨터를 instance라고 한다. 

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

 

빌린 컴퓨터는 아마존에서 만들어 놓은 데이터센터(인프라)에 만들어져 있으므로 컴퓨터를 조작하기 위해서는 인터넷을 이용해야 한다.

사용 방법은 웹 서버를 설치하고 웹 서버를 통해 사용자가 웹브라우저로 요청하는 서비스를 제공하는 것이다.

 

 

AMI

Amazon Machine Image

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

AWS에서 빌린 컴퓨터는 용도에 맞게 운영체제(ex. windows, ubuntu), 런타임(ex. ubuntu+node.js, windows+JVM) 등이 구성된 setting을 선택할 수 있다.

 

 

 

 

 


RDS

Relational Database Service

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

EC2 인스턴스에 관계형 데이터베이스 엔진을 설치해서 데이터를 관리할 수도 있지만 RDS를 통해 데이터를 관리할 수도 있다.

 

EC2 인스턴스로 데이터를 관리할 경우

EC2 인스턴스에서는 AWS에서 데이터베이스 관련 관리를 담당하는 부분이 매우 제한적이고, 사용자가 시간을 들여 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업을 해야하는 번거로움이 있다.

또한 가용성과 내구성이 확보되지 않기 때문에 데이터베이스에 저장된 데이터가 유실되거나 정상적으로 사용하지 못할 수도 있으며, 데이터베이스의 규모를 확장하기 어렵다.

 

 

 

 

 

RDS로 데이터를 관리할 경우

데이터베이스 유지보수와 관련된 일들을 AWS에서 관리한다. 따라서 사용자가 해야할 일은 초기 설정을 제외하고 데이터베이스에 저장된 데이터를 관리하는 일 밖에 없기에 큰 편의성을 느낄 수 있다.

이 외에도 RDS에서는 다양한 데이터베이스 엔진의 선택이 가능하다. (ex. oracle, amazon aurora, sql server, mysql...)

 

 

 

 

 

 

 

S3

Cloud Storage

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

Google Drive, Naver Bybox, MS Onedrive

웹 환경이라면 언제 어디서든 저장된 파일에 접근할 수 있다. 즉, 컴퓨터 외 다른 전자 기기로도 접근이 가능하다.

 

 

Simple Storage Service

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

 

 

S3 사용 시 이점

  • 확장성이 높다.
    • 데이터를 무한히 저장 가능하다. 따라서 시간과 수고를 들이지 않고 storage 규모를 확장/축소할 수 있다.
  • 비용 측면에서 효율적이다. 
    • 사용한 만큼만 비용을 지불하면 된다.
  • 내구성이 좋다.
    • 저장되어 있는 파일을 유실할 가능성이 적다.
  • 가용성이 높다.
    • 가용성이 높으면 스토리지에 저장되어 있는 파일들을 정상적으로 사용할 수 있는 시간이 길어진다. S3는 연간 99.99%의 스토리지 가용성을 보장한다.
  • 다양한 Storage Class를 제공한다.
    • S3 Glacier의 경우 데이터의 장기 보관 목적으로 사용하며 액세스하는 속도는 느리지만 비용이 매우 저렴하다.
  • 정적 웹 사이트 호스팅이 가능하다.
    • 정적 웹 페이지는 파일 서버에 미리 저장된 파일을 그대로 사용자에게 전달하는 웹 페이지이다.
    • 웹 호스팅이란 서버의 한 공간을 빌려주어 웹 페이지의 배포, 운영이 가능하세 만들어주는 서비스이다.
    • S3에서는 버킷을 통해 정적 웹 사이트 호스팅이 가능하다. 즉, 버킷이 사용자들이 웹페이지를 배포할 수 있는 공간을 제공한다. 

 

 

 

 

*AWS 서비스의 공통적인 특징인 '높은 가용성'과 '높은 내구성'은 어떻게 가능할까?

AWS는 세계 여러 나라에 클라우드 서비스를 제공하기 위해 물리적인 서버를 운영하고 있는데 그 서버들의 위치를 'Region'이라 한다.  그 Region 안에 위치한 데이터센터(IDC)를 가용 영역(Availability Zone)이라고 한다. 가용 영역은 각각 개별적인 위치에 떨어져 존재하므로 한 곳의 가동이 불가능해지더라도 다른 가용 영역에 백업 해 놓은 데이터를 활용하여 서버가 문제없이 가동되도록 한다. 이런 가동 방식 덕분에 AWS에서 제공하는 서비스들은 높은 가용성과 내구성을 보장한다.

 

 

*버킷이란 무엇일까?

버킷이란 S3에서 파일을 저장하는 최상위 디렉토리이다. S3에서 저장되는 모든 파일은 버킷 안에 저장되어야 하고 버킷에는 무한한 양의 파일을 저장 할 수 있다. 버킷의 이름은 각 Region에서 고유해야 한다. 또한 버킷 정책을 생성하여 해당 버킷에 대한 다른 유저의 접근 권한을 수정할 수 있다.

 

 

*객체란 무엇일까?

버킷에 담기는 파일을 객체라고 부른다. 저장할 때 키-값 쌍으로 데이터를 저장하기 때문이다. 

객체는 고유한 URL주소를 가지며, 파일과 메타데이터로 구성된다. 먼저 파일은 키-값쌍으로 데이터를 저장한다. 이 때 값에는 실제 데이터를 최대크기 5TB까지 저장할 수 있으며, 키는 각각의 객체를 고유하게 만들어주는 식별자 역할을 한다. 

메타데이터는 객체의 생성일, 크기, 유형 등 객체에 대한 정보가 담긴 데이터이다.

객체의 URL주소 형식은 http://[버킷이름].S3.amazonaws.com/[객체의 키] 이다.