Computing System
Amazon EC2 (Elastic Compute Cloud)
IaaS의 가장 대표적인 서비스로 가상화 된 컴퓨팅 자원 (인스턴스)을 제공
EC2 Instance Type – Naming Rule
Instance Type, Instance Generation, Attributes, Size로 구성
Instance Type을 통해 Application 또는 서비스 요구사항에 적합한 컴퓨팅 리소스 성능 (CPU, Memory, Process…) 선택 가능
EC2 Instance Type - Family & Type
인스턴스는 유형마다 제공하는 컴퓨팅 성능과 기능에 차이가 있고, 기능 별로 그룹으로 묶어 패밀리 단위로 구분
EC2 Instance Type - Generation
주기적으로 최신 기술을 반영한 신규 인스턴스 세대 출시
이전 세대 인스턴스 대비 비용은 낮아지고 성능은 향상
리전, 가용영역 별로 지원되는 인스턴스 세대가 다름
신규 배포 리전의 경우 Stable version 인스턴스 세대 위주로 서비스 출시
이전 인스턴스 세대 중 미지원 되는 인스턴스 세대가 있음
EC2 Instance Type – Attributes & Size
추가 지원되는 기능에 따라 Attributes가 붙음
인스턴스의 Size에 따라 vCPU, Memory, Disk, Network 처리량 상이
nano (최소) < small < medium < large < xlarge < … 112xlarge (최대) 까지
EC2 Instance Type – Burstable performance instances
T 타입 Family군에서 지원하는 기능
일시적인 고성능 컴퓨팅 리소스가 필요한 경우 사용할 수 있는 기능
일시적으로 추가 비용 없이 기본 성능 이상으로 고성능 컴퓨팅 지원
일시적인 작업 부하가 예측되는 시스템에 적합 (개발, 테스트 환경 적합)
크레딧 기반 작동원리를 통해 기준 성능 이상일 경우 크레딧 소진
인스턴스의 기준 성능 이하인 경우 크레딧 획득
기준 성능 이상일 경우 크레딧 소진
크레딧을 다 소모하면 사용률이 강제적으로 적어짐
EC2 Instance Tenancy
전용 인스턴스와 전용 호스트의 차이
전용 인스턴스
- 특정한 물리서버만 사용하는 것이 아닌 아마존에서 지정한 서버를 사용
- 시스템 장애로 종료시 다른 물리 호스트에서 동작 => license가 이동할 수 있음
인스턴스를 구동하게 되면 그 인스턴스가 할당된 물리적 서버는 같은 AWS 계정(account)의 인스턴스만 할당되어 사용하는 옵션입니다. 인스턴스를 어떤 물리적 서버에 배치하고 구동할지 고객은 선택할 수 없으며 이는 AWS가 수행합니다.
전용 호스트
- 생성할 때부터 몇번 서버를 쓸것인지 지정
- 라이센스 이동을 하지 않을 때 사용
EC2 인스턴스가 있는 물리적 서버를 구매하여 전용 용량, 전담 호스트를 사용하는 방식입니다.
EC2 Instance Auto Scaling
증가하는 서비스 트래픽에 맞춰 자동으로 서버의 수량을 조절하는 기능
- Scale In & Out : 서버의 수량을 트래픽에 맞추어 늘리거나 줄이는 방식
- Scale Up & Down : 서버의 성능 스펙 (vCPU, Memory)을 향상 시키거나 낮추는 방식
Elastic Load Balancer
클라이언트의 서비스 요청 트래픽을 다수의 서버로 분산시켜 주는 서비스
- 클라이언트의 요청을 Listener로 수신
- Target Group에 등록된 서버의 상태 검사를 통해 정상적인 대상에만 트래픽 라우팅
완전 관리형 서비스로 트래픽 요청에 따라 자동으로 서비스 확장
LB 시스템에 대한 Upgrade, Management, Available 에 대한 관리는 AWS에서 지원
다른 AWS 서비스와 연계하여 사용 및 확장 가능
- AWS ACM 인증서와 연동하여 HTTPS 암호화 통신 지원
- EC2, Auto-Scaling, Lambda, ECS, EKS 등 컴퓨팅 시스템 지원
- Route 53, Global Accelerator, CloudFront 같은 네트워크 시스템과 연동
Target Group에 등록된 시스템을 대상으로 Health check를 통해 정상 응답 (상태코드: 200)을 받은 경우에만 해당 시스템으로 트래픽 라우팅
EC2 Auto Scaling 서비스와 연동해 서비스의 유연한 수평 확장성 기능 제공
AMI를 생성하여 걸어주면 같은 설정이 계속복사 된다.
최소 용량 : Traffic에 맞춰서 적어도 유지 되어야 하는 용량
최대 용량 : 최대로 늘어날 수 있는 용량
AWS ELB (Elastic Load Balancer) – 종류 4가지
Application Load Balancer
- OSI L7 계층을 지원하는로드밸런서
- HTTP / HTTPS / WebSocket 지원
- Security Group 설정 가능
- 유연한 Traffic 분산 기능 지원
Network Load Balancer
- OSI L4 계층을 지원하는로드밸런서
- TCP / TLS / UDP 지원
- Security Group 미지원
- Elastic IP 설정 가능
security group을 작성할 때를 생각해보면 프로토콜을 허용해준다. 프로토콜은 OSI 7 계층에 해당한다. 따라서, Network Load Balancer는 Security Group을 지원하지 않는다.
Gateway Load Balancer
- OSI L3 계층을 지원하는로드밸런서
- Internet Protocol 지원
- VPC 내부 모든 트래픽이 GWLB를 거쳐 단일 네트워크 진입점 구성
Classic Load Balancer
- 1 세대 Elastic LoadBalancer
- HTTP / HTTPS / TCP / SSL 지원
- AWS에서 권장하지않는 모델
Lambda
컴퓨팅 시스템 프로비저닝 과정 생략
Function (함수) 생성 후 클라이언트 요청에 따라 실행
요청이 있을 때만 실행되어 비용 청구
JavaScript, Python, Java 등 다양한 언어 지원
Storage System
EBS (Elastic Block Store)
인스턴스에 연결해 사용할 수 있는 네트워크 드라이브
한 번에 하나의 인스턴스에만 연결 가능
- 하나의 인스턴스에 2개 이상의 EBS 볼륨 연결 가능
- Volume type io 1,2 는 동일 가용영역의 여러 인스턴스에 연결 가능
- 인스턴스에 연결되어 있던 EBS 분리 후 다른 EBS 연결 가능
특정 가용영역에서만 생성되기 때문에 가용영역간 EBS 볼륨 공유 불가
- 스냅샷을 이용해 다른 가용영역으로 복제본을 만들어 사용 가능
- 가용영역내에서 데이터를 자동으로 복제하여 99.999% 가용성보장
디스크 용량을 희망하는 만큼 프로비저닝하여 사용
AWS EBS – Volume Type
AWS EBS – Volume Encryption
EBS에 저장되는 데이터와 인스턴스와 주고 받는 전송 구간 데이터 모두 암호화
암호화 되어 있지 않던 볼륨을 암호화하기 위해서는 스냅샷 이용
암호화 적용 전 볼륨 스냅샷생성 → 스냅샷복제 (암호화설정 추가) → 암호화된스냅샷으로 신규 볼륨 생성
EFS (Elastic File Service)
AWS Managed NFS (Network FileSystem)로 동시에 다수 인스턴스에 마운트가 가능한 파일 시스템
EFS는 subnet에 설치
NFS 처럼 Domain 기반으로 특정 디렉토리에 Mount
EFS에서는 성능과 관련해 Performance & Throughput 모드를 상황에 맞춰 설정해서 사용
AWS EFS – Storage Class
가용성, 내구성, 스토리지 설계 기준이 상이한 4개의 EFS Storage Class
Life-Cycle Management feature 활성화 하면, 자주 사용하지 않는 데이터는 IA (Infrequent Access) class로 자동 전환
S3 (Simiple Storage Service)
웹 서비스를 이용해 어디서나 접근 가능한 오브젝트 스토리지
무제한 저장소 확장이 가능한 스토리지
99.999999999%의 내구성이 강한 저장소
세부적인 접근 권한 관리 지원
Bucket Policy 이용 사용 주체, 데이터별 권한 할당
IAM Policy 이용 사용 주체 별 접근 가능한버킷의 데이터, 권한 할당
사용한 데이터 만큼 종량제 형태로 과금
Static Web Page 서비스 지원
AWS S3 – Bucket & Object
버킷을 생성할 때는 전역 (Global)에서 고유한 이름으로 생성해야 하며, 생성되는 위치는 특정 리전 지정
버킷 내 저장되는 데이터 (Object)마다 Key 값 (데이터의 Full Path) 맵핑
정적 웹 페이지를 저장하고, S3에서 웹 사이트 호스팅 지원
AWS S3 – Storage Class
AWS S3 – Multi_Part_Upload
버킷에 저장 가능한 객체의 최대 크기는 5TB이며, 1개의 파일을 업로드 할 때 한 번에 업로드 가능한 크기는 5GB
5GB가 넘는 객체를 올릴 때 Multi-Part-Upload 형식으로 분할 업로드 진행
AWS S3 – CRR, SRR
CRR (Cross Region Replication) : 멀티 리전 S3 버킷으로 데이터 복제
SRR (Same Region Replication) : 동일 리전 S3 버킷으로 데이터 복제
AWS S3 – Versioning
객체의 변경 이력 (버전 정보)을 통해 실수로 데이터를 덮어쓰거나 삭제해도 이전 버전을 복구할 수 있는 기능
AWS S3 – Life Cycle Policy
객체를 자동으로 다른 Storage Class로 이동시키는 기능
일정 기간 보관 후 지정된 기간 이후 다른 Class로 이동 또는 만료 (삭제처리)
상위 Class에서 하위 Class 방향으로 이동 가능
Standard-IA, One-Zone-IA Class는 30일 제약
Standard-IA, One-Zone-IA에서 다른 Class 이동 시 최소 30일 보관
다른 Class에서 Standard-IA, One-Zone-IS Class로 이동시 최소 30일 보관
Database System
RDS (Relational Database Service)
관계형 데이터 베이스에 대한 완전관리형 서비스로 DB엔진 관리, OS Patch 와 같은 인프라 운영관리를 AWS가 담당
DB Engine 종류 : MySQL, PostgreSQL, MS-SQL, MariaDB, Oracle, Aurora
AWS RDS – Read replica
대규모 서비스 트래픽을 분산처리하기 위해 데이터베이스 읽기 작업만 지원하는 복제 데이터 베이스 (Select 명령만 사용)
최대 15개의 읽기 전용 복제본을 리전, 가용영역에 걸쳐 구성 가능
읽기 전용 복제본은 원본 데이터베이스 시스템이 다운될 경우 쓰기 전용 데이터베이스로 승격 (복제 본 중 우선순위 높은 시스템 대상)
AWS RDS –Multi AZ 설정
데이터베이스의 Active-StandBy 형태 이중화 구성으로 장애 대비 자동 복구 대응
Read Replica의 쓰기 전용 데이터베이스 승격과 유사하지만 자동화 대응을 통해 다운타임이 없음
AWS RDS – Storage Auto Scaling
운영관리 과정에 디스크가 부족해지는 경우 자동으로 용량을 확장할 수 있도록 지원하는 기능
전체 용량 중 여유 공간이 10% 미만이 남았을 경우 자동으로 확장
AWS RDS – Aurora
AWS에서 PostgreSQL & MySQL과 호환 될 수 있도록 만든 RDB 엔진
동일한 RDS MySQL에 비해 Aurora MySQL은 5배, Aurora PostgreSQL은 3배 높은 성능 제공
AWS RDS – Aurora High Availability
Aurora에 저장되는 데이터는 최소 3개의 가용영역에서 데이터를 복제하여 6개의 사본으로 저장
내부에서 데이터 손실이 발생해도 자체적으로 사본을 통해 자동으로 복구
AWS RDS – Aurora Read Replica Auto Scaling
데이터의 저장공간은 10GB부터 125TB까지 자동으로 사용하는 만큼 확장
읽기 전용 복제본은 15개까지 자동으로 스케일 아웃 가능
DynamoDB
Key-Value 형식의 NoSQL (Non-Relational SQL) 데이터베이스 서비스
완전관리형 서비스 (하드웨어 프로비저닝, 데이터 복제 관리, 시스템 패치 등)
Milli Second 단위 초저지연 시간 보장
세 개의 가용영역에 데이터를 분산 저장하여 데이터 고가용성 보장
Default로 Multi AZ 형태로 서비스 제공
AWS IAM 서비스와 연계하여 보안, 인증, 등 높은 수준의 권한 관리
Lambda, Kinesis 등 AWS 서비스와 유기적으로 연동하여 다양한 솔루션 제공
Capacity Mode를 통해 처리량 성능 지정
On-demand : 읽기/쓰기 처리량 예측이 어려운 시스템에 적합, 사용한 만큼 지불
Read/Write Capacity Unit : 지정한 처리량 만큼 비용 선 지불 후 사용
ElastiCache
데이터를 캐시에 올려 두고 빠르게 데이터를 응답할 수 있도록 구성된 인 메모리 기반 데이터베이스 서비스
관계형 데이터 베이스의 부하를 줄이거나 클라이언트의 세션 관리에 도움을 주어 서비스 성능 개선
Redis & Memcached
어떤 데이터를 캐시에 올릴 것인지 사전에 고려
데이터의 일관성 (원본 데이터, 캐시 데이터 동기화 전략) 고려 -캐시 무효화
Multi Thread, Single Thread 차이
- Single Thread는 한 번에 1개의 요청만 처리할 수 있기 때문에 성능 차이 발생
- 100만 건의 데이터를 full search 할 경우 memcached는 1ms, redis는 1초