글로벌 데이터 센터
서비스 200개 이상
보안 및 안정성
종량제
비즈니스 요구 사항에 따라 구축
출처: Architecting on AWS 7.7.4 (KO): Student Guide
출처: Architecting on AWS 7.7.4 (KO): Student Guide
AWS 서비스는 AWS 데이터 센터 안에서 작동한다.
각 로케이션에서는 AWS 전용 네트워크 장비를 사용한다.
데이터 센터는 수천대의 서버를 호스트한다.
하나 이상의 데이터 센터가 묶여 가용 영역으로 구성된다.
리전 내의 데이터 센터
내결함성을 갖도로 설계됨
고속 프라이빗 링크를 사용하여 상호 연결된다.
고가용성 달성에 사용된다.
완전히 독립적이다.
AWS 네트워크 인프라 사용
여러개 가용 영역을 포함.
- CF.
하나 이상의 데이터 센터 -> 가용 영역 , 하나 이상의 가용 영역 -> 리전
데이터 센터 < 가용 영역 < 리전
거버넌스
ex. 조직 내부의 규정 등
지연 시간
고객과 가까운 리전을 선택하여 지연 시간을 최소화 한다.
서비스 가용성
모든 AWS 서비스를 모든 리전에서 사용할 수 있는 것은 아니다.
비용
리전마다 서비스 비용이 다르다.
출처: Architecting on AWS 7.7.4 (KO): Student Guide
AWS 서비스를 많은 인구, 산업 및 IT 센터에 더 가까운 위치에 배치하여 10밀리초 미만의 지연 시간이 요구되는 애플리케이션을 최종 사용자에게 제공할 수 있게 하는 AWS 인프라 배포 유형이다
최종 사용자 지연 시간이 10밀리초 미만이어야 하는 수요가 많은 애플리케이션에는 AWS Local Zones를 사용할 수 있다.
부모 리전(Parent Region)에 속하고, 부모 리전 외부에 존재하는 특화된 가용 영역 -> 데이터 센터 존재.
로컬 리전에서 지원되지 않는 서비스들은 부모 리전의 AWS 서비스들을 사용한다.
AWS 서비스 요청자에 가장 가까이 있는 지점에서 콘텐츠를 제공하게 된다.
정적 컨텐츠를 캐싱하고 전송해주는 서비스.
전 세계 주요 도시에서 운영.
Amazon Route S3 및 CloudFront와 같은 AWS 서비스 지원
AWS Local Zones
Edge Location
출처: Architecting on AWS 7.7.4 (KO): Student Guide
출처: Architecting on AWS 7.7.4 (KO): Student Guide
출처: Architecting on AWS 7.7.4 (KO): Student Guide
셀프 서비스 방식 도구이다.
기존 워크로드의 상태를 검토하고 최신 AWS 아키텍처 모범 사례와 비교할 수 있다.
AWS CLI Command Reference 참고
AWS 서비스에 연결
> 출처: Architecting on AWS 7.7.4 (KO): Student Guide
AWS 관리 콘솔
AWS 서비스와 상호작용을 가장 쉽게 시작할 수 있는 도구이다.
AWS 계정을 관리하고 작업을 수행할 수 있는 그래픽 사용자 인터페이스(GUI)이다.
AWS Command Line Interface(AWS CLI)
소프트웨어 개발 키트(SDK)
출처: Architecting on AWS 7.7.4 (KO): Lab Guide
모든 AWS 서비스에 대한 전체 액세스 권한 보유
단일 계정 모델에서는 제한할 수 없다.
AWS와 일상적인 상호 작용에 사용하면 안된다.
AWS 리소스에 대한 액세스를 안전하게 제어하는 데 도움이 되는 웹 서비스이다.
사용자, 그룹 및 역할 생성과 관리
AWS 서비스와 리소스 액세스 중앙 관리
액세스 제어 분석
AWS 리소스에 대한 작업 또는 운영을 요청할 수 있는 대상이다.
AWS 리소스에 대한 작업 및 운영을 요청할 수 있다.
애플리케이션, 페더레이션 사용자(AWS 외 사용자) 또는 수임된 역할일 수 있다.
AWS 계쩡 내의 사용자다.
각 사용자는 고유한 자격증명을 소유한다.
사용자에게는 권한에 따라 특정 AWS 작업을 수행할 수 있다.
IAM 사용자 모범 사례로는 다중 인증(MFA)을 필요로 하고 IAM 사용자 암호 정책을 설정하는 것이다.
IAM 사용자가 AWS 서비스에 액세스 하는 방법은 다음과 같다.
AWS 관리 콘솔 액세스
프로그래밍 방식 액세스
IAM 사용자가 API 호출을 수행하거나 AWS CLI 또는 AWS SDK를 사용해야 할 수도 있다.
이러한 경우에는 해당 사용자용으로 액세스 키(액세스 키 ID 및 비밀 액세스 키)를 생성해야 한다.
IAM 사용자에게 프로그래밍 방식 액세스 권한을 부여하면 액세스 키 ID 및 비밀 액세스 키로 구성된 고유한 키 페어가 생성된다.
키페어를 사용하여 AWS CLI를 구성하거나 AWS SDK를 통해 API를 호출할 수 있다.
AWS CLI에서 IAM 사용자를 구성하는 데 필요한 4가지 요소
AWS 액세스 키 ID
AWS 비밀 액세스 키
기본 리전 이름
기본 출력 형식(json, yaml, yaml-stream, text, table)
IAM 사용자 가 필요한 특정 리소스와 API 작업에 액세스할 수있는 권한을 부여하는 IAM 정책을 생성하거나 선택한다.
해당 권한이 필요한 IAM 사용자나 그룹에 정책을 연결한다.
IAM 그룹은 IAM 사용자의 모음이다.
IAM 사용자는 하나 이상의 그룹에 속할 수 있다. (bc. 여러 업무 동시 수행.)
IAM 사용자 그룹에 정책을 연결하면 해당 그룹 내의 모든 사용자에게 정책이 적용된다.
최소 권한의 원칙을 준수해야 한다.
임시 AWS 자격증명이 제공한다.
역할 사용 시 요금이 발생하지 않는다.
권한을 특정 사용자 또는 서비스에 위임한다.
최대 12시간까지 유효하다.
사용자는 다른 사용자와 자격 증명을 공유하지 않고 역할을 수임한다.
IAM 역할을 적용 받으면 해당 역할에서 부여하는 권한만 제공되며, 그룹에 연결된 정책 권한은 제공되지 않는다.
IAM 사용자, AWS 서비스 또는 패더레이션 사용자와 같은 신뢰할 수 있는 대상에 역할을 수임한다.
IAM 사용자와 AWS 서비스는 CLI에 역할을 수임하고, AssumeRole API를 사용한다.
패더레이션 사용자는 AssumeRoleWithSAML 또는 AssumeROleWithWebIdentity API 호출을 사용한다.
API 호출은 AWS Security Token Service(AWS STS)에 대해 수행된다.
- AWS STS
IAM 또는 페더레이션 사용자에게 제한된 권한의 임시 자격 증명을 제공하는 웹 서비스이다.
해당 서비스는 액세스 키 ID, 비밀 액세스 키 및 보안 토큰으로 구성된 임시 보안 자격 증명 집합을 반환한다. 이러한 자격 증명을 사용하여 AWS 리소스에 액세스 하게 된다.
모든 IAM 정책 유형(관리형 정책 및 인라인 정책)을 생성하고 관리할 수 있는 도구를 제공한다.
IAM 자격 증명(IAM 사용자, 그룹 또는 역할)에 권한을 추가하려면 정책을 자격 증명에 연결한다.
자격 증명 하나에 여러 정책을 연결할 수 있으며 각 정책은 여러 권한을 포함할 수 있다.
관리형 정책
AWS 관리형 정책
고객 관리형 정책
인라인 정책
Condition
태그, 시간, IP, MFA 관련하여 자주 사용된다.
다수의 조건도 설정 가능하다.
AWS 리소스를 대상으로 부여하는 권한이다.
재사용이 불가하다.
사용자의 권한을 제한한다.
이 자체만으로 권한을 제공하지 않는다.
다수의 팀
보안 및 규정 준수 제어
결제
격리
비즈니스 프로세스
IAM 정책이 단일 계정의 개별 보안 주체에만 적용된다.
청구서는 계정 단위로 생성이 된다.
제한을 적용하는 정책은 각 계정 내에서 관리해야 한다.
서비스 제어 정책(SCP)을 적용하여 OU(조직 단위)에 속한 모든 계정의 최대 권한을 제어한다.
모든 AWS 계정을 중앙에서 관리하는 기능
모든 구성원 계정의 요금을 통합해서 결제할 수 있다.
SCP 적용 시에는 IAM 권한과 SCP에 공통적으로 포함되는 권한만 허용한다.
SCP는 권한을 부여하는 것이 아니라 필터 역할로 사용된다.
IP 주소는 네트워크 내의 로케이션을 식별한다.
네트워크와 호스트를 식별한다.
IPv4, Ipv6 두가지 유형이 존재한다.
VPC 내의 IP 주소 범위이다.
서브넷 하나당 주소 5개가 예약된다. (네트워크 주소, Router 주소, DNS 해석기 주소, 브로드 캐스트 주소, 여유 주소)
서브넷은 VPC CIDR 블록의 하위 집합이다.
재연결 시 트래픽을 즉시 전송할 수 있다.
기본적으로 리전/계정당 5개로 제한된다.
탄력적 IP 주소를 사용하면 주소를 VPC의 다른 인스턴스에 신속하게 다시 매핑하여 인스턴스의 장애를 마스킹할 수 있다.
인스턴스 또는 네트워크 인터페이스와 연결 가능
NAT Gateway, Network Load Balancer에도 탄력적 IP 주소를 할당할 수 있다.
탄력적 네트워크 인터페이스는 VPC 내의 논리적 네트워킹 구성 요소이다.
같은 가용 영역 내의 리소스 간에 이동이 가능하다.
탄력적 네트워크 인터페이가 여러 개가 필요한 경우가 있다. -> EC2의 지원 ENI 개수를 확인을 해야한다.
현업에서는 복수개의 가용영역을 구성한다.
서브넷은 확장이 되지 않는다.
VPC 자체는 확장이 된다. CIDR 블럭 최대 3개까지 가능.
보통은 프라이빗 서브넷에 퍼블릭 서브넷 보다 많은 리소스들이 배치 되므로 프라이빗 서브넷을 더 크게 설계해야 한다.
VPC 설게 참고 사이트 : VPC Designer
AWS 리소스로 전송되는 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽이다.
인스턴스의 방화벽이 아니라 ENI에 적용되는 방화벽이다.
상태 저장 규칙을 사용한다.
허용 규칙만 존재한다.
EC2의 태그는 키-값으로 이루어져있다.
대소문자를 구분한다.
EC2 인스턴스의 이미지로, AWS에서 관리하는 S3에 저장된다.
이점
반복 가능
재사용 가능
복구 가능
단점
AWS에서 제공하는 사전 구축된 AMI를 사용한다.
AWS Marketplace에서 수천 개의 솔루션이 포함된 카탈로그를 검색한다.
AMI를 수동으로 직접 생성하거나 EC2 Image Builer를 사용한다.
a: AMD CPU 사용
g: AWS 자체 CPU (ARM 아키텍처)
n: Newtwork Enhanced -> 네트워크 향상 모델
d: 인스턴스 스토어가 내장된 모델.
퍼블릭키 - 프라이빗키는 서로 매핑되도록 설정되어 있다.
퍼블릭 키는 EC2 인스턴스에 저장된다.
프라이빗 키를 사용하여 인스턴스에 연결하게 된다.
EC2 인스턴스는 기본적으로 공유 테넌시 방식을 사용한다. -> 여러 AWS 계정이 같은 물리적 하드웨어를 공유할 수 있다.
전용 호스트
전용 인스턴스
EC2 서비스는 상호 연관된 장애를 최소화하기 위해 기본 하드웨어 전체에 모든 인스턴스를 분산한다.
배치 그룹 사용 시에는 인스턴스 간의 거리를 선택할 수 있다.
인스턴스 시작된 후 스크립트를 루트로 실행할 수 있다.
일반적인 자동 구성 태스크를 수행하는 데 사용 가능하다.
단점
가용 영역에서 자동 볼륨 복제를 사용하여 블록 수준 스토리지를 생성한다.
하나 이상의 EVS 볼륨을 단일 EC2 인스턴스에 연결할 수 있다.
필요에 따라 EC2 인스턴스 간에 EBS 볼륨을 이동한다.
하나의 EBS 볼륨은 기본적으로 하나의 인스턴스에 할당 가능하다.
솔리드 스테이트 드라이브(SSD)는 고성능 및 범용 워크로드를 위한 것이다.
하드 디스크(HDD)는 대용량 또는 자주 액세스 하지않는 데이터용이다.
gp3의 기본 IOPS 수는 3000이다. gp2의 기본 IOPS 수는 버스트를 해야 3000이다.
하지만, gp2와 gp3의 가격 차이는 거의 없다.
gp2와 gp3의 주요 차이는 버스트의 유무이다.
여분의 EC2 호스트 용량을 사용하는 인스턴스이다.
스팟 인스턴스 사용 시에는 비용을 온디맨드 인스턴스 요금 대비 최대 90%까지 절약할 수 있다.
서버를 생각하지 않고 애플리케이션과 서비스를 구축하고 실행 가능. -> but. 서버를 사용을 안한다는 의미가 아님.
'사용자'가 서버를 프로비저닝, 크기 조정, 관리할 필요가 없다는 것을 의미.
애플리케이션의 고가용성 실행, 확장이 모두 자동으로 처리된다.
- 서버리스 컴퓨팅 사용 이유?
- 개발자가 서버 또는 런타임 관리와 운영에 대한 노력을 줄여 제품 개발에 집중할 수 있게 하기 위해. -> 시간과 에너지 절약
Lambda 특징
상태비저장 서비스
서버리스 컴퓨팅
최대 15분 동안 실행 가능
최대 10GB 메모리 지원
Node.js, Java, Python, c#, Go, PowerShell, Ruby 등을 지원한다.
Lambda 사용 시 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있다. 다음 항목들이 자동으로 관리된다.
서버 및 OS 유지 관리
용량 프로비저닝 및 자동 크기 조정
코드 모니터링 및 로깅
Lambda 함수 구성
이벤트를 수신할 핸들러
Lambda가 사용자 대신 Lambda 함수를 실행하기 위해 수임할 수 있는 AWS IAM 역할
할당하려는 컴퓨팅 리소스
제공 시간 제한
Lambda 함수 장점
서버리스 아키텍처
서버 관리 부담이 줄어든다.
비용 효율적
사용한 컴퓨팅 자원에 대해서만 비용 지불을 한다. 서버가 항상 돌아가는 것이 아니라 필요할 때만 함수가 호출되고 실행되기 때문이다. -> 람다 함수의 요청 수 + 코드의 실행 시간에 따라 비용 지불.
AWS 서비스와의 통합
AWS 서비스들과 원할하게 통합이 가능하다.
Lambda 단점
실행 시간 제한
최대 실행 시간 15분, 메모리 10GB로 제한이 되어 있다. -> 장기 워크로드에는 부적합하다.
Statless(상태 비저장)
이전에 실행 했던 컨텍스트에 대해 접근할 수 없어, DB Connection을 유지할 수 없다.
ColdStart 현상
람다 함수가 오랜만에 실행이 될 시 초기 부수적인 설정 때문에 딜레이가 되는 현상. 해당 현상은 언어와 설정한 메모리에 따라 다르게 나타난다.
Lambda SnapStart를 사용해 해결
람다의 실행 환경을 스냅샷으로 생성하고 암호화 하여, 짧은 지연 시간 안에 스냅샷을 캐싱하여 액세스 하는 방식
할당 메모리 늘리기
메모리를 늘릴 시 CPU 용량이 늘어나 사용 가능한 전체 계산 성능이 향상된다.
프로비저닝된 동시성 활성화
함수의 호출에 바로 응답할 수 있도록 미리 준비하는 옵션이다. 활성화 시 실행 환경이 호출 전에 준비되어 딜레이가 감소한다. but. 추가 비용이 발생한다.
동시성 제한
동시에 실행할 수 있는 Lambda 함수는 최대 리전별 1000개로 제한한다. 따라서 request의 수가 이를 넘어갈 시 실행이 제한될 수 있다.
웹 애플리케이션
정적 웹 사이트 호스팅
복잡한 웹 애플리케이션
Flask 및 Express용 패키지
벡엔드
애플리케이션 및 서비스
모바일
사물인터넷(IOT)
데이터 처리
실시간 처리
Amazon EMR
AWS Batch
Chatbot
IT 자동화
AWS 서비스 확장
인프라 관리
출처: https://www.smileshark.kr/post/all-about-aws-lambda-the-complete-beginners-guide-1
AWS Lambda 사용 상황
복잡도가 낮은 코드
간헐적인 작업
실시간 처리
예약된 CRON 작업
AWS EC2 사용 상황
고성능 컴퓨팅
재해 복구
DevOps
개발 및 테스트
보안 환경
VPC setting
DNS Resolution
DNS Host
둘 다 키기.
인터넷 게이트웨이
VPC 외부와 내부를 연결시켜준다.
인터넷 게이트웨이 인스턴스 내에 SSM endpoint(공인 IP 이용)가 존재. -> so, NAT Gateway 사용.
이용하는 인스턴스마다 사용하는 프로토콜이 달라, 그에 맞는 프로토콜 규칙을 추가해주어야 정상 동작한다.