📒 Amazon EC2
- 실행 중인 인스턴스 내에 있는 인스턴스 메타데이터의 모든 범주를 보려면 다음 URL을 사용
http://169.254.169.254/latest/meta-data/public-ipv4
- 최대 절전모드로 전환하면 디스크 일시 중단을 수행하도록 신호를 보낸다.
- RAM의 내용을 EBS 루트 볼륨에 저장할 수 있다.
- EBS 루트 볼륨과 연결된 모든 EBS 데이터 볼륨을 유지한다.
- 인스턴스를 다시 시작할 때 EBS 루트 볼륨이 이전 상태로 복원, RAM 내용이 다시 로드, 이전에 인스턴스에서 실행되었던 프로세스가 재개, 이전에 연결된 데이터 볼륨이 다시 연결되고, 인스턴스는 해당 인스턴스 ID를 유지한다.
🔔 EC2 비용
상태 | 청구 내용 |
---|
Pending | 미청구 |
Running | 청구 |
Stopping | 중지 준비 중인 경우 미청구, 최대 절전모드로 전환 준비 중인 경우 청구 |
Stopped, Shutting-down, terminated | 미청구 |
🔔 인스턴스 스토어
- 인스턴스에 블록 수준의 임시 스토리지를 제공한다.
- 호스트 컴퓨터에 물리적으로 연결된 디스크에 위치한다.
- 자주 변경되는 정보의 임시 스토리지나 분산된 웹 서버 풀과 같은 여러 인스턴스 상에서 복제되는 데이터에 가장 적합하다.
- 인스턴스 스토어의 데이터느 ㄴ연결된 인스턴스의 수명 동안만 유지된다.
- 기본 디스크 드라이브 오류, 인스턴스 중지 및 종료될 때 데이터 손실된다.
🔔 ENI (Elastic Network Interface)
- 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소
연결 상태 별 이름
이름 | 연결 상태 |
---|
핫 연결 | 실행 중인 상태 |
웜 연결 | 중지 상태 |
콜드 연결 | 시작 중 상태 |
🔔 스팟 인스턴스
- 데이터 분석, 배치작업, 백그라운드 프로세싱 및 선택적 작업에 적합
- 원하는 인스턴스 수, 인스턴스 유형, AZ 및 인스턴스 시간 당 지불하고자 하는 최고 가격이 포함된 스팟 인스턴스 요청을 생성
- 최고 가격이 현재 스팟 가격을 초과하는 경우 EC2는 용량이 가용 상태가 되는 즉시 요청을 이행 아니면 취소할 때 까지 EC2 대기
- 지속시간 (스팟 블럭이라고도 함) 이 정의된 스팟 인스턴스는 지속 시간 동안 중단되지 않고 계속 실행되도록 설계되었다.
- 종료 2분 전 경고하고 용량 때문에 중단되어도 종료된 인스턴스를 사용한 경우에도 요금이 부과되지 않는다.
🔔 스팟 집합
- 플릿에서 스팟 인스턴스가 종료된 후 교체 인스턴스를 시작하여 목표 용량을 유지하도록 설정
🔔 전용 호스트
- 전용 호스트는 고객 전용의 EC2 인스턴스 용량을 갖춘 물리적 서버이다.
- 전용 호스트를 사용하면 Windows Server, Microsoft SQL Server, SUSE 및 Linux Enterprise Server를 포함한 기존 소켓당, 코어당 또는 VM당 소프트웨어 라이선스를 사용할 수 있다.
🔔 전용 인스턴스
- 전용 인스턴스는 단일 고객 전용 하드웨어의 Virtual Private Cloud (VPC)에서 실행되는 EC2 인스턴스이다.
- 다른 AWS 계정에 속하는 전용 인스턴스는 이러한 계정이 단일 지급인 계정에 연결된 경우라도 하드웨어 수준에서 물리적으로 격리된다.
- 하지만 전용 인스턴스는 전용 인스턴스가 아닌 동일한 AWS 계정의 다른 인스턴스와 하드웨어를 공유할 수 있다.
🔔 전용 호스트 vs 전용 인스턴스
| 전용 호스트 | 전용 인스턴스 |
---|
결제 | 호스트 단위 결제 | 인스턴스 단위 결제 |
소켓, 코어 및 호스트 ID 표시 여부 | 소켓 및 물리 코어 수 표시 여부 제공 | 표시 여부 없음 |
호스트 및 인스턴스 선호도 | 시간에 따라 지속적으로 동일한 물리 서버에 인스턴스 배포 허용 | 지원되지 않음 |
대상 지정 인스턴스 배치 | 물리 서버 내 인스턴스 배치 방법에 대한 추가 가시성 및 제어 제공 | 지원되지 않음 |
자동 인스턴스 복구 | 참조 | 지원 |
Bring Your Own License (BYOL) | 지원 | 지원되지 않음 |
- 전용 물리적 서버 임대로 둘 다 적격 소프트웨어 라이센스를 사용할 수 있지만 호스트가 좀 더 비용 효율적이다.
🔔 배치그룹
클러스터 배치그룹
- 단일 가용 영역 내에 있는 인스턴스의 논리적 그룹이다.
- 클러스터 배치그룹은 동일한 리전의 피어링된 VPC에 걸쳐 적용될 수 있다.
- 동일한 클러스터 배치 그룹의 인스턴스는 TCP/IP 트래픽에 더 높은 흐름당 처리량 제한을 제공하며 네트워크의 동일한 높은 양방향 대역폭 세그먼트에 배치된다.
파티션 배치그룹
- 애플리케이션에 대한 상관 관계가 있는 하드웨어 장애 가능성을 줄이는 데 도움이 된다.
- 파티션 배치그룹을 사용하는 경우 EC2는 각 그룹을 파티션이라고 하는 논리 세그먼트로 나눈다.
분산형 배치그룹
- 각각 고유한 랙에 배치된 인스턴스 그룹이며 랙마다 자체 네트워크 및 전원이 있다.
- 서로 떨어져 있어야 하는 중요 인스턴스의 수가 적은 애플리케이션에서는 분산형 배치 그룹이 권장된다.
🔔 EC2 고유 IP주소 가져오기
- 온프레미스 네트워크에서 AWS 계정을 공용 IPv4 주소 범위의 일부 또는 전체를 가져올 수 있다.
- ROA (Route Origin Authorization)
ARIN 또는 RIP와 같은 지역 인터네 레지스트리를 통해 작성할 수 있는 문서
- 여기에는 주소 범위, 주소 범위를 알릴 수 있는 ASN 및 만료 날짜가 포함된다.
📒 AWS Elastic Beanstalk
- 애플리케이션을 실행하는 인프라에 대한 염려 없이 AWS 클라우드에서 애플리케이션을 신속하게 배포 및 관리할 수 있다.
- 선택 또는 제어에 대한 제약 없이 Elastic Beanstalk의 관리 복잡성이 줄어든다.
- 애플리케이션을 업로드하기만 하면 Beanstalk에서 용량 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링에 대한 세부 정보를 자동으로 처리한다.
- Go, Java, .NET, Node.js, PHP, Python, Ruby 에서 개발된 애플리케이션을 지원한다.
- 애플리케이션을 생성하고, 애플리케이션 소스 번들의 형태로 애플리케이션 버전을 업로드하고 자동으로 환경을 싱행하고 코드 실행에 필요한 AWS 리소스를 생성 및 구성한다.
📒 AWS ECS
- 확장성이 뛰어나고 빠른 컨테이너 관리 서비스이다.
- 관리형 컨테이너 오케스트레이션 완전관리형 서비스인 ECS에는 AWS 구성과 운영 모범 사례가 내장되어 있다.
- 이는 제한 영역, 노드 또는 추가 기능을 관리할 필요가 없음을 의미한다.
- CI/CD, 이는 Docker 컨테이너를 기반으로 하는 마이크로서비스 아키텍처의 일반적인 프로세스이다.
소스 코드 리포지토리 변경 사항 모니터링
해당 소스로 새로운 Docker 이미지 빌드
ECR 또는 Docker Hub와 같은 이미지 리포지토리에 이미지 푸시
애플리케이션에서 새로운 이미지를 사용하도록 ECS 서비스 업데이트
- 서비스 검색 지원.
대다수 분산 시스템과 서비스 중심 아키텍처의 핵심 구성요소이다.
서비스 검색을 사용할 경우 마이크로서비스 구성 요소가 지정된 인프라에서 생성되고 종료되면 자동으로 검색된다.
- CloudWatch Logs로 컨테이너 인스턴스 로그 정보 전송 지원.
- Secrets Manager 암호 또는 시스템 관리자 파라미터 스토어로 파라미터에 중요한 데이터를 저장한 다음 컨테이너 정의를 참조해서 중요한 데이터를 컨테이너에 주입할 수 있다.
- 사용사례 : 마이크로서비스, 웹 사이트, 비디오 렌더링 서비스, 기계 학습
ECS 실행하는데 사용할 수 있는 2가지 모델
Fargate 시작 유형
- 서버리스 종량제 옵션
- 인프라를 관리할 필요 없이 컨테이너를 실행할 수 있다.
- 애플리케이션이 요청하는 vCPU 및 메모리 리소스에 따라 요금 청구
- Fargate 적합 워크로드
낮은 오버헤드를 위해 최적화해야 하는 대규모 워크로드
가끔 버스트가 발생하는 소규모 워크로드
작은 워크로드
배치 워크로드
EC2 시작 유형
- 클러스터에서 EC2인스턴스를 구성하고 배포하여 컨테이너를 실행한다.
- EC2 인스턴스 및 EBS 볼륨에 따라 요금 청구
- EC2 시작 유형 적합 워크로드
지속적으로 높은 CPU 코어 및 메모리 사용량이 필요한 워크로드
가격에 최적화되어야 하는 대규모 워크로드
애플리케이션이 영구 스토리지에 액세스해야함
인프라를 직접 관리해야함
📒 Amazon EKS
- k8s를 실행하는데 사용할 수 있는 관리형 서비스이다.
- k8s 제어 플레인 또는 노드를 설치, 작동 및 유지 관리할 필요가 없다.
- 여러 AZ에 걸쳐 k8s 제어 플레인을 실행하고 크기 조정하여 높은 가용성을 보장한다.
- 하중에 따라 제어 영역 인스턴스의 크기를 자동으로 조정하고, 비정상 제어 영역 인스턴스를 감지하고 교체하며, 자동화된 버전 업데이트 및 패치를 제공한다.
- 또한 여러 AWS 서비스와 통합되어 다음 기능을 포함한 애플리케이션에 대한 확장성과 보안을 제공한다.
- 컨테이너 이미지에 대한 ECR
- 로드 분산을 위한 ELB
- 인증용 IAM
- 격리를 위한 VPC
- 필요한 코드를 수정하지 않고 표준 k8s 애플리케이션을 EKS로 쉽게 마이그레이션 할 수 있다.
📒 Elastic Load Balancing
🔔 ALB
- HTTP 및 HTTPS 트래픽을 사용하는 애플리케이션을 위한 유연한 기능이 필요한 경우 선택
- 요청 수준에 따라 작동하는 ALB는 마이크로서비스 및 컨테이너를 비롯한 애플리케이션 아키텍처를 대상으로 하는 고급 라우팅 및 표시 기능을 제공한다.
🔔 NLB
- 애플리케이션에 초고성능, 대규모 TLS 오프로딩, 중앙 집중화된 인증서 배포, UDP에 대한 지원 및 고정 IP주소가 필요한 경우 선택
- 연결 수준에서 작동하는 NLB는 안전하게 초당 수백만 개의 요청을 처리하면서도 극히 낮은 지연시간을 유지할 수 있다.
- 연결 드레이닝
기존 연결을 열린 상태로 유지하면서 CLB가 등록 취소 또는 비정상 인스턴스에 대한 요청 전송을 중지하도록 하려면 연결 드레이닝을 사용한다.
📒 AWS Fargate
- 컨테이너에 적합한 서버리스 컴퓨팅 엔진으로, ECS 및 EKS와 연동된다.
- Fargate를 사용하면 서버를 프로비저닝하고 관리할 필요가 없기 때문에 애플리케이션 별로 리소스를 지정하고 관련 비용을 지불할 수 있으며, 계획적으로 애플리케이션을 격리하여 보안을 개선할 수 있다.
📒 AWS Lambda
-
서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스이다.
-
고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 코드 모니터링 및 로깅 등 모든 컴퓨팅 리소스 관리를 수행한다.
-
비동기식 호출
Lambda는 처리를 위해 이벤트를 대기열에 저장하고 즉시 응답을 반환한다.
-
동기식 호출
함수가 이벤트를 처리하여 응답을 반환하기를 기다린다.
🔔 Lambda 실행 제한
- 메모리 제한 128MB ~ 10GB, 환경변수는 최대 4KB 이다.
- 단위는 1MB 씩 증가하고 메모리를 증가시키면 vCPU도 함께 증가하고 최대 실행 시간은 900초 / 15분이다.
- /tmp 파일에 최대 512MB 파일 크기를 실행 가능하고 최대 1000건 까지 동시 실행이 가능하다
‼️ 1000건을 초과할 시 AWS 지원 팀에 문의 ‼️
- 압축된 zip의 최대 크기는 50MB, 압축되지 않으면 250MB, 더 큰 파일이면 /tmp 디렉토리를 사용한다.
- 함수를 실행하는 동안 VPC에 충분한 ENI 또는 서브넷 IP가 없는 경우 요청이 증가함에 따라 EC2ThrottledException 호출 오류가 날 수 있다.
- 비동기식 호출의 경우 해당 CloudWatch Logs 없이 오류가 증가하면 콘솔에서 Lambda 함수를 동기식으로 호출하여 오류 응답을 얻는다.
📒 Lambda@Edge
- 동기식 호출 유형으로 Lambda와 CloudFront를 통합하여 cf, origin 간의 통신을 수정한다.
- 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있다.
- 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되지 않는다.
- 사실상 모든 유형의 애플리ㅔ이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행할 수 있다.
- 코드를 업로드하기만 하면, Lambda에서 높은 가용성으로 코드를 실행 및 확장하는데 필요한 모든 것을 처리한다.
- 다른 AWS 서비스에서 코드를 자동으로 트리거하도록 설정하거나 웹 또는 모바일 애에서 직접 코드를 호출 가능하다.
- 함수가 무한정 실행되지 않도록 시간 초과 지정한다.
기본 시간 초과는 3초, 요청당 최대 실행 기간은 900초 / 15분
🔔 Lambda 함수를 사용하여 cf 요청 및 응답을 다음과 같이 변경 가능 :
- cf가 최종 사용자의 요청을 수신한 경우 (최종 사용자 요청)
- cf가 오리진에 요청을 전달하기 전 (오리진 요청)
- cf가 오리진으로부터 응답을 수신한 후 (오리진 응답)
- cf가 최종 사용자에게 응답을 전달하기 전 (최종 사용자 응답)