주제
aws에서 제공하는 서비스의 구조를 학습한다.
글로벌 인프라

인프라 구조는 크게 데이터센터(Data Center), 가용영역(Availability Zones), 리전(Region)으로 구분할 수 있다.
데이터센터(Data Center)
- 서버 컴퓨터와 네트워크 회선 등을 제공하는 건물, 시설
- 디지털 데이터를 저장 및 관리하고 IT 인프라를 보관하는 물리적 건물, 시설
- 이중 전원 공급장치 사용
- 컴퓨터에 전원 모듈을 2개 유지하여 전원에 문제가 생겨도 다른 전원으로 유지 가능
가용영역(AZ, Availablility Zones)
- 1개 이상의 물리적인 데이터센터를 묶은 논리적 데이터센터
- 가용 영역 간에는 서로 다른 데이터센터를 유지하기 때문에 서로 장애 영향을 미치지 않음 (장애에 격리된 환경)
- 가용영역 간 모든 트래픽은 암호화
리전(Region)
- 2개 이상의 가용영역으로 이루어진 물리적 영역
- 대부분의 서비스는 리전 기반으로 제공
- 리전 내의 가용영역 간에는 높은 대역폭과 짧은 지연시간 제공
- 서울 리전의 가용영역
- ap-northeast-2a
- ap-northeast-2b
- ap-northeast-2c
- ap-northeast-2d
서비스 종류
- 컴퓨팅 서비스
- EC2 Container Service
- ELB
- Lambda
- Auto Scaling
- 네트워킹
- VPC
- Route 53
- Direct Connect
- 스토리지
- S3
- Glacier
- EBS
- CloudFront
- 보안그룹
- IAM
- VPC
- CloudTrail
- 데이터베이스
- RDS
- DynamoDB
- ElasticCache
- DocumentDB
- 배포 및 관리
- CloudWatch
- Elastic Beanstalk
- Cloud Formation
- OpsWorks
1. 컴퓨팅 서비스
EC2 (Elastic Compute Cloud)
- aws에서 제공하는 클라우드 컴퓨팅 서비스
- 원격으로 제어할 수 있는 가상의 컴퓨터를 빌리는 것
- 성능, 용량 등을 사용한 만큼 지불(Elastic)한다.
- 서버 구축이 실제 서버에 비해 훨씬 간편하고 효율적이다.
- 사용한 만큼만 요금이 부과되므로 비용이 절감된다.
ELB (Elastic Load Balancer)
- aws에서 제공하는 로드 밸런서 서비스
- 특정 서버에 부하가 몰리지 않도록 적절히 분산한다.
- 헬스 체크(Health Check), 고정 세션(Sticky Session), SSL Offload(SSL 암복호화) 제공
Lambda
- aws에서 제공하는 서버리스 컴퓨팅 플랫폼
- 서버의 존재를 신경쓸 필요가 없다.
- 특정 시기에만 코드를 실행시키는 경우 유용하다.
- 사용 예시
- 서버를 띄우지 않고 간단한 코드를 실행시키고 싶은 경우
- 특정 기간 또는 특정 주기로 코드를 실행시키고 싶은 경우
- 트리거가 실행될 때만 코드를 실행시키고 싶은 경우
- 단점
- 코드 용량: 최대 250MB
- 함수 실행 시간: 최대 15분
- 최초 함수 호출 시 Cold Start를 하게 되고 초기 지연 시간 발생
- 비용이 비쌈
Auto Scaling
- 시스템 자원을 모니터링하여 서버 사이즈를 자동으로 조절하는 서비스
- 스케일링: 인스턴스 혹은 컴퓨팅 파워를 늘리는 것
- 스케일링 종류
- 스케일 업(Scale Up)
- 성능이 필요한 만큼 큰 인스턴스를 사용하도록 한다.
- 성능과 비용이 비례하지 않는다. (비싸다)
- 스케일 아웃(Scale Out)
- 성능이 필요한 만큼 규모를 늘린다.
- 성능과 비용이 비례한다.
- 클라우드 환경에서는 스케일 아웃을 항상 염두하며 설계해야 한다.
- 스케일 인(Scale In)
- 인스턴스를 다시 줄인다.
- Auto Scaling은 Scale Out을 자동화하기 위해 나온 서비스라고 할 수 있다.
- 정확한 수의 EC2 인스턴스를 보유하도록 보장한다. (최소, 최대 인스턴스 숫자 관리)
- 다양한 스케일링 정책 적용 가능 (ex. 특정 시간대에 부하가 몰리니 인스턴스를 올린다)
- 가용영역에 인스턴스가 골고루 분산될 수 있도록 인스턴스를 분배한다. (장애 격리)
2. 네트워킹
VPC
- aws 사용자가 정의하는 사용자 전용 가상 네트워크
- 사용자가 IP 주소 범위, 서브넷, 라우팅 테이블, 게이트웨이 등 가상 네트워크 환경을 구성하여 VPC 생성 가능
- aws에서 모든 서비스에 VPC를 적용하도록 강제
- 독립된 하나의 네트워크를 구성하기 위한 가장 큰 단위 (Region에 상응하는 규모)
- 각 Region에 하나씩 구성 가능하며 다른 Region에 걸쳐 확장이 불가능
- 각 Region에 종속되며 RFC1918 사설 IP 대역에 맞춰 설계해야 함
- 한 번 설정된 IP 대역은 수정할 수 없음
- 각각의 VPC는 독립적이기 때문에 서로 통신 불가
- VPC peering 서비스를 사용하면 VPC 간에 트래픽을 라우팅할 수 있도록 설정 가능
Route 53
- aws에서 제공하는 DNS(Domain Name System) 서비스
- 도메인 구입부터 네임서버 등록까지 DNS에 필요한 모든 기능 제공
- 모니터링 기능 제공
- 다른 도메인 등록 기관에 비해 가격이 비슷하거나 저렴함
- 도메인 등록 외에도 부가적인 기능을 제공하여 관리가 수월함
- EC2, ELB, S3 등 aws 인프라에 효과적으로 연결하고 aws 외부 인프라로 라우팅하는 데도 사용 가능
- GSLB 기능 제공
- 애플리케이션, 웹 서버 등 리소스에 대한 성능을 모니터링하는 헬스 체크 기능 제공
- 라우팅 정책을 적용하여 사용자에게 최고의 연결성을 제공
- 단순 라우팅 정책: 도메인에 대해 하나의 리소스만 있는 경우
- 장애 대응 라우팅: 장애 대응을 통해 가용 리소스 쪽으로 트래픽을 라우팅
- 지역 DNS 라우팅: 사용자의 지역에 따라 가장 가까운 엔드포인트로 트래픽을 라우팅
- 지연 기반 라우팅: 지연이 짧은 리소스에 라우팅해 최저 지연 시간으로 리소스 제공
GSLB(Global Server Load Balancing)
DNS 서비스 기반으로 사용자가 원하는 엔드포인트(서버 혹은 도메인) 및 정책을 이용해 안정적으로 트래픽을 로드밸린싱하는 서비스
Direct Connect
- 데이터센터, 사무실 등의 환경에서 aws 전용 네트워크 연결을 제공하는 전용선 서비스
- 실제 전용선을 aws와 연결하여 일관성있는 서비스 품질을 보장받을 수 있음
3. 스토리지
S3 (Simple Storage Service)
- aws에서 제공하는 온라인 객체 저장 서비스
- 데이터 조작에 HTTP/HTTPS API 사용
- 비용이 저렴하고 데이터 한도가 무한에 가까움
- 스토리지 확장 및 축소에 신경쓰지 않아도 됨 (elastic)
- 단순한 파일 저장 영역부터 로그 저장, 정적 웹 사이트 호스팅, EBS 스냅샷 저장 등 다양한 용도로 활용 가능
- 지역별 서비스로, 재난 상황에 대비해 자동으로 반복 저장 진행
Glacier
- aws에서 제공하는 가장 저렴한 저장소 서비스
- 주로 데이터 백업 및 아카이브 저장소로 활용
- 비용이 저렴하다
- 월 1달러 미만으로 1TB의 데이터를 저장 가능
- 90일 저장을 기본 정책으로 사용하기 때문에 90일 미만에 삭제된 데이터도 90일 저장 비용이 청구됨
- 하나의 Region에서 여러 AZ에 데이터 복제가 비동기적으로 이루어져 안정성이 높음
EBS (Elastic Block Store)
- EC2 인스턴스에 장착하여 사용할 수 있는 가상 저장 장치
- 원하는 크기, 성능을 설정할 수 있다.
- 일반적인 HDD, SSD처럼 인식된다.
CloudFront
- 짧은 지연 시간과 빠른 전송 속도로 데이터를 전세계 고객에게 전송하는 고속 컨텐츠 전송 네트워크 서비스(CDN)
- 엣지 로케이션(Edge Location)을 통해 컨텐츠 제공
- 엣지 로케이션: 컨텐츠가 캐싱되고 유저에게 제공되는 지점
- 사용자가 CloudFront로 서비스되는 컨텐츠를 요청하면 가장 빠른 엣지 로케이션으로 라우팅되어 컨텐츠 전송 성능이 뛰어남
- 컨텐츠가 이미 가장 빠른 엣지 로케이션에 있는 경우 ColudFront가 즉시 제공
CDN(Content Delivery Network, Content Distribution Network, 컨텐츠 전송 네트워크)
컨텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템
본래 서버에서 컨텐츠를 받아와 캐싱해둔 후 해당 컨텐츠 요청 시 캐싱 컨텐츠 제공
서버와 실제 요청 지점 간의 거리가 멀거나 통신 환경이 안좋은 경우 주로 사용
서버의 부하를 낮추는 효과가 있음
4. 보안그룹
IAM (Identity and Access Management)
- aws에서 제공하는 사용자 접근 권한 관리 서비스
- aws 사용자(그룹) 별로 권한을 세분화하여 지정 가능
- aws 액세스 권한 설정 뿐만 아니라 언제 어디서 누가 무엇을 어떻게 할 수 있는지 상세히 지정 가능
VPC 방화벽 (Security Group / NACL)
- Security Group (보안그룹)
- 인스턴스에 대한 인바운드, 아웃바운드 트래픽을 제어하는 가상 방화벽
- 인스턴스의 ENI에 적용됨
- VPC 내에서 Elastic Network Interface(ENI)를 갖는 모든 서비스에 탑재 가능
- ex. EC2, RDS, ELB 등
- 프로토콜 유형, 포트, IP 등 지정 가능
- Stateful
- 한 번 인바운드를 통과한 트래픽은 아웃바운드 규칙을 적용받지 않음
- 한 번 아웃바운드를 통과한 트래픽은 인바운드 규칙을 적용받지 않음
- NACL (Network ACL, 네트워크 액세스 제어)
- 서브넷의 접근 제어 목록(Access List)을 책임짐
- 보안 그룹과의 비교
- 보안 그룹: 인스턴스의 접근 제어 목록
- NACL: 서브넷을 오가는 모든 트래픽을 제어
- 서브넷 단위로 적용되어 서브넷 내의 모든 트래픽은 NACL의 규칙이 적용됨
CloudTrail
- aws에서 제공하는 기업의 운영 및 위험 감사, 거버넌스 및 규정 준수를 지원하는 솔루션
- aws 인프라 전반의 계정 활동을 조회, 보관, 분석하여 보안 및 운영에 대응
- 누가 어떤 조치를 취했는지, 어떤 리소스가 어떤 조치를 취했는지, 언제 어떤 이벤트가 발생했는지 등을 식별하여 aws 계정 활동을 분석하고 대응에 도움을 줌
- 지난 90일 간 한 aws 리전의 관리 이벤트 조회 가능
- aws 계정 생성 시 자동으로 이벤트 기록(Event history)에 액세스 가능
- AWS CloudTrail Lake
- 감사 및 보안 목적으로 사용자 및 api 활동을 캡처, 저장, 액세스, 분석하기 위한 관리형 데이터 레이크
- Trail
- aws 활동 기록을 캡처하여 S3에 저장하고 CloudWatch 및 Amazon에 선택적으로 전송
5. 데이터베이스
RDS

- 관계형 데이터베이스를 클라우드에서 간편하게 설정, 운영, 확장할 수 있도록 지원하는 aws 서비스
- 데이터베이스 설치, 모니터링, 백업, 알람 등의 관리를 대신 해줌
- 데이터베이스 설정, 패치, 백업과 같은 잦은 운영 작업을 자동화
- 비용 효율적이고 크기 조정이 가능한 DB 서비스
- DB 인프라 구성에 힘쓰지 않고 개발에 집중할 수 있도록 도움
- EC2에 RDB를 직접 구축하여 운영하는 것보다 많은 부분을 자동으로 관리해주기 때문에 편리함
- VPC 안에서 동작하며, 기본적으로 public IP를 부여하지 않기 때문에 외부에서 접근이 불가능
- public으로 설정할 수 있지만 로드밸런서같이 DNS로만 접근 가능
DynamoDB
- 어떤 규모에서도 10ms 미만의 성능을 제공하는 key-value 형태의 NoSQL 데이터베이스 서비스
- 데이터 규모와 관계없이 데이터를 저장 및 검색하고, 어떤 수준의 요청 트래픽도 처리할 수 있는 데이터베이스 테이블 생성 가능
ElasticCache
- 데이터베이스 캐싱 서비스
- Memcached, Redis 호환 지원
DocumentDB
- MongoDB와 호환되는 데이터베이스를 쉽게 설정, 운영, 조정할 수 있는 데이터베이스
6. 배포 및 관리
CloudWatch
- aws 리소스와 aws에서 실행중인 애플리케이션을 실시간 모니터링하는 서비스
- 지표를 감시해 알림을 보내거나 임계값을 위반한 경우 리소스를 자동으로 변경하는 경보 생성 가능
- 인스턴스 중지, Auto Scaling 등
Elastic Beanstalk
- EC2의 사용이 복잡하다는 점을 보완해주는 서비스
- 애플리케이션을 쉽게 배포하고 확장할 수 있도록 해주는 Paas 서비스
- EC2는 IaaS 서비스
- 애플리케이션 코드를 업로드하면 배포, 프로비저닝, 로드밸런싱, 확장, 모니터링 등을 자동으로 처리해줌
IaaS(Infrastructure-as-a-Service): 서비스형 인프라. 인터넷을 통해 인프라 자원을 제공한다.
PaaS(Platform-as-a-Service): 서비스형 플랫폼. 핵심 인프라를 호스팅하고, OS와 미들웨어(WAS 등)까지 제공
SaaS(Software-as-a-Service): 서비스형 소프트웨어. 인프라, 미들웨어에 더해 애플리케이션 형태로 완전한 소프트웨어를 제공
- aws 서비스 생성 및 배포 자동화 템플릿 서비스
- 스택을 생성하고 스택에 대한 변경 사항 확인 및 업데이트
- 스택 생성 및 변경 중 에러 감지를 통한 롤백 지원
- 특징
- aws 리소스를 수동으로 생성, 구성할 필요 없음
- aws 리소스가 어떤 것에 의존하는지 파악할 필요 없음
- JSON, YAML을 이용하여 작성
- 장점
- 인프라 관리 최소화
- 신속한 인프라 복제
- 인프라 변경 사항을 쉽게 제어 및 추적
스택(Stack)
하나의 단위로 관리할 수 있는 aws 리소스 모음
스택의 모든 리소스는 CloudFormation 템플릿을 통해 정의
스택을 삭제하면 관련 리소스가 모두 삭제됨
OpsWorks
- Chef 또는 Puppet을 통해 인스턴스나 온프레미스 환경에서 서버가 구성, 배포되는 방법을 자동화하는 구성 관리 서비스
- Chef 쿡북 및 솔루션을 사용하여 구성 관리를 수행하는 서비스
- AWS OpsWorks Stacks
- AWS OpsWorks for Chef Automate
- Puppet Enterprise 마스터 서버를 구성할 수 있는 서비스
- AWS OpsWorks for Puppet Enterprise
참고 자료
데이터 센터(위키백과)
Global infrastructure(Region & Availability Zone(AZ))
aws 아키텍처 소개
aws 서비스를 알아보자
AWS EC2 개념 정리
Lambda란 무엇인가
Auto Scaling 개념 원리 & 사용 세팅 정리
VPC 개념 & 사용 - 인프라 구축
Route 53 개념 원리 & 사용 세팅 정리
GSLB의 이해와 서비스 예시
AWS - Direct Connect란?
S3 개념 & 버킷 권한 설정 방법
Storage: S3 Glacier Deep Archive
ColudFront 개념 원리 & 사용 세팅 정리
IAM 개념 원리 & IAM 계정 정책 생성하기
VPC 개념 & 사용 - 보안 설정 (Security Group / NACL)
aws 사용자 가이드 - AWS CloudTrail
RDS 개념 & 아키텍쳐 정리 (이론편)
아마존 웹 서비스 종류 & 용어 모음
CloudWatch의 개념
AWS Elastic Beanstalk으로 배포하기
IaaS, PaaS, SaaS란 (개념, 비교, 예시)
AWS CloudFormation의 개념
OpsWorks의 개념