Elastic Block Store
Elastic Block Store란
- EC2에 연결하여 사용하는 블록 스토리지에 해당한다.
- EC2 인스턴스 시작 시 AMI가 설치되는 EBS 루트 볼륨은 자동으로 생성된다.
- EC2 종료 후 EBS가 삭제 되지 않으면 사용 비용이 청구된다!
- 여러개의 EBS 볼륨을 추가로 생성하여 EC2에 추가로 연결이 가능하다 -> 가변적으로 용량을 늘릴 수 있음
- EBS와 EC2는 같은 가용영역에 있어야 연결이 가능하다
- Snapshot 기능을 통해 볼륨을 백업할 수 있음
EBS 볼륨의 유형
- SSD와 HDD 타입이 존재함
SSD
- 범용 SSD(gp2) : 볼륨당 IOPS가 16000이며, 일반적인 용도로 사용된다.
- 프로비저닝된 IOPS SSD(io1, io2) : 볼륨당 IOPS가 64000~256000이며 고성능 처리가 필요한 경우 사용한다.
HDD
- 처리량 최적화 HDD(st1) : 볼륨당 IOPS가 500이며 저비용이라는 장점이 있다.
- 콜드 HDD(sc1) : 볼륨당 IOPS가 250이며, 최저 비용에 해당한다.
Amazon Machine Image(AMI)
AMI란
- OS, 어플리케이션, 서버 프로그램 설정 등이 미리 구성된 이미지이다.
- EC2 인스턴스를 시작할 때 AMI를 사용하면 EC2 시작 시 OS 설치나 서버 소프트웨어 설정 등을 별도로 할 필요가 없다
AMI의 종류
- AWS에서 제공하는 공식 AMI
- AWS 마켓 플레이스에서 제공하는 AMI
- AWS 커스텀 AMI
EC2 Image Builder
- Amazon EC2및 온프레미스에서 사용할 Linux 혹은 Windows 이미지의 생성, 유지 관리, 검증, 공유 및 배포를 간소화 하는 서비스이다.
- 소프트웨어 업데이트가 제공되면 일정에 따라 EC2 AMI 등의 새 이미지를 생성하고 테스트 한 후 AWS 리전으로 배포한다.
Instance Store
Instance Store란
- 블록 수준의 임시 스토리지이다.
- 특정 인스턴스 유형만 Instance Store라고 하는 스토리지를 가진다.
- 서버에 직접 장착되어 있는 물리적 SSD 또는 HDD 스토리지이다.
- IOPS 성능이 매우 높은 고성능 스토리지이다.
- 인스턴스를 중지하거나, 최대 절전 모드로 전환하거나 종료하면 인스턴스 스토어의 모든 스토리지 블록이 리셋된다.
- 임시 파일을 보관하는 가장 빠른 성능의 저장 옵션으로, 영구적인 저장소가 아닌 고성능을 요구하는 어플리케이션의 임시 저장소로 적합하다.
Elastic FIle System(EFS)
Elastic File System이란
- 리눅스 환경의 EC2 인스턴스에서 연결하기 위한 네트워크 파일 스토리지이다.
- Network File System(NFS) 프로토콜을 지원한다.
- 여러 가용영역에 있는 수십~수백대의 EC2를 연결할 수 있다.
- 보안 그룹을 통해 인스턴스에 연결된다.
- EC2 외에 Linux 방식의 온-프레미스 서버에서도 연결이 가능하다.
EFS의 성능 및 스토리지 클래스
Storage Class
- 표준 스토리지(standard) : 3개의 가용영역에 데이터를 저장하고, 자주 액세스하는 파일을 저장하는 데 사용한다.
- 표준 IA(Standard Infrequent Access) : 3개의 가용영역에 데이터를 저장하며 자주 액세스하지 않는 파일을 저장하는 데 사용한다.
- One Zone : 1개의 가용영역에 데이터를 저장하며, 자주 액세스하는 파일을 저장하는 데 사용한다.
- One Zone IA : 1개의 가용영역에 데이터를 저장하며, 자주 액세스하지 않는 파일을 저장하는 데 사용한다.
- EFS 수명주기 관리 정책 혹은 EFS 지능형 계층화(Intelligent-Tiering)를 사용해 자주 사용하지 않는 데이터를 다른 스토리지 클래스로 자동 전환 가능하다.
성능 모드: I/O 읽기 쓰기 모드
- 기본 범용 성능 모드(General Purpose performance mode) : 일반적인 I/O 성능을 가진다.
- 최대 I/O 성능 모드(Max I/O performance mode) : 높은 성능의 처리가 필요한 빅데이터 분석 어플리케이션 등에 사용한다.
처리량 모드: 파일 시스템의 처리량(MiB/s)
- 기본 버스팅 처리량 모드 : 파일 용량이 커짐에 따라 자동으로 처리량을 확장한다.
- 프로비저닝된 모드 : 저장된 데이터의 양과 상관없이 고정으로 처리량을 지정한다.
시스템 아키텍처
확장성
- 수직적 확장
- 작은 리소스를 크게 바꾸는 것을 의마한다.
- 자원을 추가하는 방식이다.
- 시스템을 종료해야 확장이 가능
- 수평적 확장
- 노드를 추가하는 방식이다.
- EC2 인스턴스 개수를 늘리는 것이다.
- 스케일 업이 쉬워서 탄력성이라고도 함
- 애플리케이션의 확장 방법으로 주로 사용하며, 시스템을 종료하지 않아도 된다.
고가용성(High Availability)
- 지속적으로 정상 운영이 가능한 상태를 구축하는 것이다.
- 장애를 대비하여 시스템을 이중화한다.
- AWS에서는 여러 가용영역에 시스템을 분산배치하는 방식을 고가용성 설계라고 한다.
느슨한 결합(Loosely Coupled)
- 한 시스템의 상태가 다른 쪽에 영향을 덜 미치는 결합
- Load Balancer 등을 통해 구현하게함
Load Balancer
Load Balancer란
- 트래픽을 분산하는 서비스를 의미한다.
- 비정상 대상을 감지하면, 해당 대상을 향항 트래픽 라우팅을 중단하고, 대상이 정상으로 돌아오면 트래픽을 다시 해당 대상으로 라우팅한다.
Elastic Load Balancer
- AWS의 Load BalancerApplication Load Balancer
- Layer 7에서 작동한다
- 즉, HTTP, HTTPS 웹 트래픽을 다룬다
- Header Content를 사용해 라우팅 요청을 처리한다.Network Load Balancer
- Layer 4에서 작동한다.
- TCP, UDP, TLS 트래픽을 다룬다
- protocol, port number를 사용해 라우팅 요청을 처리한다.
- application load balancer에 비해 속도가 빠르기 때문에 대용량 트래픽 처리에 유리하다.
Gateway Load Balancer
- Layer 3와 Layer 4에서 동작한다.
- GENEVE protocol을 사용하여 동작하며 encapsulation 트래픽을 전송한다.
- IPS, IDS등의 보안 프로토콜을 처리하는데 사용한다.
Elastic Load Balancer의 구성
- Listener
- 연결 요청을 확인하는 프로세스
- 클라이언트와 로드 밸런서 간의 연결을 위한 프로토콜 및 포트 번호로 구성된다.
- 로드 밸런서와 Target 간의 연결을 위한 프로토콜 및 포트 번호로 구성된다.
- Target Group
- Target의 모임이며, Target에는 EC2 인스턴스, EC2 Auto Scaling Group, IP address, Lambda 등이 포함된다.
EC2 Auto Scaling
EC2 Auto Scaling 이란
- EC2 인스턴스를 자동으로 확장하고 축소하는 기능이다.
- 사용자가 정의한 조정 정책에 따라 인스턴스 수가 증가 되거나 축소 된다.
- 서버의 로드가 증가하면 EC2 인스턴스 개수가 추가된다.
- 서버의 로드가 감소하면 EC2 인스턴스 개수가 줄어든다.EC2 Auto Scaling 구성 요소
- 오토 스케일링 그룹
- EC2의 인스턴스 그룹을 의미한다.시작 템플릿
- EC2 서버를 시작하기 위한 AMI, 인스턴스 유형 정보를 가진 템플릿을 의미한다.조정 옵션 (조정 정책)
- AUto Scaling을 실행하기 위한 조건을 의미한다.
조정 정책의 종류
- 항상 현재 인스턴스 수준 유지 관리
- ex) 항상 인스턴스가 4개 유지되도록 관리
- 수동 조정
- 일정을 기반으로 조정
- ex) 사용량이 많은 주말에 인스턴스를 4대 사용하고, 평일에는 2대를 실행한다.
- 온디맨드 기반 조정
- ex) CPU 사용량을 50%기준으로 설정한 경우, CPU 사용량이 50%가 넘어가면 새로운 EC2 인스턴스를 할당한다.
- 예측 조정 사용 (Predictive Scaling)
- 머신러닝을 사용하여 CloudWatch의 기록 데이터를 기반으로 용량 필요량을 예측한다.
동적 조정(Dynamic Scaling, On-demand 기반 조정)
- 대상 추적 조정(Target Tracking Scaling)
- 지정한 지표가 목표값을 초과할 때 한해서 Auto Scaling 그룹을 확장하는 방식
- ex) CPU 사용률 목표값을 50%기준으로 설정한 경우, CPU 사용량이 50%가 넘어가면 새로운 EC2 인스턴스를 할당한다.
- CPU 평균 사용률, 네트워크 인터페이스에서 송/수신한 평균 바이트 수, 로드발란서 요청 수 등의 지표를 사용한다.
- 단계 조정(Step Scaling)
- CloudWatch alarm의 지표를 기반으로 Auto Scaling 그룹을 확장하는 방식이다.
- ex) CPU 사용률이 60%를 초과하면 Auto Scaling Group 10% 또는 2개 증가 / CPU 사용률이 30% 이하면 Auto Scaling Group 10% 또는 2개 감소
- 크기 조정 활동이 시작된 후 정책은 크기 조정 활동 또는 상태 확인 교체가 완료되고 휴지 기간(Cooldown Period)이 끝날 때 까지 기다린 후 추가 경보에 응답한다.
크기 조정 활동
: Auto Scaling 위에서 인스턴스가 증가하고 축소되는 기간
- 단순 조정(Simple Scaling)
- CloudWatch alarm의 지표를 기반으로 Auto Scaling 그룹을 확장하는 방식이다.
- 크기 조정 활동 또는 상태 확인 교체가 진행 중인 동안에도 정책이 추가 경보에 계속 응답한다.
Serverless
Serverless 란
- 서버를 사용자가 관리할 필요가 없음을 의미한다.
- 실제로 서버는 존재하나, 서버 인프라 운영은 AWS 등의 클라우드 회사에서 담당한다.
- AWS에서 용량 조정, 프로비저닝, 패치 등의 인프라를 관리한다.
- 대표적인 AWS 서버리스 서비스로 AWS Lambda, AWS Fargate, Amazon S3, DynamoDB, Amazon Autora Serverless 등이 있다.
Lambda
- 코드를 실행하여 동작하는 서버리스 컴퓨팅이다.
- EC2는 서버를 시작하고, 애플리케이션을 설치하고 서버가 계속 실행되며 사용자가 직접 운영해야 한다.
- Lambda는 AWS에서 서버 운영에 필요한 모든 인프라를 관리하기 때문에, 코드를 입력하여 실행만 하면 된다.
- 온디맨드 방식의 이벤트 중심의 실행이 이루어지며, 사용한 만큼만 비용을 지불한다.
- 용량계획 등이 필요가 없다(자동으로 확장이 이루어짐).
- Node.js, Python, Java, C#, Ruby 등의 언어를 지원한다.
- 독립적으로 사용하기 보다는 다른 서비스와 결합하여 사용한다. ex) API Gateway, Kinesis, DynamoDB, SNS, S3, CloudFront
AWS Batch
AWS Batch란
- AWS에서 배치 컴퓨팅 작업을 효율적으로 실행할 수 있게 해주는 서비스이다.
- 수동이 아니라 자동으로 컴퓨터에서 일련의 프로그램을 실행하는 것을 배치 컴퓨팅이라고 한다.
- 자동으로 컴퓨팅 리소스를 프로비저닝하고 워크로드 양 및 규모에 따라 워크로드 분배를 최적화한다.
- 배치 작업은 Docker 컨테이너 이미지로 정의 되어 Elastic Container Services에서 실행 된다.
Container
Container란
- 애플레키에션 구성 라이브러리를 패키지로 묶어서 컨테이너 엔진 위에서 실행하는 것을 의미한다.
- OS가 바뀌어도 구동 가능하며, 각각의 컨테이너가 독립적이다.
- Kubernates와 Docker가 대표적이다.
- 마이크로서비스를 배포하는데 주로 이용한다.
AWS 컨테이너 서비스
- Elastic Contatiner Service(ECS)
- Docker 컨테이너를 배포, 관리하는 컨테이너 오케스트레이션 서비스이다.
- Amazon Elastic Kubernates Service(EKS)
- AWS에서 쿠버네티스를 실행하는 서비스이다.
- 오픈소스 컨테이너 오케스트레이션 서비스이다.
- AWS Fargate
- 서버리스 컨테이너 서비스이다.
- 별도의 서비스는 아니며, ECS나 EKS와 연동되는 서비스이다.
- 컨테이너의 크기를 조절하고, 로드 밸런싱을 한다.
- Amazon Elastic Container Registry(Amazon ECR)
- Docker 등의 컨테이너 이미지를 공유, 배포하는 관리 서비스이다.
- ECR에서 공유된 이미지를 사용하여 ECS, EKS에서 컨테이너는 구성한다.
Elastic Beanstalk
Elastic Beanstalk란?
- 웹 애플리케이션 및 서비스를 배포하고 운영하는 서비스이다.
- 코드를 업로드하기만 하면 Elastic Beanstalk가 용량 프로비저닝, 로드 밸런싱, Auto Scaling부터 시작해 애플리케이션 상태 모니터링의 배포 등을 AWS에서 자동으로 처리한다.
Lightsail
Lightsail 이란?
- 웹 애플리케이션 또는 웹 사이트를 클릭 몇 번으로 설정하고 실행할 수 있는 사용이 쉬운 클라우드 리소스이다.
- 인스턴스, 컨테이너, 데이터베이스 및 스토리지 같은 서비스를 쉽게 배포할 수 있다.
- 클라우드 경험이 없는 사용자를 위한 서비스이다.
- EC2, ELB, EBS 등의 서비스 사용에 대한 대안
- 서비스를 저렴하고 예측 가능한 월간 요금으로 사용 가능하다.
- 간단한 웹 애플리케이션이나 웹사이트 배포에 사용한다.
Amazon WorkSpaces & Amazon AppStream 2.0
Amazon WorkSpaces란
- 클라우드 기반 Microsoft Windows 또는 Amazon Linux 데스크톱 가상화 서비스이다.
- 기존 데스크톱을 대체할 수 있는 클라우드 기반 가상 데스크톱이다.
- 시작한 WorkSpaces에 대해서만 월별 혹은 시간별 요금을 지불하므로 기존 데스크톱과 온프레미스 VDI 솔루션에 비해 비용을 절감할 수 있다.
Amazon AppStream 2.0이란
- 애플리케이션 및 데스크톱 스티리밍 서비스이다.
- 회사의 애플리케이션을 사용자의 물리적 디바이스에서 AWS 클라우드로 이전함으로써 애플리케이션 관리를 간소화하고, 보안을 강화하며, 비용을 절감한다.
- 데스크톱 애플리케이션을 HTML5 호환 웹 브라우저로 스트리밍하여 웹 브라우저를 통해 애플리케이션 사용을 가능하게 한다.
S3(Amazon Simple Storage Service)
Data 저장 방식
- Object Storage
오브젝트라고 물리는 개별 유닛에 데이터를 저장하는 스토리지 포맷으로, 각 유닛에는 고유의 식별자 혹은 키가 존재하여 시스템 내 어디에 존재하든지 데이터를 찾을 수 있다.
또한 각각의 오브젝트에는 키, 데이터 및 옵션 메타데이터가 포함되며 대표적으로Amazon S3
가 존재한다. - Block Storage
데이터를 고정된 사이즈의 블록으로 나누어 각각 고유한 식별자와 함께 저장하는 방식이다.
각 데이터 블록은 고유 식별자를 부여 받으며, 스토리지 시스템이 데이터 조각을 원하는 곳에 배치할 수 있다. 예를 들어, 일부 데이터는 리눅스에, 일부는 Windows 장치에 저장할 수 있다. ex) Amazon EBS - File Storage
계층적 파일 디렉토리 내의 폴더에서 파일로 저장하는 방식이다. 원하는 데이터에 액세스하기 위해서는 경로를 알고 있어야하며, 메타데이터를 활용해 파일 위치를 파악한다.
ex) Amazon EFS, Amazon FSx
S3란
무제한에 가까운 저장용량을 제공하는 Object Storage 서비스이다.
최소 3개의 가용영역에 데이터를 자동 분산 저장하기 때문에 성능, 확장성, 가용성, 내구성이 높다는 특징이 있다.
대표적인 사용 사례로는 백업 및 복원
, 재해 복구(DR)
, 아카이브
, 클라우드 스토리지
, 정적 웹사이트 호스팅
등이 있다.
버킷
버킷은 오브젝트의 저장공간으로, 리전단위로 생성된다.
버킷의 이름은 반드시 유니크해야하며, 다른 AWS 사용자와도 중복되지 않아야 한다.
객체
오브젝트, 즉 파일에 해당하며 개별 오브젝트의 최대 사이즈는 5TB이다.
S3의 버전 관리
S3 버킷에 넣은 객체는 여러 버전을 가지게 되는데, 동일한 파일 이름을 업로드 하면 여러 버전으로 자동으로 전환되어 저장된다.
따라서 실수로 객체를 덮어쓰거나 삭제한 경우, 이전 버전으로 복구가 가능하다
또한 실수로 객체를 삭제하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있다.
S3의 객체 암호화
데이터를 전송 중에, 그리고 스토리지에 저장된 동안 보호하기 위해 암호화를 진행한다.
서버 측 암호화
데이터가 서버에 저장되기 전에 객체를 암호화 하는 방식으로, 키를 어떤 주체가 들고 있느냐에 따라 SSE-S3, SSE-KMS, SSE-C로 나뉜다.
이는 각각 S3, KMS(키 관리 서버), Client에서 관리하는 방식으로, SSE-C에서는 데이터 전송 시 반드시 HTTPS를 사용해야 한다.
클라이언트 측 암호화
데이터를 전송하기 전에 클라이언트 사이드에서 암호화하는 방식이다.
전송 중 암호화
전송 보안 프로토콜인 SSL/TLS를 사용하여 데이터를 암호화하는 방식으로 HTTPS 보안 프로토콜을 사용하여 전송한다.
S3의 버킷 정책
버킷 정책
S3 버킷에 대한 액세스 제어 정책을 JSON 형식으로 제어할 수 있다. 조건에 따라 버킷에 액세스를 부여하고, 제한하는 기능으로 사용된다.
예를 들어, 특정 AWS 리소스에서만 S3 버킷에 액세스를 허용하게 할 수 있다.
퍼블릭 액세스 차단 (버킷 설정)
버킷과 객체에 대한 퍼블릭 액세스를 차단하거나 허용한다.
데이터 보호를 위해 기본적으로는 퍼블릭 액세스를 차단한다.
ACL(엑서스 제어 목록)
AWS 계정에 버킷이나 객체에 읽기/쓰기 권한을 부여하는 기능으로, 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL을 적용할 수 있다.
정적 웹 사이트 호스팅
S3에서는 정적 웹사이트를 호스팅 할 수 있다. 여기서 정적 웹사이트란 언제 접속해도 항상 같은 내용을 보여주는 변하지 않는 사이트를 의미하는데, 회사 소개 홈페이지가 그 예이다. 반대로 동적 웹사이트란 접속할 때마다 내용이 변하는 사이트로, SNS 홈페이지나 쇼핑몰 등이 있다.
S3에서 웹사이트 호스팅 시, EC2등의 별도의 웹 서버 운영을 하지 않아도 된다는 장점이 있다.
액세스 로깅(Access Logs)
S3 버킷의 모든 활동을 파일로 만들어 저장하는 기능을 말한다. 감사 목적으로 활용이 가능하며, 로그 분석을 위해 Amazon Athena와 같은 분석도구를 사용이 가능하다. 이 때 주의할 점은, 절대로 로그 파일을 로그의 대상이 되는 버킷에 저장하면 안된다는 점이다. 이 경우 무한루프로 인해 로그파일이 계속해서 증가하게 되는 대참사가 발생한다.
S3 Replication (복제 규칙)
S3 버킷 간에 객체를 자동으로 복제하는 기능을 말한다.
교차 리전 복제 (CRR, Cross Region Replication)
서로 다른 AWS 리전의 S3 버킷으로 객체를 복제하는 방식이다.
미국에 있는 사용자가 한국 지역의 버킷에 있는 데이터에 접근한다고 가정해보자. 만약 한국에 있는 데이터를 복제하여 미국 리전의 버킷에 두고, 미국 사용자로 하여금 이 버킷에 접근하도록 한다면 더 효율적인 데이터 접근 방식이 될 것이다. 이를 가능하게 하는 것이 CRR이며, 재해복구(DR)와 같은 상황에서도 유용하게 사용된다.
동일 리전 복제 (SRR, Same Region Replication)
같은 AWS 리전의 S3 버킷으로 객체를 복사하는 방식으로 주로 동일한 데이터를 사용하는 프로덕션과 테스트계정 간의 복제나 법적 준수사항으로 인해 데이터 복사본을 만들어 놓아야 하는 경우에 진행된다.
위와 같은 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 하며, 다른 AWS 계정의 버킷으로도 복제 가능하다는 특징이 있다.
S3 스토리지 클래스
S3 Standard(범용)
짧은 지연 시간과 많은 처리량을 제공하며 일반적인 용도의 다양한 사용 사례에 적합하다.
S3 Intelligent-Tiering
액세스 패턴을 모니터링하고, 액세스하지 않은 객체를 저렴한 액세스 계층으로 자동으로 이동시킨다.
액세스 패턴을 알 수 없거나, 변화하는 데이터에 대한 스토리지 비용을 최적화 하려는 경우에 사용한다.
S3 Intelligent에 업로드하거나 이전한 객체는 Frequent Access 계층에 자동으로 저장되며, 액세스 패턴을 모니터링 한 후 30일 연속 액세스되지 않은 객체는 Infrequent Access 계층으로 이동한다. 이후 90일이 되면 Archive Access, 180일이 되면 Deep Archive Access 계층으로 이동한다.
S3 Standard-IA(빈번하지 않은 액세스용)
자주 액세스하지 않지만, 액세스 해야하는 경우 매우 빠르게 처리되어야 할 때 적합하며 최소 과금기간이 30일이여서 30일이 끝나기 전에 객체를 삭제해도 30일치의 요금이 부과된다.
S3 One Zone-IA
자주 액세스하지 않지만 필요할 때 빠르게 액세스 해야하는 데이터에 적합하다. 최소 3개의 가용영역(AZ)에 데이터를 저장하는 다른 스토리지 클래스와는 달리 단일 AZ
에 데이터를 저장하기 때문에 비용이 저렴하며, 가용성 및 복원력이 필요 없는 고객에게 적합하다. S3 Standard-IA와 동일하게 30일 단위의 과금 기간을 가진다.
Glacier Instant Retrieval (아카이브용)
저렴한 비용으로 데이터를 장기 보관하는 용도로 사용한다.(일반적으로 백업)
분기에 한 번 액세스하는 용도로 사용되며, 밀리초 내에 즉시 검색이 가능하다. 최소 과금 기간은 90일이다.
S3 Glacier/Glacier Flexible Retrieval (아카이브용)
저렴한 비용으로 데이터를 장기 보관하는 용도로 사용한다.(일반적으로 백업)
일년에 한 번 액세스하는 용도로 사용되며 검색에 몇 분~ 몇 시간의 검색 시간이 소요된다. 최소 과금 기간은 90일이다.
S3 Glacier Deep Archive(아카이브용)
가장 저렴한 스토리지 클래스로 일년에 한 번 미만으로 액세스하는 용도로 사용된다.
7-10년 이상 데이터를 장기 보관하는 용도로, 검색에는 몇 시간 단위가 소요되며 최소 과금 기간은 180일이다.
객체의 수명 주기 관리(Lifecycle Policy)
객체가 저장되어 삭제될 때 까지의 수명 주기를 효율적인 비용으로 저장되도록 관리하는 기능을 말한다.
버전 관리가 활성화 되어 있을 경우 객체의 버전별로 수명 주기 정책을 적용할 수 있다.
Storage Gateway
Storage Gateway란
Storage Gateway는 온-프레미스 데이터 센터의 데이터와 AWS 클라우드의 스토리지를 연결하는 서비스이다.
하이브리드 클라우드 스토리지로도 부르며, 온-프레미스의 데이터를 AWS 클라우드로 실시간 전송 및 저장이 가능하다.
또한 로컬캐시 기능을 사용하여 자주 사용하는 데이터를 보관할 수 있으며 파일 백업, 클라우드 파일 저장소, 재해복구 저장소의 용도로 사용한다.
온-프레미스 스토리지 공간과 관련 비용을 절감하는 효과를 가지고 있으며, 4 가지 유형의 게이트웨이를 제공한다.(S3 파일 게이트웨이, FSx 파일 게이트웨이, 볼륨게이트웨이, 테이프게이트웨이)
FSx
FSx for Lustre
리눅스 환경을 위한 고성능 병렬 스토리지 시스템이다.
병렬 스토리지 시스템은 스토리지를 병렬로 처리하기 때문에 분산 파일 시스템(Distributed File System)이라고도 한다.
따라서 머신 러닝, 빅데이터 등의 고성능 컴퓨팅에 사용한다(HPC)
Amazon S3 버킷과 통합 구성하여 같이 사용 가능하며, 온-프레미스 서버에서 액세스 가능하다.
FSx for WIndows File Server
Elastic FIle System은 리눅스 환경의 파일 공유 서비스이므로 윈도우 환경에서 사용할 수 없다. 따라서 FSx for Windows File Server를 사용하여 윈도우 서버에 파일 공유 서비스를 구축한다.
SMB 프로토콜을 이용하기에 윈도우, 리눅스 OS에서 액세스가 가능하며 사용자 액세스 제어를 위해 Active Directory 서비스와 통합 가능하다.
또한 온-프레미스 서버에서 액세스가 가능하다.
Snow Family
데이터를 네트워크가 아니라 물리적인 장치에 저장하여 전송할 수 있는 디바이스를 말한다.
온 프레미스에 있는 데이터를 AWS로 마이그레이션 해야 할 때 사용하며, 제한된 시간안에 마이그레이션 하거나, 1회성이거나, 가장 적은 시간을 소요해야 하거나, 회사 네트워크의 사용 제한이 있는 등의 제약조건이 있는 경우 선택하는 방법이다.
Snow Family 데이터 전송 절차
스노우볼 디바이스를 요청 -> 주문자에게 디바이스 배송 -> 서버에 연결하여 데이터 복사 -> AWS 데이터 센터로 디바이스 배송 -> AWS 데이터센터에서 S3 버킷으로 데이터 복사 -> 스노우볼 데이터 제거
Snow Family의 유형
- AWS Snowcone
AWS Snow 패밀리 데이터 전송 디바이스 중 가장 작은 제품으로, 8TB 스토리지를 제공한다.
디바이스 배송을 통해 오프라인으로 데이터를 전송하고, AWS DataSync를 통해 인터넷으로 AWS를 전송할 수 있다. - AWS Snowball
데이터 마이그레이션 및 엣지컴퓨팅 디바이스이다.엣지컴퓨팅: 데이터 소스의 물리적 위치와 가까운 곳에서 컴퓨팅을 수행하는 것
Snowball Edge Storage Optimized 디바이스(vCPU 40개, 80TB storage)와 Snowball Edge Compute Optimized(vCPU 52, 42TB storage)라는 두 유형을 제공한다. - AWS Snowmobile
45피트 운반 컨테이너로 최대 100PB를 전송하며 멀티 페타바이트 또는 엑사바이트 급 디지털 미디어 마이그레이션 및 데이터 센터 종료에 적합하다.
AWS DataSync
온-프레미스와 AWS간 또는 AWS 스토리지 서비스간 데이터 전송 및 복제를 자동화하는 서비스이다.
SMB나 NFS 프로토콜을 사용하는 온프레미스 서버의 파일을 AWS의 S3, EFS, FSx for WIndows로 전송한다.
온-프레미스 데이터를 S3, EFS, FSx for WIndows File Server로 마이그레이션하거나, S3 Glacier로 아카이빙 하기 위해 사용한다.
또한 AWS 서비스 내의 스토리지간 데이터 이동을 위해서도 사용된다.
전송 및 전송 종료 시 데이터 무결성 확인 및 암호화가 가능하며, 예약 동작이 가능하다.
AWS DataSync vs AWS Snowball Edge
DataSync는 온라인, Snowball은 오프라인으로 데이터를 전송한다.
AWS DataSync vs AWS Storage Gateway
DataSync는 초기에 일회성으로, Storage Gateway는 온프레미스 파일 기반 애플리케이션의 지속적인 액세스를 유지한다.
AWS Backup
중앙 집중식 백업 관리 서비스로 작동하며, 백업 대상은 아래와 같다.
- FSx
- EFS
- DynamoDB
- EC2
- EBS
- RDS
- Aurora
- Storage Gateway
- VMware 가상머신
교차리전 백업, 교차 계정 백업을 지원하며 리소스 태그 기반으로 백업 정책이 구성 가능하다.
DataBase
관계형 데이터베이스(RDS)
데이터들이 서로 연결되어 관계들로 구성된 데이터베이스를 말한다. 데이터를 테이블(스키마) 형태로 관리하여 관계를 통해 연결된 여러 테이블에 분산시킨다.
SQL 언어를 사용하여 데이터를 검색하고 조작하며, 데이터를 중복 없이 다루기 때문에 무결성이 보장된다.
대표적인 서비스로 Amazon RDS, Amazon Aurora가 있다.
RDS on EC2
EC2에서 운영되는 RDS로, 사용자가 직접 RDS 데이터베이스를 설치, 백업, 소프트웨어 패치 관리를 진행하며 모든 권한을 가지고 있다. 하지만 이에 따라 리소스가 많이 요구되기 때문에, 사용자가 직접 운영을 할 필요가 없는 AWS 관리형 RDS 데이터베이스인 Amazon RDS, Amazon Aurora등을 제공한다.
Amazon RDS
AWS 관리형 데이터베이스 서버로, 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업을 AWS에서 관리한다.
SQL 쿼리를 사용하는 데이터 베이스 용도에 사용하며, DB 다운타임 없이 스토리지 용량을 자동으로 확장 가능하다.(Storage Auto Scaling)
또한 DB 인스턴스 백업 및 복구를 위해 자동 백업 및 데이터베이스 스냅샷을 제공한다.
SSL/TLS 를 사용하여 애플리케이션과 DB 인스턴스 간의 전송 중 암호화가 가능하며 AWS Key Management Service(KMS)를 통해 관리하는 키를 사용하여 모든 데이터베이스 엔진에 대한 저장 중 암호화가 가능하다.
Read Replica
RDS의 주요한 기능 중 하나로 읽기 전용 복제본(Read Replica)이 존재한다. 이는 읽기만 가능한 DB 인스턴스의 복제본을 여러 개 만드는 기능을 의미하며, 읽기를 별도로 분리하면 원본 DB의 읽기/쓰기 트래픽을 분산시킬 수 있기 때문에 성능이 향상된다. SQL 쿼리를 많이 사용하는 경우 읽기 복제본을 사용하여 쿼리 성능을 향상 시킬 수 있다.
다중 AZ
RDS의 주요한 다른 기능으로 다중 AZ(Multi-AZ)이 존재한다. 이는 데이터베이스를 여러 가용 영역에 배치하는 것으로, 한 곳의 DB에 장애가 발생하면 다른 가용영역에 만들어 놓은 복제 DB를 원본 DB로 승격시켜 사용하는 방식이다
Aurora
RDS 호환형 관계형 데이터 베이스로, RDS에서 제공하는 읽기 전용 복제본, KMS 암호화, 스냅샷 백업, 오토스케일링 등을 제공한다. AWS에서 만든 서비스로 다른 RDS보다 저렴한 비용에 성능이 더 뛰어나다는 장점이 있으며, 데이터베이스 설정, 패치 적용 및 백업과 같은 관리 태스크를 자동화한다.
개별 DB 인스턴스 기반이 아니라 여러 인스턴스를 하나로 묶어 운영하는 클러스터 DB 기반으로 구성된다.
DB 인스턴스 운영 및 데이터 베이스 용량을 수동으로 관리해야 하지만, 이를 AWS에서 대신 관리해주는 서버리스 RDS 서비스인 Aurora Serverless를 제공하고 있다.
NoSQL 데이터 베이스
NOSQL, non-SQL, non relational database 라고 부른다.
관계 구조를 갖지 않는 데이터 베이스 시스템이기 때문에, 대규모의 데이터를 처리하는 과정에서 테이블 간 연관관계를 고려할 필요가 없기 때문에 유연하게 처리할 수 있다는 장점이 있다.
key-value database, document, column family, graph database 등의 종류가 존재한다.
DynamoDB
NoSQL 데이터베이스 서비스로, 키-값, 문서 데이터 모델을 지원한다.
서버리스 서비스에 해당하며, 용량에 맞게 Auto Scaling을 지원하며 관리 및 운영 오버헤드를 최소화한다.
10ms 미만의 빠른 응답을 제공하며, 초당 수백만개 이상의 요청을 처리할 수 있어 지연시간이 짧고 빠른 응답이 필요한 애플리케이션에 사용된다. 일반적으로 쇼핑몰 장바구니, 은행 트랜잭션, 게임 플레이어 기록 저장 등에 사용된다.
Neptune
완전 관리형 그래프 데이터 베이스 서비스로, 관계를 저장하고 탐색하도록 구축된 데이터베이스이다.
노드를 사용하여 데이터 엔티티를 저장하고, 엣지로는 엔티티 간의 관계를 저장한다. 예를 들어, 소셜 네트워크 그래프에서 사람들과 그 사이의 관계를 보면서 누가 누구의 친구인지 알 수 있다.
인 메모리 데이터 베이스
디스크가 아닌 주 메모리에 데이터를 보유하고 있는 데이터베이스를 말한다.
디스크 검색보다 자료검색이 빠르며, 대표적으로 Amazon Elasticache가 있다.
ElastiCache
인 메모리 데이터 스토어로, 1밀리 초 미만의 빠른 응답시간을 제공한다.
기존의 RDS와 연결하여 DB 응답성능을 개선하기 위해 사용하며 세션 스토어, 게임 리더보드, 스티리밍 및 분석과 같이 내구성이 필요하지 않는 기본 데이터 스토러로 사용한다.
오픈 소스 인메모리 데이터베이스 솔루션인 Redis 또는 Memcached 두 유형을 지원하는데, Redis는 싱글 쓰레드, Memcached는 멀티쓰레드를 제공한다.
다만 Redis를 스냅샷 백업, 복제 기능, 고가용성 제공 등의 추가적인 기능등을 제공한다.
Database Migration Service
데이터 베이스를 마이그레이션 하는 서비스로, 온-프레미스에서 AWS로, 또는 AWS 내에서 마이그레이션이 가능하다.
원본 DB를 사용하는 중에도 지속적으로 마이그레이션이 가능하며 다른 종류의 DB를 대상으로도 가능하다. 단, 이 기종의 DB는 Schema Conversion Tool을 사용하여 데이터 스키마를 마이그레이션 대상 DB에 적합하게 변환해야 한다.
데이터 분석 서비스
Amazon Athena
SQL 문을 사용하여 S3에 저장된 데이터를 분석할 수 있는 쿼리 서비스로, 데이터를 로드할 필요 없이 S3에 저장된 데이터를 직접 사용한다.
Amazon EMR(Elastic MapReduce)
빅데이터 플랫폼인 Hadoop 클러스터를 손쉽게 생성해주는 서비스이다. 데이터 처리를 위한 EMR 클러스터를 자동으로 구성하고 확장 및 축소하는 기능을 한다. 머신러닝이나 빅데이터 처리 등에 사용한다.
Amazon Redshift
데이터웨어하우스 서비스이다. 데이트웨어하우스란 정보에 입각한 의사 결정을 위해 분석 가능한 정보를 모아둔 중앙 리포지토리를 말한다.
데이터는 Dababase, S3 및 기타 소스로부터 정기적으로 데이터 웨어하우스에 저장된다.
AWS Glue
데이터 분석을 위한 ETL(Extract, Transform and Load) 서비스이다.
다양한 소스에서 데이터를 검색하고 추출하며, 데이터를 강화하고 정규화한다. 또한 데이터 베이스, 데이터 웨어하우스 및 데이터 호수에 데이터 로드 및 구성 등의 여러 작업을 진행한다.
AWS QuickSight
클라우드 기반의 비지니스 인텔리전스(BI) 도구이다.
대시보드를 만들고, 그래프 등의 시각화를 통한 데이터분석을 통해 의사결정을 도와주는 서비스이다.