목차에 따른 추가개념 위주로 정리하였음.
다이어그램 생성 사이트 :draw.io
https://app.diagrams.net/
Introduction
01. 클라우드 컴퓨팅의 이점(6가지)
02. AWS 장점
-
- Tip) AWS의 Public Documents 의 영어문서 변경이 더 빠르기 때문에, 문서를 확인 할 때, 한글과 함께 영어문서도 함께 확인 할 것(한글문서는 변경사항이 반영안되어있을 수 있음)
- 26개의 리전, 각 리전당 복수개의 가용 영역, 310개 이상의 엣지로케이션
- 엣지로케이션은 CF와 함께 지연시간을 줄이기 위해 사용됨.(고객이 직접 지정해 사용할수는 없음)
03. 주요 AWS 서비스
-
- 컴퓨팅서비스: EC2 , Auto Scaling
- 스토리지 서비스 : EBS(DAS 개념), S3(객체스토리지, API로 호출, 스토리지 3중화 ,개수와 데이터 사이즈 제한), Glacier(자주 접근X데이터, 옵션으로 빠른 검색도 지원함)
- 데이터베이스 서비스 : RDS(managed 서비스, 35일 이내에 특정시점으로 롤백 가능)
- 네트워크 서비스: VPC(고객 계정마다 리전당 1개로 Any open된 172.xx 대역의 Default VPC 생성됨)
- 보안 서비스: 책임 공유 모델(고객책임, AWS책임. but, maanaged 서비스의 경우는 좀더 유연하게 볼 수 있음),IAM(사용자, 그룹, 정책),Cloudtrail(감사,보안 인증을 받기위해 필요, 90일간의 모든 데이터는 콘솔에서 확인 가능, 이후에는 S3에 저장)
- 모니터링 서비스 :CloudWatch(임계치 및 알람설정,API로도 제공되어서 그라파나에서도 사용가능)
EC2 / ELB
01. Global Infrastructure
-
- AWS 자원(리소스) 레벨
- 글로벌 레벨(리전에 상관없이): IAM ,Route53, WAF, CF
- 리전 레벨(특정 리전을 지정): S3, DynamoDb,...
- 가용영역 레벨(특정 가용영역 지정) : EC2, EBS(→ 둘은 같은 가용영역 내에서 사용)
02. EC2 Overview
-
- EC2는 하이퍼바이저 위의 가상 서버로 가용영역 레벨.
- 인스턴스 유형 - 넥슨에서는, 컴퓨팅이 중요한 경우 C5, 싱글코어가 중요한 경우 Z1d를 사용.
- 인스턴스 크기 - c5.8xlarge = c5.xlarge * 8 → 동일한 하드웨어를 어떻게 쪼개서 사용할지 결정
-
spot인스턴스 (비용옵션) - 단기간 사용시에 적합(ex. 일시적인 배치작업에서 여러개의 EC2가 필요한 경우)
- 운영체제→ 넥슨은 MS Windows 2012/2016/2019를 많이 사용 중
-
인스턴스 수명주기
- 실행중(running) - 과금 발생
- 정지(Stopped) - 과금 안됨(but,스토리지 비용은 부과)
- 종료됨(Terminated) - 완전히 제거, 과금 안됨*(but, 스토리지는 옵션에 따라)
03. EC2 Security and Design
-
-
EBS는 EC2와 다른 하드웨어에 존재하며 네트워크로 통신(Host 컴퓨터 문제시에도 안정성 유지 가능)
-
EBS / instance Store 중 무엇을 사용하는지는 인스턴스 생성시의 AMI에 명시
-
인스턴스 스토어는 같은 호스트 컴퓨터에 있어 더 빠른 속도, but 정지-시작 시 데이터가 없어짐으로, 임시저장소 목적
-
EC2 보안그룹 - 상태를 저장하는 stateful한특징, 소스에 다른 보안그룹 명 입력가능,EC2의 랜카드 별로 지정가능
-
default VPC와 사용자 생성 VPC는 공인(public)IP 자동 할당의 여부( default VPC는 자동할당)
-
EC2 키페어는 EC2접속을 위한 key로 IAM Access Key 와는 다른 개념
-
인스턴스 메타데이터에 인스턴스 아이디 등의 정보가 있음(curl로 접속)
04. Elastic Load Balancing
-
-
L4(tcp/udp), L7(http/https) 서비스 → 접속 프로토콜에 따른 분류
- 기본 2개 이상의 가용영역
에서 사용→ 하나의 가용영역 장애시 다른 ELB에서 리소스 처리 가능(Cross-Zone Load Balancing)
-
CLB/ALB의 IP는 변경 가능하므로 도메인으로 접근할 것(NLB는 고정 IP할당← client IP 위치가 필요한 경우에 사용)
Storage
01. AWS Storage Service
-
블록 스토리지 - NTFS,UFS(windows), ExtFS,ZFS(Linux) 프로토콜 사용
-
파일스토리지 - SMB(윈도우즈), NFS(리눅스) 프로토콜 사용 / NAS 스토리지 / 직접연결 보다는 Network 연결 / 다수의 서버에 연결시에 파일 공유에 이용가능
-
오브젝트 스토리지 - 다양한 데이티어 유형 / API 기반의 접근(http/httpps)
-
AWS Snow Family(ex. Snowball, Snowmobile..) - 엄청난 양의 데이터 이동 시에, 네트워크 기반이 아닌 물리적으로 이동시키는 서비스
02. Block Storage
-
EBS- 인스턴스와는 별도의 서버에 있으며, 인스턴스와는 네트워크로 연결된다. → EC2와 물리적으로 독립적
- 비용지불시 사용한 용량이 아닌 생성한 용량 만큼 지불
- 사이즈를 늘리거나 추가 생성은 가능하지만, 사이즈를 줄일 수는 없음(→ 새로운 사이즈의 EBS 생성 후 이동시키는 방법 사용)
- 데이터가 저장될 때와 이동할 때에 암호화가 기본으로 제공
- 보통 하나의 EC2 인스턴스가 다수의 EBS 볼륨과 연결 가능(Nitro기반의 최신 인스턴스는 최대 28개까지 생성 및 연결 가능)
-
가용영역 레벨의 서비스 → 단일 가용영역에서 사용
- EBS 종류별 비교
- SSD 기반
- 범용모드(gp2,gp3 → gp2는 credit과 버스트 기능, 용량에 따른 IOPS/ gp3는 복잡한부분을 없애고,필요한 만큼 구매 후 사용)
- 프로비저닝 된 IOPS 모드(io1,io2) → i/o 집중적인 작업에 적합함(최대 64,000 IOPS)
- HDD 기반 - 저비용 / iops 보다 순차적 작업이 필요할 때
-
Instance Store - EC2 인스턴스와 같은 호스트에 있음
-
Stop/Start로 재기동 시에 , 하드웨어가 바뀐다면 데이터는 사라짐(휘발성)
03. File Strage
-
EFS - 완전관리형 서비스(managed service)
04. Object Storage
- S3 - 다양한 클래스를 제공하며, 계속해서 신기능이 추가 됨
- Access Frequency에 따른 클래스 분류
Security
01. 데이터센터 보안(AWS 측)
02. 보안 책임 공유 모델
서비스 제공 유형
-
인프라 서비스 - 사용자가 직접 운영 체제를 제어,AWS는 물리적 파트만,고객의 부담이 큼 (ex. EC2,VPC,EBS)
-
컨테이너 서비스 - Managed Services가 해당(ex. RDS)
-
추상화된 서비스 - Serverless Services가 해당,고객은 고객데이터와 클라이언트 암호화만 관리, AWS의 부담이 비교적 큼(ex. S3)
주요 규제/표준 준수 (ex. K-ISMS)
AWS Artifact - 고객의 보안인증을 돕기 위해 AWS Artifact에서 AWS의 인증내역을 조회 가능
03. 사용자 및 접근 관리
사용자
-
AWS 루트 Account
-
IAM 사용자 - 접근 권한 소유
-
IAM 그룹 - 다수의 사용자 관리
추가적인 관리기능
-
정책(Policy) - Access 관리 방법
-
Access Key - 콘솔이 아닌 CLI에서 AWS API를 호출 할 경우 필요
-
MFA - 이중보안 설정
AAA Framework
-
인증(Authenticate) - 사용자 아이디(콘솔용), Access Key(API 호출용), MFA
-
권한(Authorize) - IAM Policy, (사용자기반 정책, 리소스기반 정책) , JSON으로 작성되
-
책임 추적성,감사(Audit) - 로깅, CloudTrail
IAM 역할(Role)
- Access Key와 같은 명시적인 권한 증명 필요 X
- 고정적인 값이 아님 → 임시적 토큰
04. 암호화
KMS( Key Management Service) - 키 관리 서비스
05. 감사
종류
-
CloudTrail
-
CloudWatch Events
-
AWS Inspector - CVE(Rule 패키지 중 AWS측에서 취약점 검사)
-
AWS Config - 1개의 리소스관점에서 기록/추적
-
Amazon Macie - 민감한 데이터
-
Trusted Advisor - 리포팅 환경 제공(사용자의 AWS 환경에서)
Networking
01. AWS Global Infrastructure
AWS 주요 네트워킹 서비스
-
VPC
-
VPN - 기본 인터넷망 +AWS 보안
- Client VPN(사용자와 VPC)
- Site-to-Site VPN (온프레미스와 VPC)
-
Direct Connect - 전용망 (온프레미스와 VPC)
-
ELB - VPC 레벨의 LB 서비스
-
Route53 - DNS 서비스
02. VPC
독립된 가상의 클라우드 네트워크
-
IP대역-
CIDR 블록으로 지정( /16~ /28) → 생성 후 변경이 불가능하므로 초기생성시 확장성을 고려해야 함
-
서브넷 - 5개의 예약된 IP주소가 있음→ 제외하고 사용 가능 , 서브넷 생성시 VPC IP대역 이내에서 IP대역 지정 필요
-
라우팅 테이블 - 서브넷단위로 생성, 패킷의 방향을 지정함(ex. IP 대역에 따라 → IGW와 VGW로 보낼 수 있음)
-
보안그룹- ENI단위, stateful(Inbound 허용시 Outbound도 허용) , ONLY 허용 가능.
-
NACL - 서브넷 단위, Stateless(Inbound, Outbound 트래픽 모두 명시적 허용 필요), , 허용과 거부 모두 가능
VPC 확장
-
NAT Gateway - Public 서브넷에 위치하여 Private 서브넷의 패킷을 퍼블릭으로 변환하는 역할, 라우팅 테이블로 관리, Elastic IP필요
-
ㅊEIP - 리전당 5개(soft-limit)
- Allocation(IP할당) / Release(반납) → EIP 할당 받고 사용하지않으면 과금
- Associate(EIP 인스턴스에 연결) / Disassociate(분리)
With On- Premise
-
VPN(site-to-site VPN) -전용선이 아닌 인터넷 망 사용
-
Direct Connect -DX Location(ex. KINIX,U+)을 통해 전용망으로 직접연결
- VPN과 DX를 같이 사용, hybrid방식으로 사용 가능
Network Option
-
VPC Endpoints
- Interface Endpoints(다양한 서비스)- DNS방식
-
Gateway Endpoints(S3/DynamoDB) - 인터넷을 경유(NAT, IGW)하지 않고 같은 리전내의 VPC에서 서비스와 직접 연결 가능(NAT를 거치는 것 보다 유리한 비용), 라우팅 테이블 사용
-
VPC Peering - 동일리전/다른리전/다른 어카운트 간에 전용 연결, 라우팅 테이블 이용(단점: 1:1연결만 됨으로 필요 갯수가 많아질 수 있음)
-
Transit Gateway -
중앙집중식 라우팅 ← VPC 피어링의 단점을 보완
-
VPC Flow logs - ENI 단위 Network 패킷 수집
03. VPN
-
AWS site-to-site VPN - 2개의 터널로 이중화(고가용성)
04. Direct Connect
-
VPN보다 낮은 지연시간과 높은 안정서 ㅇ제공
-
2의 DX Location 사용을 권장
-
물리적 분리 가능(→NEXON은 독자적 전용선 사용중)
05. Route53
-
유일하게 100% SLA(가용성 보장 지표) 제공
추가 Network Issue
Q.) AZ가 2개 이상일 때, 각 EC2 접근에
NAT Gateway가 한개
만 있을 경우와 각 A
Z별로 NAT Gateway를 두는것
의
차이점
?
A.)
-
고가용성 측면 - 하나의 AZ 장애 발생시에 인터넷 연결에 지장이 생기지않게 하기위해.
-
비용적 측면 - 같은 AZ에 있는 NAT Gateway를 사용하는것이 다른 AZ에 있는 NAT Gateway를 사용하는 것보다 비용이 낮음 (but,퍼블릭 인스턴스에서 접근하는 경우에는 비용x)
Database
The Data Flywheel
-
Break free from legacy database
-
Move to managed
-
Modernize your data warehouse
-
Build data-driven apps
-
Turn data to insights
01. Amazon RDS
주요 상용 및 Open Source Database를 관리형 데이터베이스로 제공
장점
- 관리의 용이성
- CloudWatch → Enhanced Monitoring(옵션)을 사용하면 더 상세히 사용 가능(but, 비용 발생), CloudWatch Logs를 이용해 audit log나 slow log를 볼 수 있음
- RDS에서는 Performance Insights에서는 쿼리수행 내역 등을 보여줌(쿼리튜닝시 사용가능, Only Mysql, PostgeSQl)
- 규모 확장의 유연성
- Scale up에서 다양한 옵션(트랜잭션, 데이터 저장)
- 고가용성
- 복수 가용영역 사용 가능(생성시 Multi-AZ옵션 선택)
- Read Replica(Primary 인스턴스에 읽기/쓰기 요청이 집중된 워크로드에서, read replica를 사용하여 분산처리 가능, 크로스 리전 복제 가능, 장애복구 옵션)
- Automated Backup - 하루에 한번 지정된 시간에 백업 수행 (failover를 위한 standby 인스턴스에서 백업을 진행하기 때문에, 성능저하는 X)
- 높은 보안 수준
- 데이터 기본 암호화, Data Encryption 옵션 사용시, CMK사용하여 이중으로 암호화 가능
- 많은 보안 규제를 충족
02. Amazon Aurora
MySQL 과 PostgreSQL에서 비용, 성능 측면에서 더 뛰어남
-
3개의 AZ를사용(각 AZ에 Primary 인스턴스1개, Replica 인스턴스 2개), 4/6 quorum
-
직접복제(data)와 double-write 복제는 일어나지 않음(but, change log데이터는 복제가 됨) ← 성능향상
03.Amazon Redshift
Data warehouse 서비스, 1/4 수준의 비용
OLAP(트랜잭션보다는 조회(Selct/read)에서 성능 , 분석에 초점↔ OLTP(select보다는 write 작업이 많은) 형태로 방대한 데이터를 한곳에 집중시킨 것
-
컬럼 기반 데이터베이스(row X)
- Amazon Redshift Spectrum - S3의 데이터를 쿼리형태로 바로 읽어서 볼수 있는 기능
- Amazon Redshift ML(Preview) - SQL 명령문으로 ML모델을 생성하고 조회도 가능
04. Amazon Dynamo DB
빠르고 유연한 Serverless NoSQL database Service
-
굉장히 많은 데이터 요청(request)를 작은 지연시간으로 받을 수 있다. (미리 프로비저닝 가능 rcu/wcu)
- Table 구조와 GSI(Global Secondary Index) - 여러개의 파티션으로 분산될 수 있도록(partition key 설정 필수, sort key는 선택)
- 확장성을 고려한 DynamoDB아키텍쳐 → ex. ~~게임 서비스의 ~~요구사항에 맞게 partitoin key 설계)
05. Amazon DocumentDB
MongoDB 호환 Database
- 기존 mongoDB보다 동기화 측면에서 유리, 성능 적인 이점
06. Elasticache
완전 관리형 in-memory database 서비스 (Redis/memcached)
- 게임서비스에도 많이 사용됨(ex. 게임세션서버)
- 데이터의 안정성이 떨어질 수있음 → memory DB출시(옵션) - 성능적인 이점은 낮지만 안정성이 높음
07. Amazon Elasticsearch
Elasticsearch의 완전 관리형 서비스