본문으로 건너뛰기

AWS 기초 개념 정리 — 리전부터 IAM까지

·9 min read

AWS를 본격적으로 다뤄보기 전에, 기본 개념부터 머릿속에 정리해두기로 했다. 검색해가며 한 줄씩 짚었다.

온프레미스와 클라우드, 갈리는 지점

온프레미스는 조직 내부에 물리적으로 존재하는 IT 인프라와 데이터 센터다. 서버 한 대 한 대를 직접 들여놓고 직접 관리한다.

클라우드는 외부 공급업체가 관리하는 온라인 플랫폼에서 IT 리소스를 빌려 쓰는 모델이다. 사용량 기반으로 과금되고, 필요한 만큼 늘리고 줄이는 게 쉽다. 그래서 초기 자본 부담이 적고 비용 효율적이다.

리전은 데이터 센터가 놓인 지리적 위치

AWS의 리전(Region)은 데이터 센터 위치를 가리킨다. 서울, 도쿄, 버지니아처럼 전 세계에 분산돼 있고, 각 리전은 독립된 지리적 영역이다. 리전 간에 데이터를 옮길 수는 있지만, 기본적으로 한 리전 안에서 자원이 닫혀 있다.

VPC는 리전 안에 내가 그리는 네트워크

리전마다 하나 이상의 VPC(Virtual Private Cloud, 가상 사설 네트워크)를 만들 수 있다. VPC는 사용자가 직접 정의하는 가상 네트워크 환경이고, 그 안에 서브넷을 쪼개 배치한다.

서브넷은 두 종류다.

  • 퍼블릭 서브넷: 인터넷 게이트웨이로 직접 라우팅된다. 외부 인터넷에 접근할 수 있다.
  • 프라이빗 서브넷: 인터넷 게이트웨이로 직접 라우팅되지 않는다. 외부 인터넷에 나가야 하면 NAT 디바이스를 거친다.

AZ는 같은 리전 안의 서로 떨어진 데이터 센터

각 리전은 최소 3개의 물리적으로 분리된 가용 영역(AZ, Availability Zone)을 포함한다. AZ끼리는 서로 떨어진 데이터 센터로 구성돼 있어서, 한 AZ에 장애가 발생해도 다른 AZ는 영향을 받지 않게 설계돼 있다.

리전·VPC·AZ·서브넷·EC2가 어떤 계층으로 들어가는지 한 번 그려뒀다.

VPC는 리전 단위로 만들지만, 그 안의 서브넷은 특정 AZ에 묶인다. EC2 같은 자원은 서브넷에 배치되니까 결국 어느 AZ에서 도는지가 서브넷을 고른 시점에 결정된다.

서버리스는 서버를 직접 다루지 않는 컴퓨팅 모델

서버리스(Serverless)는 서버를 프로비저닝하거나 관리하지 않고도 애플리케이션을 실행할 수 있는 컴퓨팅 모델이다. AWS Lambda, Azure Functions 같은 서비스로 제공된다. 트래픽에 따라 자동으로 늘고 줄어들고, 실행된 만큼만 비용을 낸다.

EC2는 가상 서버를 빌려 쓰는 자리

EC2(Elastic Compute Cloud)는 AWS의 대표 컴퓨팅 서비스다. CPU·메모리·스토리지 사양을 골라 가상 서버를 띄운다.

EC2 인스턴스는 VPC 내의 서브넷에 배치되고, 그 서브넷이 속한 AZ에서 실행된다. 즉, 인스턴스 하나를 켜는 건 결국 "어느 리전 → 어느 VPC → 어느 AZ → 어느 서브넷"까지를 다 결정하는 일이다.

S3는 객체 단위로 데이터를 보관하는 스토리지

S3(Simple Storage Service)는 객체 스토리지 서비스다. 파일을 객체 단위로 보관하고, URL로 접근한다. 데이터 백업, 파일 보관, 아카이브, 정적 웹사이트 호스팅까지 두루 쓰인다.

Route 53은 도메인과 DNS를 같이 다루는 서비스

Route 53은 AWS의 관리형 DNS 서비스다. 도메인 등록과 DNS 레코드 관리를 같이 제공하고, 도메인 헬스 체크·트래픽 라우팅 기능까지 묶여 있다.

RDS는 관계형 DB를 통째로 맡기는 서비스

RDS(Relational Database Service)는 완전관리형 관계형 데이터베이스 서비스다. MySQL, PostgreSQL 같은 여러 엔진을 지원하고, 백업·복구·확장을 AWS가 처리한다. DB 운영에서 신경 써야 할 일이 줄어든다.

IAM은 누가 무엇을 할 수 있는지 정하는 서비스

IAM(Identity and Access Management)은 AWS 리소스 접근을 통제하는 서비스다. 누가 인증되고(signed in) 누가 어떤 권한을 갖는지(authorized)를 관리한다. 구성 요소는 네 가지다.

  • 사용자(User): 사람 단위의 계정
  • 그룹(Group): 사용자를 묶은 단위
  • 역할(Role): 자원이나 다른 계정에 부여하는 권한 묶음
  • 정책(Policy): "어떤 행동을 허용/거부하는가"를 적어둔 JSON 문서

IAM Role은 임시 자격 증명을 발급하는 방식이라, EC2 인스턴스에서 다른 AWS 서비스를 호출할 때 액세스 키를 코드에 박지 않고도 권한을 부여할 수 있다. 이 부분이 IAM을 처음 볼 때 가장 손에 잡힌 지점이었다.

IP는 VPC와 서브넷을 만드는 시점에 이미 정해진 풀 안에서 뽑힌다

VPC를 만들 때 사용할 사설 IP 주소 범위를 CIDR 블록으로 함께 정의한다. 예를 들어 10.0.0.0/1610.0.0.0부터 10.0.255.255까지 65,536개의 IPv4 주소를 가리킨다.

각 서브넷도 VPC CIDR 안에서 자신의 CIDR 블록을 가진다. 서브넷 CIDR 블록의 처음 4개 IP와 마지막 IP는 AWS가 예약해두어 사용할 수 없다.

EC2 인스턴스, RDS 인스턴스 같은 자원은 이 서브넷의 IP 풀에서 IP를 할당받는다. 그래서 IP가 "어디서 뽑힐지"는 VPC와 서브넷을 만드는 시점에 이미 정해진다.

VPC를 그리고, 그 안에 서브넷을 자르고, 자른 서브넷의 IP 풀에서 인스턴스가 IP를 받아간다. 이 순서를 한 번 잡고 나니 AWS 콘솔에서 네트워크 메뉴를 클릭할 때 막연함이 줄었다.