아마존 웹 서비스

아마존 웹 서비스
AmazonWebservices Logo.svg
웹사이트 정보
URL aws.amazon.com
운영 Amazon.com
시작일 2006년
영리여부 영리

아마존 웹 서비스(Amazon Web Services)는 2006년부터 아마존닷컴에서 운영을 시작한 클라우드 서비스다. 약칭은 AWS.

세계 최대의 클라우드 서비스이다. 애플iCloud와 리브레 위키도 AWS에서 돌아가고 있으니... 최고경영자이자 설립자인 제프리 베조스가 사업 확장과 비효율적인 자원 이용에 대해 고민하다가 문득 플랫폼이라는 아이디어를 떠올리고 갑자기 필받아서 직원들에게 해고 협박을 하며 시작되었다. 그러니까 블랙 프라이데이나 기타 시즌에 몰리는 어마어마한 트래픽을 감당하기 위하여 어마어마한 서버를 구축해뒀는데, 비수기 때는 그 어마어마한 서버가 그냥 놀고만 있는 게 아니꼬와서 어마어마한 유지비만 먹는 애물단지라 어떻게든 이용하려다가 덤으로 플랫폼까지 구축하고 업계의 선두주자가 된 것이다. AWS의 성공으로 나타난 후발주자로 마이크로소프트 애저, 구글 클라우드 플랫폼 등이 있지만 둘 다 AWS 만큼의 성공을 거두진 못했다.

Free Tier[편집 | 원본 편집]

AWS에 처음 등록하면 12개월간 제한된 서비스를 무료로 체험할 수 있다. 이것을 프리 티어(Free Tier)라고 부른다.

주의사항[편집 | 원본 편집]

이렇게만 보면 1년 동안 좋은 서비스를 무료로 제공하는 혜자처럼 보일테지만, 함정이 있다. 곳곳에 과금 요소들이 숨어 있다는 것. 프리 티어를 등록하기 전에 카드 번호 등의 결제 정보를 미리 아마존에 제공해야 하고, 과금되는 서비스를 이용하면 그 카드로 결제가 돼 버린다. 게다가 아마존이 제공하는 서비스 설명과 과금요소 설명은 심히 난해해서, 실수로 요금을 납부하길 노리는 듯 보인다. 한글 번역 탓이라기엔 영문 설명도 마찬가지(...). Free-Tier에서 제공되는 범위를 벗어나는 서비스를 이용해도 경고를 해주질 않는다!

리전과 가용 영역[편집 | 원본 편집]

리전(Region)은 지리적인 단위로, 각 리전 사이의 AWS 서비스는 완전히 분리되어 있다. 서울 리전에서 EC2를 만들었다면 파리 리전으로 설정을 바꾸면 해당 EC2 인스턴스는 보이지 않는다. 이 리전은 몇 개의 가용 영역(Availability Zone; AZ)으로 물리적으로 분리되어 있다. 이 가용 영역 간에는 전용선을 통해 빠른 통신이 가능하다. 여러 가용 영역에서 서비스를 분산하여 처리하도록 잘 구성해 놓았다면 하나의 가용 영역에 장애가 발생하더라도 서비스의 중단을 피할 수 있다. 1분이라도 서비스가 중단되면 손해가 막심한 거대한 서비스라면 특히 눈여겨봐야 한다. 반면, AZ간의 통신에는 비용이 부과되기 때문에 (인터넷과의 통신보다는 저렴하다) 규모가 작은 서비스를 만들 때는 같은 가용 영역에 각종 인스턴스를 몰아놓는 것이 좋다.

서비스[편집 | 원본 편집]

AWS에서 제공하는 클라우드 서비스는 매우 다양하다. 가상 컴퓨트 머신 EC2, DB서버 RDS부터 개발을 위한 가상 안드로이드 기기까지 정말 다양한 기능을 제공한다. 과금되는 요소도 정말 다양하다. 서비스 작명법이 조금 독특한데, 이니셜을 따온 뒤 겹치는 글자가 있으면 하나만 적고 숫자를 붙이는 식이다. 예로 Elastic Compute Cloud는 C가 2개라 EC2이다. 작명법의 또 다른 특징은 Elastic찰지구나이란 단어를 매우 좋아한다는 것. 그냥 고정IP를 엘라스틱 IP라고 하는 등, 붙일 건덕지가 조금이라도 있으면 이 형용사를 집어넣는다.

서비스들의 공통적인 특징으로는 쓰는 만큼 돈을 내는 On-Demand 과금 방식이라는 것이 있다. 물론 일정 기간동안 꾸준하게 사용하겠다는 약정을 걸고 더 저렴하게 사용하는 방법도 있다.

컴퓨팅[편집 | 원본 편집]

EC2[편집 | 원본 편집]

Elastic Compute Cloud

가상 컴퓨트 인스턴스로, 고성능의 연산장치가 필요할 때도 쓰고 일반적인 서버를 구축할 때도 쓴다. AWS에서 웹 서버를 돌린다면 대부분은 EC2를 기반으로 한다. 쓰는 만큼 과금되는 구조이기 때문에 직접 구축한다면 수 천 만 원이 들어갈 컴퓨터를 필요할 때만 가동하는 식으로 저렴하게 이용할 수도 있다. HVM 인스턴스에선 오토 스케일링이라고 자동으로 필요한 성능에 따라 유동적으로 인스턴스의 성능을 향상시키거나 감소시켜서 지출을 줄일 수도 있다. 이는 클라우드 기반이기 때문에 가능한 부분.

전반적으로 소프트웨어 지원이 우월하다는 것도 또 다른 특징이다. 타 업체보다 제공하는 응용 프로그램(스택)의 수가 매우 많으며, EC2에서 구동되는 리눅스 운영체제들은 Repository가 아마존 서버 내부의 고속 네트워크로 연결되어있기 때문에 다운로드 속도가 미칠듯이 빠르다. 아마존 웹 서비스에 특화된 레드햇 기반 자체 리눅스 운영체제도 있다.

여기서 설명하는 다른 서비스들의 경우, EC2 위에서 돌아가도록 되어 있는 것들이 많다. 즉, RDS는 사실 EC2에 MySQL과 같은 DBMS를 자동으로 설치하고, 각종 DB에 관한 설정만 API와 웹 인터페이스로 노출시켜 놓은 것이다.

Elastic IP[편집 | 원본 편집]

고정 IP 서비스. EC2 인스턴스가 기본적으로 제공하는 아이피 주소는 인스턴스를 재실행하면 변경된다. 이러면 서비스를 운영하기 귀찮아지기 때문에, 바뀌지 않는 IP를 할당해 주는 서비스가 바로 Elastic IP이다. 이 서비스는 Free Tier에서도 제공하지만, 아이피를 받아놓고 실행 중인 인스턴스에 물려놓지 않으면 과금되므로 주의. 쓰지 않는 IP의 반납을 유도하기 위함인 듯 하다. 소액이지만 데이터 전송에 추가 요금이 붙는다. Free Tier에서도!

Security Group[편집 | 원본 편집]

AWS 인터페이스 내에서는 EC2 밑에 들어 있지만, RDS나 ElastiCache등의 다양한 서비스들에 사용된다. 네트워크 방화벽 서비스로, 각 인스턴스로 들어오거나 나가는 연결을 차단하거나 허용할 수 있다. 인터넷에서 웹 서비스를 제공한다면 TCP 프로토콜의 80, 443 포트로 들어오는 연결을 모두에게 허용하는 식이다. 보안 그룹의 대상은 CIDR (IP 주소의 범위를 표기하는 방법)과 더불어 다른 보안 그룹을 지정할 수 있다. EC2와 RDS를 연결하는 경우, RDS 인스턴스에 자신만의 보안 그룹을 지정해 놓고, 사용하는 포트(MySQL 등은 3306)를 EC2의 보안 그룹에 대해서 허용하도록 지정하면, 혹시 EC2의 아이피 주소가 변경되더라도 보안 그룹 설정을 변경할 필요가 없어 편리하다. 보안 그룹 자기 자신을 대상으로 지정할 수도 있기 때문에 포트와 대상들을 귀찮게 지정하기 싫다면 한 보안 그룹에 여러 인스턴스를 물려놓고 포트를 다 열어놓는 방법도 있다. 보안 그룹은 상태를 기억하기 때문에, 들어오는 연결이 허용되었다면 그에 대한 응답으로 나가는 연결은 설정과 관계 없이 허용된다. 반대 방향도 마찬가지.

Elastic Load Balancing[편집 | 원본 편집]

로드 밸런서 서비스. 줄여서 ELB라고 한다. EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수 등으로 들어오는 트래픽을 분산할 수 있다. 여러 개의 EC2를 이용해서 서버 부하를 나눠야 할 경우 ELB를 이용해서 어떤 인스턴스가 트래픽을 처리해야 하는지 결정하고 넘겨줄 수 있다. 대상을 정기적으로 검사하다가, 어떤 문제로 인해 죽은 대상이 있는 경우 살아 있는 대상에만 트래픽을 라우팅하는 기능을 제공하여 높은 가용성에 도움이 된다.

Application Load Balancer, Network Load Balancer, Classic Load Balancer의 세 종류를 제공한다. Application Load Balancer는 ALB라고 줄여 부르기도 한다. 일반적으로 권장되는 유형으로서, HTTP, HTTPS 트래픽을 처리하는데 특화되어 있다. 경로, HTTP 헤더, HTTP 메서드, 쿼리스트링, 클라이언트 IP 주소와 같은 다양한 규칙을 이용해 트래픽을 전달하거나, 리다이렉트하거나, 특정한 고정된 응답을 내보내는 등 매우 다양하고 유용한 고급 기능들을 제공한다. 또한 AWS Certificate Manager(ACM)에서 관리하는 TLS 인증서를 매우 쉽게 연동하여 HTTPS를 활성화할 수 있다. Classic Load Balancer는 ALB 이전 세대의 로드 밸런서로, 비교적 단순한 기능을 제공하며 HTTPS 인증 등은 제공하지 않는다. 새로 서비스를 구축한다면 굳이 쓸 필요 없는 물건이다. Network Load Balancer는 TCP, UDP 레벨에서 작동하는 로드 밸런서로서, 복잡한 규칙은 지정할 수 없으나 초당 수백만 개의 요청을 매우 빨리 처리할 수 있다고 한다.

Lightsail[편집 | 원본 편집]

가상 서버와 데이터베이스를 EC2나 RDS보다 쉽게 이용할 수 있도록 하는 서비스이다. 시간별이 아닌 월별로 요금이 결정되는데, 가상 서버는 월 3.50달러, 데이터베이스는 15달러 요금제부터 존재한다. 로드 밸런서는 월 18달러 고정이다. 트래픽을 3.5 달러 서버에서도 1TB를 제공하여 꽤 넉넉한 편이다. 다만 기본 제공량을 초과하면 서울 리전 기준으로 0.13 USD/GB로 상당히 비싸기 때문에 트래픽을 적절히 예상하고 플랜을 구성해야 한다. 초기 인스턴스에는 OS만 설치할 수도 있고, 워드프레스처럼 미리 제공되는 소프트웨어를 이용할 수도 있다.

요금을 예측하기 쉽고 간편하기 때문에 간단한 워드프레스 블로그를 만든다든지 할 때 유용하다. 웹 호스팅에 익숙하던 사람들에게 좋다.

데이터베이스[편집 | 원본 편집]

RDS[편집 | 원본 편집]

Relational Database Service

관계형 DB인스턴스 서비스이다. EC2를 DB서버로 돌리는 것도 가능하지만 RDS는 데이터베이스에 특화된 기능들을 제공하며, 백업이나 기타 서버 관리를 AWS에서 자동으로 해주기 때문에 편리한 점이 있다. 제공하는 DB엔진으로는 Aurora(아마존 자체 엔진), MySQL, MariaDB, PostgreSQL, Oracle, MS SQL이 있다.

Multi-AZ라는 기능이 있는데, 같은 리전 내의 2개의 가용 영역에서 RDS를 실행시키는 것이다. 하나는 실제 트랜잭션을 처리하고, 나머지 하나는 백업용으로 데이터만 복제해놓고 있는다. 그러다 실제 트랜잭션을 처리하던 인스턴스가 있는 가용 영역에 장애가 발생한 경우, 백업용 인스턴스가 대신 원래 하던 일을 수행하도록 하여 서비스가 중단되는 시간을 최소화한다. 또한 데이터베이스의 백업, 업그레이드 같은 작업이 서비스에 영향을 미치지 않고 수행된다. 다만 비용이 두 배로 청구되므로, 고가용성이 중시되는 경우가 아니라면 Multi-AZ 기능을 사용하지 않아도 된다.

Amazon Aurora[편집 | 원본 편집]

아마존에서 만든 MySQL 및 PostgreSQL 호환 RDBMS. MySQL보다 5배, PostgreSQL보다 3배 빠르다고 주장하고 있다. 단 IO 횟수만큼 돈을 받기 때문에 비용 부담이 클 수 있다.

ElastiCache[편집 | 원본 편집]

Memcached 또는 Redis를 기반으로 하는 인-메모리 캐시 인스턴스이다. 독립된 EC2 인스턴스에 따로 Memcached등을 설치하여 사용할 수도 있지만 RDS와 마찬가지로 ElastiCache 쪽이 더 경제적이다. Free-Tier라면 사용해보는 것이 좋다. 노드 여러 개를 하나의 엔드포인트로 묶어줄 수도 있다.

스토리지[편집 | 원본 편집]

S3[편집 | 원본 편집]

Simple Storage Service

클라우드 스토리지 서비스. 드롭박스를 생각하면 된다. 이름은 Simple이지만 전혀 심플하지 않다. 기능이 다양하다. 정적 웹 페이지를 호스팅할 수 있으며, 다른 AWS서비스와 연결하여 데이터 스토리지로 사용할 수도 있다. AWS의 각종 로그나 정보를 여기에 저장하도록 설정하는 것도 가능하다.

보안, 자격 증명 및 규정 준수[편집 | 원본 편집]

IAM[편집 | 원본 편집]

Identity and Access Management

권한 설정 기능. AWS의 여러 서비스들에 제한적으로 접근할 수 있는 사용자 생성을 할 수 있다. AWS에서는 이메일 주소를 포함한 루트 계정보다는 권한을 분배한 IAM 계정으로 접속하는 것을 권장한다. 다른 AWS 루트 계정에 속한 IAM 계정에게 권한을 줄 수도 있다. 이걸로 Free Tier 계정을 여러 개 엮으면 높은 확률로 차단과 함께 결제 정보를 5일 내에 팩스로 보내라는 이메일을 받게 된다.

이러한 사용자의 개념은 실제 사람에만 국한되는 것은 아니며, AWS 내외의 각종 리소스가 서로 상호작용할 때도 사용된다. 예를 들어 EC2 인스턴스가 S3에 접근할 때는 여기서 계정을 생성해 고유의 액세스 키를 지정하여 그 계정에 부여된 권한만 행사할 수 있도록 할 수 있다.

네트워킹 및 콘텐츠 전송[편집 | 원본 편집]

CloudFront[편집 | 원본 편집]

CDN(Content Delivery Network) 서비스. 전세계 각 지역에 위치한 엣지 서버로 데이터를 복제해서, 사용자에게 빠른 속도로 데이터를 전달할 수 있도록 하는 서비스이다. Cloudflare의 유료 버전 정도. 트래픽 비용을 줄여주는 Cloudflare와는 정 반대로, S3 등에서 데이터가 그냥 나갈때보다 트래픽 비용이 비싸다. 정말로 데이터를 빨리 전송할 필요가 있을 때 사용하는 것이 좋다. S3를 이용해 정적 웹 사이트를 호스팅할 때는 도메인과 HTTPS 설정 등의 문제로 CloudFront를 중간에 둬야 할 수도 있다.

분석[편집 | 원본 편집]

Elasticsearch Service[편집 | 원본 편집]

이름 그대로 Elasticsearch 서비스. 여기 Elastic은 아마존이 넣은 게 아니다. Elasticsearch는 검색 엔진으로, 특히 위키 문서의 본문처럼 긴 텍스트를 검색하는데 유용한 소프트웨어이다. 그 외에도 다양한 텍스트 분석 및 검색 기능을 지원한다. Elasticsearch를 시각화해주는 Kibana라는 툴이 기본적으로 같이 설치되어 있다. RDS와 마찬가지로 2-AZ 기능을 이용해 가용성을 높일 수 있으며, 인스턴스 개수를 쉽게 늘리고 줄일 수 있어 확장성이 좋다.

Amazon Linux[편집 | 원본 편집]

아마존에서 레드햇 엔터프라이즈 리눅스를 기반으로 개발중인 운영체제이다. 사실상 RHEL과 거의 같다. Amazon Linux 2022 버전부터는 페도라를 기반으로 자체적인 5년 지원 기간을 가진다.

각주