[AWS] AWS-Solutions Architect Associate
# AWS-Solutions Architect Associate
Module 1 : 핵심 AWS 지식
1-1. 가용 영역(AZ)
- 하나 이상의 데이터센터로 구성
- 하나의 데이터센터가 2개의 AZ에 포함될 수 없음
- 결함 분리 방식 설계
- 고속 프라이빗 링크로 다른 AZ와 연결
- AZ는 사용자가 선택
- 복원력을 위해 여러 AZ에 걸쳐 복제 권장
1-2. 리전
- 두 개 이상의 가용 영역으로 구성
- 사용자는 리전 전체에서 데이터 복제 적용 및 제어 가능
- 리전 간 통신은 AWS 백본 네트워크 사용
1-3. 비관리형, 관리형 서비스
- 비관리형
- 사용자가 확장, 내결함성 및 가용성 관리
- 로드의 변화, 오류, 리소스를 사용할 수 없게 되는 상황 등을 정교하게 제어 가능
- 관리형
- 확징, 내결함성 및 가용성이 서비스에 내장
Module 2 : 핵심 서비스
2-1. VPC
- AWS 계정 전용으로 호스팅되는 가상 네트워크 프로비저닝
- 다른 가상 네트워크로부터 논리적으로 격리
- 이중 스택모드 가능(IPv4, IPv6 모두 할당가능)
- 많은 AWS 리소스가 VPC에서 시작
-
구성 가능한 기능
- IP 범위
- 라우팅
- 네트워크 게이트웨이
- 보안 설정
- VPC는 리전에 상주 / 하나의 리전 내에 유지
- VPC는 두 개 이상의 가용 영역에 있는 리소스 포함 가능
- 같은 계정 및 리전과 여러 리전 또는 계정에 여러 개의 VPC 생성 가능
2-2. EC2
-
가상 컴퓨팅 제공
-
자체 서버 이미지를 생성, 저장 및 재사용 가능(AMI)
-
보안 그룹을 사용하여 트래픽 제어
-
요금
온디맨드 스팟 예약 전용 호스트 초, 시간 초, 시간 초, 시간 시간 단위 종량 과금 미사용 용량에 입찰 / 입찰가보다 가격이 높은 경우 인스턴스 중단 가능 1년 또는 3년 온디맨드(시간) 구입 / 최대 70퍼 할인된 예약으로 구입 가능 낮은 비용과 유연성 대규모 동적 워크로드 필요할 때 컴퓨팅 파워를 이용할 수 있도록 보장하는 예층 가능성 라이선싱 비용 절감 / 규정 준 수 및 규제 요건 충족 사용한 만큼 만 지불 / 초 단위 청구 수요,공급에 따라 결정 / 초 단위 선결제 금액이 없거나 낮음. 전체 비용 절감 / 초 단위 계정에서 호스트가 활성 상태인 매시간 온디맨드 요금 지불 변동이 심하거나 예층 하기 힘든 단기 워크로드 애플리케이션 개발 또는 테스트 시작 및 종료 시간이 자유로운 애플리케이션 컴퓨팅 가격이 매우 저렴해야만 수익이 나는 애플리케이션 대량의 용량 추가로 긴급히 컴퓨팅 파워가 필요한 사용자 안정적 상태 또는 예측 가능한사용량 워크로드 DR 등 예약된 용량이 필요한 애플리케이션 기존 보유 라이선스 사용 규정 준수 및 규제 제한 사용량 및 라이선싱 추적 인스턴스 배치 제어
2-3. S3(Simple Storage Service)
- 관리형 클라우드 스토리지 솔루션
- 객체 수준 스토리지
- 데이터는 중복으로 저장
- 전송 데이터와 저장 데이터는 자동으로 암호화
- 이벤트 알림 기능 포함
- EBS 스냅샷, 인스턴스 스토어 지원 AMI 저장
- 스토리지 클래스 분석(S3 Analytics) 제공 : 스토리지 액세스 패턴을 분석하고 올바른 데이터를 올바른 스토리지 클래스로 전환
- 객체는 버킷에 저장 / 버킷은 파일 집합에 대한 접두사(고유한 이름)
- 비용 지불
- 월별 GB / 다른 리전으로 송신 / PUT, COPY, POST, LIST, GET 요청
- 비용 X : S3 수신 / 같은 리전의 CloudFront, EC2로 송신
- 일반 목적 : S3 스탠다드
- 액세스 빈도가 낮은 데이터 : S3 스탠다드-Infrequent Access
- 저장된 GB당 비용 저렴 / PUT, COPY, POST, GET 요청당 비용이 비쌈 / 최소 30일 스토리지
2-4. EBS(Elastic Block store)
-
개별 스토리지 볼륨 생성, EC2에 연결 가능
-
블록 수준 스토리지 제공
-
볼륨은 AZ 내에서 자동으로 복제 / S3로 자동 백업 가능(스냅샷)
-
용도 : EC2용 부팅 볼륨 및 스토리지 / 파일 시스템 내 데이터 스토리지 / 데이터베이스 호스트 / 엔터프라이즈 애플리케이션
-
유형
SSD HDD 범용 프로비저닝된 IOPS 처리량에 최적화 콜드 10,000(IOPS) 20,000 500 250 160MiB/s 320MiB/s 500MiB/s 250MiB/s 시스템 부트 볼륨 가상 데스크톱 개발 및 테스트 환경 I/O 집약적 워크로드 관계형 DB NoSQL DB 낮은 가격, 빠른 처리량 요구되는 스트리밍 워크로드 빅데이터 데이터 웨어하우스 로그 처리 부팅 볼륨 X 자주 액세스하지 않는 대량의 볼륨 스토리지 비용이 최대한 낮아야하는 시나리오 부팅 볼륨 X
2-5. EFS
- 파일 스토리지 / 공유 스토리지 / 페타바이트 규모 / NFS 지원
- 완전 관리형 서비스
- 고가용성 및 내구성을 갖추도록 설계
- 최저 요금 및 설치 비용 X 사용하는 스토리지 비용만 청구
- 파일 시스템을 생성하고 EC2 인스턴스에 파일 시스템을 탑재
- 하나의 AZ에 여러 서브넷이 있으면, 하나의 서브넷에만 탑재 대상이 생성
- 탑재 대상 : 파일 시스템을 액세스하려면 VPC에서 탑재 대상 생성
- 서브넷 ID
- 보안 그룹
- 파일 시스템당 하나 이상
- VPC 서브넷에서 생성
- AZ 당 하나
- 동일한 VPC
- 구현
- EC2 리소스 생성, EC2 실행
- EFS 파일 시스템 생성
- 서브넷에 탑재 대상 생성
- EC2를 탑재 대상에 연결
2-6. Glacier
- 보안, 내구성 및 매우 저렴한 비용을 제공하도록 설계된 데이터 아카이브 서비스
- 전송 데이터 및 저장 데이터에 SSL/TLS 암호화 지원
- 필요할 때 데이터를 즉시 검색 불가능
- S3 수 명 주기 정책을 사용하면 생성 후 기간을 기준으로 객체를 삭제 또는 제거 가능
2-7. RDS
- 관계형 데이터 베이스 / 관리형 서비스
- 확장 가능(컴퓨팅 및 스토리지)
- 자동화된 중복성 및 백업 지원
- Aurora, PostgreSQL, MySQL, MariaDB, ORACLE, MS SQL 지원
- 사용 시기
- 복잡한 트랜잭션, 복잡한 쿼리
- 보통 및 빠른 쿼리/쓰기 속도
- 단일 작업자 노드/샤드 사용
- 높은 내구성
- 사용 X
- 대규모 읽기/쓰기 속도
- 큰 데이터 크기 또는 처리량 수요로 인한 샤딩
- RDBMS 사용자 정의
2-8. Dynamo DB
- 완전 관리형 NoSQL 데이터베이스
- 뛰어난 성능이 필요, 복잡한 작업이 필요 없는 데이터베이스에 적합
- 규모와 관계없이 10밀리초 미만의 지연 시간 제공
- 테이블 크기 및 처리량 제한 X
- 온디맨드 백업을 사용해 테이블 전체 백업 생성 가능
- SSD에서만 실행
- 문서 및 키 값 스토어 모델 지원
- 모바일, 웹, 게임 및 IoT 애플리케이션에 적합
2-9. IAM(Identity and Access Management)
- 리소스에 대한 사용자의 액세스 및 인증을 중앙에서 관리
- 추가 비용 X
- 사용자, 그룹 및 역할 생성, 정책 적용
- 어떤 리소스에 액세스할 수 있고 어떻게 액세스할 수 있는지 관리
- 최소한의 권한 원칙 적용 가능
- IAM 정책은 하나 이상의 권한으로 구성된 공식 문
- 정책을 IAM 엔티티(사용자, 그룹, 역할)에 연결
- 단일 정책이 여러 개의 엔티티에 연결 가능
- 단일 엔티티에 여러 개의 정책 연결 가능
- 모범사례 : 여러 IAM 사용자에게 같은 정책을 연결 할때, 그룹에 정책 할당
- IAM 사용자
- 사용자가 AWS에 생성한 엔티티
- AWS와 상호 작용하는 방법 제공
- 기본 보안 자격 증명 없음
- 모범사례 : 루트 계정 사용자를 위해 관리 권한이 있는 별도의 IAM 사용자 생성
- IAM 그룹
- IAM 사용자 모음
- 전체 그룹에 대한 권한 지
- 기본 그룹 X / 그룹은 중첩 X
- 한 사용자가 여러 그룹에 O
- IAM 역할
- 리소스에 대한 액세스 권한을 위임하는 데 사용
- 임시 액세스 제공
- 사용자 및 그룹에 연결되지 않음
2-10. AWS Config
- AWS 리소스에 대한 상세한 보기 제공
- 리소스 인벤토리, 구성 내역 및 구성 변경 알림을 제공하여 보안 및 거버넌스 지원
- 완전 관리형 서비스
- 리소스 구성을 손쉽게 추적 가능
2-11. CloudTrail
- 계정에 대한 AWS API 호출을 기록하고 로그 파일을 사용자에게 전달하는 웹서비스
- 리소스에 대한 모든 API 호출 기록 / 지정된 S3 버킷에 로그 저장
- 로그 분석 도구와 바로 통합
- 리전 단위 활성화
Module 3 : 환경 설계
3-1. AZ 개수
- 권장 : 리전 당 2개의 AZ
- HA를 위해 3개 이상의 AZ 사용 시, 비용 효율이 떨어짐
- 권장 AZ 수
- EC2 스팟 인스턴스 사용률이 매우 높은 애플리케이션 : 2개 이상의 AZ
- MySQL과 같은 데이터 원본을 사용하는 애플리케이션 : 2개의 AZ
- 카산드라, 몽고DB와 같은 데이터 소스를 사용하는 애플리케이션 : 2개 이상의 AZ
3-2. VPC
- 하나의 VPC
- 하나의 VPC가 적절한 사용 사례는 제한적
- 고성능 컴퓨팅 / 자격 증명 관리 / 한명 또는 매우 작은 팀이 관리하는 소규모 단일 애플리케이션
- 대부분 2개의 기본 패턴을 사용
- 하나의 VPC가 적절한 사용 사례는 제한적
- 다중 VPC 패턴
- 애플리케이션 환경의 모든 리소스 프로비저닝 및 관리를 완전히 제어하는 단일 팀, 조직에 적합
- 복수 계정 패턴
- 대규모 조직 및 IT 팀이 여러 개인 조직
- AWS 서비스 대부분이 실제로 VPC 내에 위치하진 않음
- 리전 간 네트워크 트래픽은 AWS 글로벌 네트워크 백본 통과
- 리전 간 트래픽이 퍼블릭 인터넷 사용할 수 도 있음
- S3와 DynamoDB는 퍼블릭 인터넷을 통과하지 않고도 연결되도록 VPC 엔드포인트 제공
- VPC 엔드포인트
- 인터넷, NAT, VPN 등을 통한 액세스를 없이 VPC와 다른 AWS 서비스 사이에 프라이빗 연결 생성
- 가상 디바이스
- 인터페이스 엔드포인트(aws PrivateLink 구동) : 지원 서비스로 전달되는 트래픽에 대한 진입점 역할을 하는 프라이빗 IP 주소를 포함하는 탄력적 네트워크 인터페이스
- 게이트웨이 엔드포인트 : 라우팅 테이블의 지정된 경로에 대한 대상인 게이트웨이, 지원 aws 서비스로 전달되는 트래픽에 사용(S3, DynamoDB)
3-3. 서브넷
- VPC는 /16과, /28 사이의 CIDR 사용 가능
- 예약 주소
- 0 : 네트워크 주소 / 1: VPC 라우터용 / 2:아마존 제공 DNS 매핑 / 3:차후 사용 / 255:브로드캐스트
- 퍼블릭 서브넷
- 퍼블릭 인터넷 액세스 지원용
- 인터넷 게이트웨이에 대한 라우팅 테이블 항목 포함
- 프라이빗 서브넷
- 퍼블릭 인터넷에 직접 액세스 X
- NAT, 프록시, 배스천 호스트를 사용하여 제한된 아웃바운드 전용 퍼블릭 인터넷 액세스 지원
- 권장
- AZ 당 1개의 퍼블릭 및 1개의 프라이빗 서브넷
- 퍼블릭 보다 프라이빗 서브넷에 더 많은 IP 할당
- 작은 크기보다 더 큰 크기의 서브넷 고려(/24 이상)
- 워크로드 배치 간소화
- 서브넷에 사용 가능한 IP가 부족한 경우 추가 불가능
- 유형
- 데이터 스토어 인스턴스 : 프라이빗
- 배치 처리 인스턴스 : 프라이빗
- 백엔드 인스턴스 : 프라이빗
- 웹 애플리케이션 : 퍼블릭 or 프라이빗
3-4. VPC 트래픽 제어
-
라우팅 테이블
- 서브넷당 라우팅 테이블 하나
- 사용자 정의 테이블 생성 가능
- 서브넷을 특정 라우팅 테이블과 명시적으로 연결하지 않은 경우, 기본 라우팅 테이블과 연결
-
보안 그룹
- 하나 이상의 인스턴스에 대한 인, 아웃바운드 트래픽을 제어하는 가상 방화벽
- 기본적으로 모든 수신 트래픽 거부
- 상태 기반(인바운드 요청이 허용되는 경우 아웃바운드 자동 허용)
- 대상을 CIDR 블록 또는 다른 보안 그룹으로 정의하여 보안 계층 생성 가능
- 리소스에서 송수신되는 트래픽, 리소스 사이의 트래픽 제어
- 새롭게 생성되는 보안그룹은 모든 목적지에 대한 모든 아웃바운드 트래픽을 허용
-
네트워크 ACL
- 서브넷에서 송수신되는 트래픽을 제어하는 선택적 가상 방화벽
- 기본적으로 모든 송수신 트래픽 허용 / 상태 비저장 규칙 사용
- 서브넷 경계에서만 적용
-
보안그룹 vs NACL
보안그룹 NACL 인스턴스 레벨 서브넷 레벨 허용 규칙만 허용, 거부 규칙 상태 저장 상태 비저장 트래픽 허용 여부 결정 전에 모든 규칙 평가 트래픽 허용 여부 결정 시, 규칙을 번호순으로 처리 인스턴스 시작 시 보안 그룹 지정하거나, 보안 그룹을 인스턴스에 연결하는 경우 적용 연결된 서브넷에서 모든 인스턴스에 자동 적용 -
인터넷 게이트웨이
- VPC의 인스턴스와 인터넷 간에 통신 허용
- 가용성이 뛰어나며, 중복적, 수평적으로 확장
- VPC에 연결
- 서브넷의 라우팅 테이블이 인터넷 게이트웨이를 가리키도록 설정
- 서브넷의 인스턴스가 퍼블릭 IP 또는 탄력적 IP를 갖도록 설정
-
NAT
-
프라이빗 서브넷의 인스턴스가 인터넷 또는 다른 AWS 서비스로의 아웃바운드 트래픽을 시작하도록 활성
-
프라이빗 인스턴스가 인터넷에서 들어오는 트래픽을 수신하지 못하도록 차단
-
퍼블릭 서브넷의 NAT로 설정된 EC2 인스턴스
-
NAT 게이트웨이
VPC NAT 게이트웨이 NAT 인스턴스 고가용성 기본 스크립트 사용해 장애 조치 관리 AWS에서 관리 고객이 관리 NACL 보안그룹 및 NACL 포트전달 지원X 지원 범위:AZ AZ
-
- VPC 흐름 로그
- VPC의 네트워크 인터페이스에서 송수신되는 트래픽에 대한 정보 캡쳐
- VPC, 서브넷, 네트워크 인터페이스 로그 생성 가능
- CloudWatch Log로 게시
- VPC 피어링
- 피어 VPC 간에 트래픽 라우팅
- 프라이빗 IP 사용
- 상호 리전 지원
- IP 공간 중복 X
- 2개의 VPC 사이에 하나의 피어링 리소스만 존재
- 다른 aws 계정 사이에 구축 가능
- 인터넷 게이트웨이나 가상 게이트웨이 필요 없음
- 단일 장재 지점 없음 / 대역폭 병목 현상 없음 / 글로벌 aws 백본에서 트래픽이 항상 유지
- VPC 당 생성 및 보류 VPC 피어링 연결 수 제한있음
- MTU 1500
- 동일한 2개의 VPC 간에 동시에 두 개 이상의 VPC 피어링 연결 생성 불가
- 온프레미스 연결
- VPN 연결 : VPC의 가상 게이트웨이와 DC 간에 VPN 연결
- Direct Connect : 사용자 DC와 프라이빗 네트워크 연결 제공
- 네트워크 전송 비용 절감 / 대용향 데이터 세트 전송 / 보안 및 규정 준수
- 애플리케이션 성능 향상 / 하이브리드 클라우드 아키텍처 / 사설 데이터센터 확장
- 인터넷 기반 IPSec VPN 연결 대안
3-5. 기본 VPC
- 계정의 각 리전에는 기본 VPC 존재
- 172.31.0.0/16
- VPC 기반 리소스를 생성하면서 사용자 정의 VPC 지정하지 않으면 기본 VPC에 배치
- 기본 서브넷, IGW, 라우팅테이블, 보안그룹, NACL 포함
3-6. 기본 서브넷
- 각 기본 VPC의 각 AZ 내에 생성
- /20이 할단된 퍼블릭 서브넷
- IGW로 향하는 경로를 제거하면, 기본 서브넷을 프라이빗 서브넷으로 변환
- 권장 : aws 계정을 실험할 때만 사용
3-7. 모범 사례
- 여러 개의 작은 서브넷 대신에 대규모 서브넷 사용
- 서브넷을 단순하게 유지하고 인터넷 접근성에 따라 나눔
- 고가용성을 위해 VPC 에서 다중 AZ 배포 사용
- 보안 그룹을 사용하여 리소스 간의 트래픽 제어
- VPC 흐름 로그를 사용하여 트래픽 추적 및 모니터링
Module 4 : 고가용성 환경 만들기
4-1. 고가용성
- 요구 사항 기반
- RTO(복구 목표 시간)
- RPO(복구 목표 지점)
- 요소
- 내결함성 : 애플리케이션 구성 요소의 기본적인 중복성
- 복구성 : 재해 발생 후 서비스 복구와 관련된 프로세스, 정책 및 절차
- 확정성 : 설계 변경 없이 성장을 수용하는 능력
4-2. 고가용성 및 AWS 리전
- 다중 리전 배포로 가용성, 비용, 복잡성 증가
- 단일 리전의 경우, 다중 AZ가 가장 기본적인 HA 솔루션
4-3. HA 미포함 서비스
- HA 미포함 서비스 : EC2 / VPC / Redshift / ElastiCache / Direct Connect
4-4. ELB
-
트래픽을 여러 EC2 인스턴스에 걸쳐 분산하는 관리현 로드밸런싱 서비스
-
인스턴스 간에 로드 분산
-
퍼블릭 또는 내부 솔루션
-
Http, HTTPS, TCP, SSL 프로토콜 사용
-
로드밸런서에 퍼블릭 DNS 이름 제공
-
제공 기능
- 상태 확인
- 교차 영역 로드 밸런싱
- 프록시 프로토콜
- 고정 세션
- 사용자의 세션을 수명동안 특정 인스턴스에 바인딩
- 기간 기반 세션 고정 : 요청에 대해 특정 LB 생성 쿠키를 사용
- 애플리케이션 제어 세션 고정 : 쿠키를 사용해 요청을 처리한 원래 서버에 세션 연결
- 연결 드레이닝 : 인스턴스가 등록 해지되거나 비정상이 되는 경우, LB가 더는 새로운 요청을 백엔드 인스턴스에 전송X
Application LB Network LB Classic LB HTTP, HTTPS TCP HTTP, HTTPS, TCP 유연한 애플리케이션 관리 HTTP,HTTPS 트래픽 고급 로드밸런싱 7계층(요청 수준) 마이크로서비스, 컨테이너 지원 AZ 당 단일 고정 IP 사용 4계층(연결 수준) 짧은 지연 시간 내에 많은 처리량 유지 동일한 AZ 내 대상에 걸쳐 트래픽 분산 EC2-Classic 네트워크 내에서 구축된 기존 애플리케이션 요청, 연결 수준 DIY ELB 비관리형 조정은 고객이 처리 Aws에서 관리 가장 비용 효율적인 솔루션 자동 조정
4-5. 다중 로드 밸런서 패턴
- 액세스하는 디바이스 유형에 따라 설정이 다른 LB 여러 개 지정
4-6. 로드 밸런싱을 통한 HA
- 내부 LB : DNS 이름 생성 / 프라이빗 IP / 인터넷 노출 X
- 외부(인터넷) LB : 퍼블릭 IP가 포함된 DNS 이름 생성
4-7. 탄력적 IP 주소
- 동적 클라우드 컴퓨팅에 적합하게 설계된 고정 IP 주소
- 내결함성 제공
- EC2 인스턴스에 연결
- 같은 IP를 가진 대체 리소스 사용 가능
4-8. Route 53
- Aws의 HA DNS
- 티어0 서비스
- 100% SLA 지원 / 세계적인 Anycast 네트워크 / ELB-Alias 쿼리 / 지연 시간 기반 라우팅 / 종량 과금제 / 지리 위치 라우팅 / 가중치 기반 라운드로빈
- 지원 라우팅
- 단순 라우팅 : 단일 서버 환경
- 가중치 기반 라운드로빈 : 리소스 레코드 세트에 가중치 할당하여 빈도 지정
- 지연 시간 기반 라우팅 : 글로벌 애플리케이션 성능 향상 지원
- 상태 확인 및 DNS 장애 조치 : 주 사이트에 액세스 할 수 없는 경우 백업 사이트로 장애 조치
- 지리 위치 라우팅 : 대륙, 국가, 미국 주별로 지리적 위치 지정
Module 5 : 고가용성 환경 만들기2
5-1. CloudWatch
- 인스턴스를 모니터링하고, 실시간 지표 수집 및 처리
- 지정한 지표를 기준으로 알림 전송, Auto Scaling 작업 트리거
- 분산 통계 수집 시스템 : 지표를 수집 및 추적
- 하이퍼바이저 수준에서 원활하게 수집되는 지표
- 사용자 정의 지표를 생성 및 사용하는 기능
- 로그는 S3에 저장되어 다른 서비스 및 다른 사용자가 액세스 가능
- 로그는 Kinesis Streams 또는 Lambda와 같은 데이터 처리 솔루션으로 실시간 스트리밍 가능
5-2. Auto Scaling
- 지정된 조건에 따라 인스턴스 시작, 종료
- 지정된 경우, 새 인스턴스를 LB에 자동 등록
- 여러 가용 영역에 걸쳐 시작 가능
- 구성요소
- 시작 구성 : 인스턴스를 시작하는 방법 정의 (이름, AMI, 인스턴스 유형, 사용자데이터, 보안그룹, IAM 역할, 기타)
- 그룹 : 시작 구성을 사용하여 그룹 적용 (이름, 시작 구성이름, 최소 및 최대, AZ 또는 서브넷, LB, 원하는 용량, 기타)
- 확장 정책(옵션) : CloudWatch 경보를 기준
- 예약 동작(옵션) : 특정 시점에 조정 작업을 수행하도록
5-3. Lambda
- 이벤트, 시간 기반 간격에 대한 응답으로 상태 비저장코드를 실행
- 완전관리형 컴퓨팅 서비스
- 인프라 관리할 필요 X
- 처리하는 작업
- 서버, 용량 요구, 배포, 조정 및 내결함성, OS 또는 언어 업데이트, 지표 및 로깅
- 할 수 있는 작업
- 자체 코드 사용 가능
- 코드를 병렬로 실행
- 백엔드, 이벤트 핸들러 및 데이터 처리 시스템 생성
- 유휴 리소스에 대해 비용을 지불할 필요 X
Module 6 : 인프라 자동화
6-1. CloudFormation
- 코드형 인프라
- 재사용, 유지 관리, 확장 및 테스트 가능한 인프라를 생성하는 데 적용되는 소프트웨어 개발 기술, 사례 및 도구
- JavaScript, JSON, YAML 형식의 템플릿을 통해 AWS 리소스를 시작, 구성 및 연결
- 템플릿을 코드로 취급, 원하는 버전 제어 방법으로 관리
- JSON 템플릿 파일 내에 전체 애플리케이션 스택을 정의
- 템플릿에 대한 런타임 파라미터를 정의
- 템플릿 구조
- Description : 템플릿을 설명
- Metadata : 템플릿에 대한 추가 정보를 제공하는 JSON 객체
- Resources : 스택에 포함될 리소스
- DependsOn : 특정 리소스가 다른 리소스 다음에 생성되도록 지정
- Parameters : 런타임에 템플릿에 전달할 수 있는 값
- Mappings : 조건부 파라미터 값을 지정하는 키 및 관련 값
- Conditions : 스택 생성 또는 업데이트 동안 특정 리소스가 생성되는지 또는 특정 속성에 값이 지정되는지를 제어
- Outputs : 스택의 속성을 확인할 때마다 반환되는 값
6-2. Elastic Beanstalk
- 웹 애플리케이션용 자동 배포 및 조정 서비스
- Java, NET, PHP, Node.js, Python, Ruby, Go, Docker 코드 수용
- Apache, Nginx, Passenger, IIS 서버에 배포
- 자동 처리
- 로드밸런싱
- 상태 모니터링
- Auto Scaling
- 애플리케이션 플랫폼 관리
- 코드 배포
6-3. OpsWorks
- Puppet, Chef를 사용하여 모든 형태와 규모의 애플리케이션을 구성하고 운영하도록 지원하는 구성 관리 서비스
6-4. EC2 Run Command
- EC2 인스턴스의 구성을 안전하게 관리
- 자동화
- Linux에서 Shell 스크립트 및 명령 실행
- Win에서 PowerShell 명령 실행
- 소프트웨어 또는 패치 설치
- 문서 관리 및 공유
- 여러 인스턴스 전체에서 명령을 실행
- 결과에 대한 가시성 제공
6-5. EC2 Systems Manager
- 규모에 따른 시스템의 자동 구성 및 지속적인 관리를 가능하게 하는 기능 집합
- 소프트웨어 인벤토리 자동 수집
- OS 패치 적용
- 시스템 이미지 생성
- 명령 실행
6-6. 솔루션 비교
- 상위 수준 서비스 : Elastic Benastalk, OpsWorks
- DIY : CloudFormation, EC2
Module 7 : 인프라 결합 해제
7-1. 결합 해제
- 로드밸런서, 메시지 대기열 사용
- 느슨하게 결합될수록 더 쉽게 확장
7-2. SQS
- 완전 관리형 메시지 대기열 서비스
- 처리량과 관계없이 모든 볼륨의 메시지 전송 가능
- 대기열 유형
- 표준 대기열 : 최소 1회 전송 / 최선의 노력으로 순서화
- FIFO 대기열 : 정확한 1호 ㅣ처리 / 제한된 처리량
- 대기열 체인 패턴으로 비동기식 처리
- 이점
- 확정성 : 잠재적으로 수백만 건의 메시지
- 안정성 : 모든 메시지가 여러 데이터센터 및 여러 서버에 중복 저장
- 동시 읽기/쓰기
- 보안 : API 자격 증명 필요
- 가시성 제한 시간
- 여러 구성 요소가 같은 메시지를 처리하는 것을 방지
- 메시지를 수신하면 처리하는 동안 ‘잠김’ 상태
- 메시지를 수신한 구성요소는 메시지를 처리한 다음, 대기열에서 삭제
- 메시지 처리에 실패하면, 잠금이 해제되면서 메시지가 다시 처리 가능한 상태
- 배달 못한 편지 대기열
- 처리되지 못한 메시지 대기열
- 성공적으로 처리되지 못한 메시지를 열외로 분리
- FIFO가 활성화된 상태고 메시지를 처리할 수 없는 경우 메시지 흐름을 복원
- 리소스 기반 권한 : 대기열 공유
- 다른 AWS 계정 및 익명 사용자와 공유 가능
- 권한은 다른 사람에게 특정 방법으로 자신의 대기열을 사용할 수 있는 액세스 권한 부여
- 정책은 부여한 권한이 포함된 실제 문서
- 공유 대기열 액세스 비용은 대기열 소유자가 지불
- 사용 사례
- 작업 대기열 / 배치 작업 버퍼링 / 요청 오프로딩 / 팬아웃 / AutoScaling
7-3. SNS
- 알림을 설정 및 운영하고 구독 서비스 기타 애플리케이션에 알림 전송 가능
- 주제별로 메시지 게시, 해당 주제의 구독자가 메시지 수신
- API 또는 관리 콘솔을 통해 모바일 디바이스나 분산 서비스로 메시지 푸시 가능
- 구독자 유형
- 이메일(일반 또는 JSON)
- HTTPS/HTTP
- SMS 클라이언트
- SQS 대기열
- 모바일 푸시 메시징
- Lambda 함수
- 특성
- 단일 게시 메시지
- 순서가 보장되거나 관련되지 않음
- 회수 안됨
- HTTP/HTTPS 재시도
- 메시지당 최대 256KB
- SQS와 차이
SNS | SQS | |
---|---|---|
메시지 지속성 | X | O |
전송 메커니즘 | 푸시(수동) | 폴링(능동) |
생산자/소비자 | 게시/구독 | 송신/수신 |
배포 모델 | 일대다 | 일대일 |
7-4. Amazon MQ
- Active MQ 를 위한 관리형 메시징 브로커 서비스
- 완전관리형
- 클라우드에서 메시지 워크플로를 설정하고 운영
- 고가용성을 위해 자동으로 프로비저닝
- ActiveMQ 콘솔을 직접 액세스 가능
- 다양한 메시징 기술 지원
7-5. DynamoDB
- 높은 처리량으로 처리 결과를 저장 및 검색하는 데 적합한 솔루션
- 고가용성, 내결함성, 완전관리형
- 느슨하게 결합된 시스템은 관리형 NoSQL 데이터베이스 솔루션과 원할하게 연동
7-6. API Gateway
- 백엔드 서비스의 데이터, 비즈니스 로직, 기능에 액세스할 수 있도록 ‘현관문’ 역할을 하는 API 생성
- 완전 관리형
- 수십만 개의 동시 API 호출을 수락 및 처리
- 다양한 버전과 단계의 API를 호스팅 및 사용
- 개발자에게 API 키를 생성하여 배포
- 요청을 제한하고 모니터링하여 백엔드 보호
- Lambda와 긴밀하게 통합
- Marketplace와 통합
- 프라이빗 VPC와 엔드포인트 통합
- 이점
- 관리형 캐시를 사용하여 API 응답 저장
- CloudFront를 통해 지연 시간 단축 및 DDoS 보호
- SDK 생성
- OpenAPI Specification(Swagger) 지원 : RESTful 웹 서비스를 설명, 생산, 소비 및 시각화하기 위한 사양 및 완전한 프레임워크 구현
- 요청/응답 데이터 변환
Module 8 : 웹 규모 스토리지 설계
-
정적 자산을 S3에 저장
- 리전 내 여러 시설에 객체를 중복으로 저장
- 데이터의 무결성 확인
- 모든 버전을 보존, 검색 및 복원 가능
-
자주 액세스하는 자산을 CloudFront에서 제공
- CDN 제공
- 네트워크 경로에 TCP/IP 최적화
- Keep-Alive 연결
- 최종 사용자에게 가까운 SSL/TLS 종료
- POST/PUT 업로드 최적화
- 지연 시간 기반 라우팅
- 리전 엣지 캐시
-
비관계형 데이터를 DynamoDB와 같은 NoSQL 데이터베이스에 저장
- 데이터베이스 솔루션 고려 사항
- 읽기/쓰기 요구
- 총 스토리지 요구 사항
- 객체 크기 및 객체에 대한 액세스의 특성
- 내구성 요구 사항
- 지연 시간 요구 사항
- 최대 동시 사용자 수
- 쿼리 특성
- 필요한 무결성 제어의 강도
- 특징
- 짧은 지연 시간 : SSD 기반 스토리지 노드 / 10밀리초 미만
- 원활한 대규모 확장 : 테이블 크기 및 처리량 제한 없음 / 스토리지 및 처리량 변경에 대한 실시간 재파티셔닝
- 예측 가능한 성능 : 프로비저닝된 처리량 모델
- 내구성 및 가용성 : 일관된 디스크 전용 쓰기 / 온디맨드 백업
- 완전 관리형 NoSQL 데이터베이스 서비스
- 데이터베이스 솔루션 고려 사항
-
관계형 데이터는 RDS에 저장
-
Aurora
- 서비스 지향적 아키텍처를 사용해 제공된 관계형 데이터베이스
- S3를 활용
- 기존 애플리케이션이 ‘그대로 작동’
- PostgreSQL과 호환
- S3와 통합되어 지속적인 백업 제공 : 3개의 AZ에 6개의 복사본
Module 9 : Well-Architected
9-1. Well-Architected 핵심 요소
- 운영 우수성
- 보안
- 안정성
- 성능 효율성
- 비용 최적화
9-2. Well-Architected 설계 원칙
- 필요한 용량 추정 중단
- 프로덕션 규모로 시스템 테스트
- 더 간편하게 아키텍처를 실험할 수 있도록 자동화
- 혁신적인 아키텍처 허용
- 데이터를 사용하는 아키텍처 드라이브
- 게임 기간을 통해 개선
Module 10 : 운영 우수성
10-1. 운영 우수성 핵심 요소의 원칙
- 코드로 운영 수행
- 문서에 주석 추가
- 빈번하고 작은 규모로 되돌릴 수 있는 변화 수행
- 운영 절차를 빈번하게 재정의
- 실패 예상
- 모든 운영 실패에서 학습
10-2. 핵심 서비스
- 준비 : AWS Config
- 운영 : CloudWatch
- 진화 : Elasticsearch
Module 11 : 보안
11-1. 보안
- IAM
- 탐지 제어
- 인프라 보호
- 데이터 보호
- 사고 대응
11-2. 보안 설계 원칙
- 강력한 자격 증명의 기초 구현
- 추적 가능성 활성화
- 모든 계층에 보안 적용
- 보안 자동화 모범 사례
- 전송 중 및 저장 데이터 보호
- 보안 이벤트 대비
11-3. 주요 보안 서비스
- IAM : AWS IAM / AWS Organizations / MFA 토큰 / 임시 보안 자격 증명
- 탐지 제어 : CloudTrail / Config / CloudWatch / GuardDuty
- 인프라 보호 : VPC / Inspector / Shield / WAF
- 데이터 보호 : Macie / KMS / S3 / EBS
- 사고 대응 : IAM / CloudFormation
11-4. Amazon Inspector
- 애플리케이션의 취약성, 모범 사례 위반을 평가하는 자동화된 보안 평가 서비스
- 평가 수행 후, 문제 해결을 위한 우선 순위 단계가 설정된 세부 보고서 작성
11-5. AWS Shield
- Standard, Advanced 제공
- Standard : 추가 비용 없이 제공
- Advanced : 추가 비용 / DDoS 보호
11-6. Amazon GuardDuty
- 지능형 위협 탐지
- AWS 계정 및 워크로드 보호
- 의심스러운 활동 모니터링 및 발견 사실 생성
- CloudTrail 이벤트 및 VPC 흐름 로그 포함 다중 데이터 원본 분석
- 자신만의 위협 목록과 신뢰 IP 목록을 추가하여 맞춤화
11-7. KMS
- 데이터를 암호화하는 관리형 암호화 서비스
- 2-티어 키 계층 구조
- 데이터 키는 고유
- KMS 마스터 키가 데이터 키를 암호화