!!해당 글은 AWS Skill Builder의 AWS technical-essentials 과정을 요약한 내용입니다.!!
AWS Computing
AWS Elastic Compute Cloud(EC2)
- 안전하고 크기 조정이 가능한 가상으로 만들어진 서버, 즉 VM(Virtual Machine)을 AWS내에서는 EC2 인스턴스로 부른다.
- EC2 인스턴스의 구성요소
- CPU, 메모리, 네트워크, 스토리지 같은 하드웨어 사양
- 네트워킹 위치, 방화벽 규칙, 인증, 운영 체제 같은 논리적 구성
Amazon Machine Image(AMI)
- EC2 인스턴스를 생성 하기 위한 정보 및 운영체제 등을 정의하는 방식, 즉 EC2의 레시피라고 할 수 있다.
- AMI를 통해 동일한 구성을 가진 EC2를 생성할 수 있다.
- 기본적으로 AWS에서 다양한 AMI를 제공하며 서드파티 공급 업체, 커뮤니티 등에서 커스텀된 AMI도 활용할 수 있다.
EC2 인스턴스 유형
- EC2는 필요에 따라 구성요소 인 가상 프로세서(vCPU), 메모리, 네트워크, 스토리지, GPU의 사양을 정할 수 있다.
- 사양을 결정하는 인스턴스 유형은 인스턴스 패밀리와, 용량으로 구성되어 있다.
- 인스턴스 패밀리는 범용(t, m), 컴퓨팅 최적화(c), 메모리 최적화(r, x), 엑셀러레이티드 컴퓨팅(g), 스토리지 최적화(im, is) 등으로 나타낸다.
- 즉, c5.large는 컴퓨팅 최적화, 5세대, large 용량을 가진 인스턴스 이다.
EC2의 위치
- 기본값으로 EC2는 기본 VPC에 위치한다.
- 이 때 EC2는 외부에 공개되며 액세스가 가능하므로 고객 데이터, 개인 정보를 저장해서는 안된다.
- 보안을 위해 사용자 지정 VPC를 생성하고 라우팅 및 연결 매커니즘 을 통해 액세스를 제안해야 한다.
고가용성을 위한 설계
- 인스턴스를 생성할 때 선택한 가용영역에 상주하게 된다.
- 애플리케이션을 고가용성으로 설계할 때는 두 개의 개별 가용영역에서 최소 두 개의 EC2 인스턴스를 사용하는 것이 좋다.
EC2 인스턴스의 상태
- 보류 중
- 인스턴스를 막 시작 했을 때의 상태, 요금 청구가 되지 않음
- 실행 중 상태로 들어갈 준비를 하는 단계(AMI 콘텐츠 복사, 네트워킹 구성요소 할당 등)
- 실행 중
- 사용할 준비가 된 상태, 요금 청구가 시작됨
- 재부팅, 종료, 중지-최대절전 모드 상태로 변환 가능
- 인스턴스 재부팅
- 운영체제 재부팅과 같다.
- 인스턴스가 동일한 호스트(물리적 서버) 컴퓨터에 남아 있다.
- 퍼블릭 및 프라이빗 IP 주소 유지
- 인스턴스 스토어(메모리, 캐시 등)의 모든 데이터가 유지된다.
- 중지 후 시작(Stop and Strat)
- 새로운 호스트(물리적 서버)에 배치될 수 있다.
- 프라이빗 IP는 유지 되지만, 새 퍼블릭 IP로 교체 된다.
- 인스턴스 스토어의 데이터(메모리, 캐시 등)가 손실된다.
- 종료(Terminate)
- 인스턴스 스토어가 삭제된다
- 퍼블릭 IP 주소와 프라이빗 IP 주소가 모두 손실된다.
- 더 이상 머신에 엑세스 할 수 없고, 일정 시간 뒤에 삭제 된다.
- 중지
- 인스턴스 사용량 또는 데이터 전송요금 부과 되지 않음
- 인스턴스에 연결된 EBS 볼륨의 스토리지는 요금이 부과됨
- 인스턴스 유형과 같은 일부 속성을 수정할 수 있음
- 인스턴스 스토어(메모리, 캐시 등)의 데이터가 손실됨
- 인스턴스 사용량 또는 데이터 전송요금 부과 되지 않음
- 중지-최대 절전 모드
- 중지 상태와 같이 EBS볼륨과 스토리지 요금이 부과됨
- 중지 상태도 들어갈 때 인스턴스 스토어(메모리, 캐시 등)의 데이터를 EBS 볼륨으로 전송 하여, 다시 시작 했을 때 메모리의 데이터가 남아있다.
EC2 요금 체계
- 온디맨드
- 별도의 기간 계약 없이 사용한 만큼 초당으로 과금되는 방식
- 인스턴스를 항상 실행해야 된다면 예약 인스턴스, Savings Plan을 활용는것이 경제적이다.
- 인스턴스를 중지하거나 종료 하면 요금 청구가 중지된다.
- 예약 인스턴스(Reserved Instance, RI)로 용량 예약
- 1년 또는 3년 기간 약정을 통해 할인된 요금으로 과금
- 전체 및 부분 선결제를 통해 높은 할인을 제공 받을 수 있다.
- 온디멘드와 달리 인스턴스를 종료 하여도 요금이 청구 된다.
- Savings Plan
- RI와 비슷하지만 유연성이 추가된 요금 모델
- 특정 인스턴스 구성 대신 일관된 양의 컴퓨팅 사용량을 약정
- 요구 사항에 가장 적합한 컴퓨팅 옵션을 사용할 수 있는 유연성 제공
- 스팟 인스턴스
- 가장 저렴하게 인스턴스를 사용할 수 있는 요금 체계
- 하지만 언제든지 중단 될 가능성이 있고, 중단 2분 전에 경고를 표시
- 내결함성 워크로드를 활용하는데 유용하다.
컨테이너 서비스
- 컨테이너
- 웹 애리케이션, 리프트 앤시프트 마이그레이션, 분산 애플리케이션, 테스트 및 프로덕션 환경의 간소화 등의 용도로 활용 될 수 있는 컴퓨팅 자원
- 코드 및 해당 종속성을 패키징하는 표준화된 단위
- 도커는 네트워킹 및 스토리지를 포함하여 격리에 필요한 전체 운영 체제 스택의 관리를 단순화하는 컨테이너 런타임(컨테이너 실행 SW) 이다.
- 컨테이너와 가상머신(VM)의 차이
- 가상머신은 호스트와 운영체제와 커널은 공유하지만 가상머신 별도의 운영체제(게스트 OS)도 포함되어 있어 공간이 낭비된다
- 컨테이너는 설치 된 운영체제의 커널을 공유하여 더 가볍고 빠르게 가동되어 빠르게 크기를 조정할 수 있다.
- 컨테이너는 속도를 제공할 수 있지만, 가상 머신은 패키지 설치, 전용 커널 등과 같은 더 많은 리소스를 제공한다.
컨테이너 오케스트레이션
- 컨테이너 오케스트레이션 이란?
- AWS에서 컨테이너는 EC2 인스턴스에서 실행됨
- 대규모 하나의 인스턴스에서 컨테이너를 관리하는 것이 쉽니만 고가용성, 확장성 확보가 어려움
- 실제로 대부분의 기업 및 조직은 여러 가용 영역에 걸쳐 많은 EC2 인스턴스에서 컨테이너를 실행
- 컨테이너 오케스트레이션이 필요한 이유
- 여러 가용영역에 걸친 인스턴스에 컨테이너 배치
- 컨테이너 실패시 영향 관리
- 인스턴스 실패시 영향 관리
- 배포된 컨테이너 모니터링을 위해 활용
AWS의 컨테이너 오케스트레이션
- Amazon Elastic Container Service(Amazon ECS)
- 새로운 컨테이너를 가동하고 전체 EC2 인스턴스의 클러스터에서 관리하는데 도움
- EC2 인스턴트에 ECS 컨테이너 에이전트 설치하여 컨테이너를 관리하며 이를 컨테이너 인스턴스 라고 부른다.
-
-
- Amazon Elastic kubernetes Service(Amazon EKS)
- 컨테이너화된 워크로드 및 서비스를 관리하기 위한 이동 가능하고 확장 가능한 오픈소스 플랫폼
- 설계에 따라 소프트웨어 개발 및 운영을 통합함으로써 시장에서 인기 있고 선도하는 생태계 구성
- Kubernetes에서 컨테이너를 실행 중이고, 단순성, 고가용성, 인프라에 대한 세분화된 제어를 제공할 수 있는 고급 오케스트레이션 솔루션
- ECS와 EKS의 차이 ||ECS|EKS| |---|:---:|:---:| EC2 인스턴스|컨테이너 인스턴스|작업자 노드 컨테이너|태스크|포드| 실행 주체|AWS 네이티브|kubernetes(k8s)
-
서버리스
- EC2 인스턴스를 관리할 필요 없이 워크로드와 애플리케이션을 배포
- 서버리스의 정의
- 프로비저닝하거나 관리할 서버가 없음
- 사용량에 따라 크기 조정
- 대기 중인 리소스에 대한 비용을 지불하지 않음
- 가용성 및 내결함성을 기본 제공
AWS Fargate
- 컨테이너용으로 특별히 빌드된 서버리스 컴퓨팅 엔진
- 스스로 적절한 컴퓨팅 용량을 할당 및 크기 조정
- ECS 및 EKS 아키텍처를 모두 지원
AWS Lambda
- 서버 또는 컨테이너를 프로비저닝 하거나 관리하지 않고도 코드를 실행
- 거의 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행
- 구성요소
- 코드
- Lambda 함수가 실행해야 하는 작업을 설명하는 소스 코드
- 구성
- 함수 실행 방법을 설명하는 정보(네트워크 배치, 환경 변수, 메모리, 호출 유형 등)
- 트리거
- Lambda함수가 실행될 시기를 설명
- 다른 AWS 서비스와 통합하므로 AWS 계정에서 발생하는 특정 API 호출에 대한 응답으로 함수 실행 가능
- 코드