AWS_Technical_Essentials
AWS의 기본적인 서비스에 대한 정리입니다.
- AWS에서는 Caas (Compute as a Service) wprhd
- 가상 머신, 컨테이너 서비스, 서버리스 등 세 가지 유형의 컴퓨팅 옵션 제공
- AWS에서 안전하고, 크기를 조정할 수 있는 컴퓨팅 용량을 제공
- 가상 서버를 프로비저닝할 수 있음
- 범용 인스턴스
- 컴퓨팅, 메모리 및 네트워킹 리소스를 균형있게 제공
- 컴퓨팅 최적화
- 고성능 프로세서를 활용하여 바인딩된 애플리케이션에 적합함
- 메모리 최적화
- 대규모 데이터 집합을 처리하는 워크로드에 고속 성능을 제공
- 고성능 데이터베이스, 스케일 분산 인메모리 캐시, 실시간 빅데이터 분석 등 많은 메모리를 사용하는 애플리케이션에 사용
- 예약 인스턴스
- 약정 및 안정적 상태의 사용량
- 온디맨드 요금 대비 할인
- 1년 또는 3년
- Savings Plans
- 예약 인스턴스에서 더 높은 유연성 (Fargate, Lambda 사용량에 적용됨)
- 1년 또는 3년
- 스팟 인스턴스
- 내결함성, 유연성, 무상태 워크로드
- AWS 용량을 필요할 때 가져다 쓸 수 있다.
- 온디맨드 요금 대비 최대 90% 할인
- AWS가 필요할 때 언제든지 가져감 (2분 Notice)
- 온디맨드 인스턴스
- 들쭉날쭉 워크로드 또는 일시적 필요
- 약정없이 시간 단위로 컴퓨팅 용량을 구입
- Amazon ECS (Elastic Container Service)
- 컨테이너식 애프리케이션 실행 및 조정
- API 호출을 통한 Docker 지원 애플리케이션 제어
- Amazon EKS (Elastic Kubernetes Service)
- Kubernetes 애플리케이션 실행 및 크기 조정
- 패치, 노드 프로비저닝 및 업데이트 자동화
- EC2 인스턴스를 관리할 필요 없는 완전 관리형 서비스
- 고가용성 및 내결함성 기본 제공
- AWS Lambda: 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행 (인스턴스와 컨테이너를 관리하지 않아도 됨)
- AWS Fargate: 컨테이너에 사용되는 서버리스 컴퓨팅 엔진 (ECS, EKS 지원)
가상 사설 네트워크. 격리의 단위. VPC가 다르면 접근할 수 없다.
가용 영역을 포함해서 만들어진다. 하나의 가용 영역이 장애가 났을 때 문제가 생기지 않도록
VPC 안에서 어떻게 IP를 사용할 것인가를 결정
- 192.168.1.0/24
앞에 3개는 고정하고(24/8=3) 맨 뒤만 변경해서 2^8 만큼 사용하겠다. - 10.0.0.0/16
앞에 2개는 고정하고(16/8=2) 2 개만 변경해서 2^8 * 2^8 만큼 사용하겠다.
- VPC 안에 있는 IP를 나눈다.
- 분류: 퍼블릭 서브넷 + 프라이빗 서브넷
- 인터넷 게이트웨이 (인바운드/아웃바운드)
VPC당 한개 만들 수 있음. 퍼블릭 서브넷이 인터넷과 통신하기 위한 수단 - NAT 게이트웨이 (아웃바운드 전용)
프라이빗 서브넷 > 퍼블릭 서브넷 > NAT 게이트웨이 > 인터넷 게이트웨이
- VPN 연결
기업 데이터 센터와 VPC를 연결한다. 속도가 느릴 수 있다. - Direct Connect (DX)
기업 데이터 센터 <> 고객 라우터 <> AWS DX 라우터 <> VPC
인터넷으로 나가지 않음. 속도가 빠름
-
NACL (Network Access Control List)
네트워크 가상 방화벽. 인바운드/아웃바운드를 설정할 수 있음
인터넷 게이트웨이 > ACL > 퍼블릭 서브넷 -
보안그룹
상태 저장. 인바운드만 체크(모두 거부) / 아웃 바운드 (모두 허용)
보안 모범 사례
- 다중 가용 영역 사용
- NACL 및 보안 그룹 사용
- IAM 정책을 사용하여 액세스 제어
- 흐름 로그를 사용하여 VPC 트래픽 캡쳐
- 인스턴스 스토어
EC2에 포함된 스토리지
휘발성이 있다. 빠르다.
모든 인스턴스에 있지는 않다. - EBS
EC2와 연결된 스토리지
비휘발성. 주기적으로 스냅샷. 무료임.
SSD(빠르다)와 HDD로 나누어져 있음
온프레미스 파일을 가져와서 다중의 인스턴스에 제공한다. (가용 영역이 달라도 가능하다)
리전 서비스: VPC 외부에서 만들어지는 서비스
데이터 + 메타데이터 + 키를 묶어서 객체로 저장한다.
- 객체 한번 저장하고, 바뀌지 않는 정적인 데이터를 주로 저장함
- 버킷 AWS에서 글로벌하게 유니크해야함. > URL이 생성됨. 3개의 가용영역에 저장됨 (99.999% 가용성)
- IAM 정책: 사용자, 그룹 및 역할에 연결
- 버킷 정책: 버킷을 만들고, 파일을 저장한다. 그리고 정책을 적용
- S3 액세스 제어 목록: 하나의 파일에 일일히 버킷의 사용자 등을 작성함. 과거에 많이 사용
활성데이터 <-> 보관데이터 (비교적 쌈. 검색하는데 시간이 오래 걸림.)
- Amazon S3 Standard: 활성 데이터
- Amazon S3 Standard-Infrequent Access: 비활성 데이터
- Amazon S3 One-Zone-Infrequent Access: 하나의 가용영역에 저장함 (다시 데이터를 만들어낼 수 있는 경우)
- S3 Glacier: 보관하는 데이터 (가장 싸다)
S3 Intelligent-Tiering: 액세스 패턴에 따라 객체를 자동으로 이동한다.
- 새 버전의 객체 생성
- 버킷 수준에서 활성화
- 기본적으로는 사용 중지 상태
- 검색 가능. 복원 가능.
원래의 DB를 사용할려면 EC2에서 DBMS 소프트웨어를 사용할 수도 있다. AWS에서는 따로 DB를 만들어서 제공한다.
- 목적에 맞게 사용하기 좋음
- 완전 관리형 (고객이 신경써야할 부분이 적다)
- 보안 및 고가용성
- 관계형 DB
- Aurora: AWS에서 만든 관계형 DB
- RDS: 6개엔진 지원 (Oracle, MS SQL, My SQL, ...)
- Redshift: AWS에서 만든 DW
- key-value DB: 빠른 읽기/쓰기 (DynamoDB)
- 인 메모리 DB: 세션 정보 또는 캐싱 역할 (ElastiCache)
- Document DB: Mongo DB와 호환성
- 그래프 DB: 연결에 관련된 데이터 저장 (Neptune)
- 시계열 DB (Timestream)
관계형 DB의 장점
- SQL
- 중복 감소
- 친숙성: 70년대부터 사용
- 정확성
AWS에서 제공하는 관계형 데이터베이스
- AWS 클라우드에서 운영 및 크기 조정
- 시간이 많이드는 관리 작업 자동화
- 데이터를 안전하게 저장 및 전송
DB 이미지를 통해서 다량의 인스턴스를 만들 수 있다.
- 스탠다드
- 메모리 최적화 (메모리를 많이 사용하는 App)
- 버스트 가능 성능 (DB 자원 소모가 많을 때 버스트 기능을 지원한다)
- RDS를 관리하는 사람별로 IAM 사용자 생성
- AWS 루트 계정을 통해서 RDS 관리하지 않기
- 최소 권한 부여
- RDS 암호화 사용
- 프라이빗 서브넷 내에 DB 인스턴스 생성
- Master와 Stand-by 인스턴스가 2개의 가용영역에 생성되며, 동기화가 지속적으로 진행된다.
- 장애가 발생하면 Stand-by로 엔드포인트가 넘어간다.
- Master만 사용된다. 2개가 모두 사용되지 않는다.
- AWS에서 만든 완전관리형 No SQL 서비스 (key-value)
- 확장성이 우수함
- 저장 중 암호화를 제공
- AWS/온프레미스 인프라/리소스를 실시간 모니터링
- 단일 위치에서 모든 지표 액세스
- Alarm: 경보 대응 자동화 (ex. CPU 80%가 5분 간 지속되면 경보 및 서버대수를 늘린다.)
- Logs: 로그를 모두 확인할 수 있다.
- Dashboard: CloudWatch에서 수집된 정보를 그래픽으로 확인 가능
모니터링의 이점
- 운영 문제에 선제적 대응
- 성능 및 안정성 개선
- 보안 위협 및 이벤트 인지
- 데이터에 기반한 의사결정
- 비용 효율적 솔루션 생성
인터넷에서 오는 트래픽을 EC2에 차례로 보낸다.
이점
- 고가용성 및 탄력성 (EC2의 상태를 지속적으로 확인하기 때문)
- 보안 (HTTPS > 복호화 TES)
- 강력한 모니터링 및 가시성
- 통합 및 글로벌 접근성
유형
- Application Load Balancer: HTTP/HTTPS
- Network Load Balancer: TCP/UDP
- Gateway Load Balancer
- Classic Load Balancer: EC2-classic. 요즘은 사용하지 않음
- 내결함성 향상
- 애플리케이션 가용성 향상
- 낮은 비용
수직 크기 조정: 크기 또는 유형 확장/축소
수평 크기 조정: 인스턴스 추가/종료
Auto Scaling
- 최소, 최대, 원하는 용량을 설정할 수 있음
- 자동 크기 조정: 수요에 따라 자동으로 축소 및 확장
- 예약 크기 조정
- 플릿 관리: 비정상 EC2 인스턴스 자동 대체
- 다양한 구매 옵션: 인스턴스 유형 및 가용 영역 포함
- EC2에 포함: EC2와 함께 제공
- 예측 크기 조정: ML 학습을 통해 최적의 EC2 인스턴스 수 예약 가능