클라우드 컴퓨팅
💡 인터넷을 통해 IT 리소스와 애플리케이션을 온디맨드로 제공하는 것
클라우드 컴퓨팅 배포 모델
- 클라우드 기반 배포
- 모든 애플리케이션을 클라우드에서 실행
- 기존 애플리케이션을 클라우드로 마이그레이션
- 클라우드에서 새 애플리케이션 설계 및 빌드
- 온프레미스 배포(프라이빗 클라우드 배포)
- 가상화 및 리소스 관리 도구를 사용하여 리소스 배포
- 애플리케이션 관리 및 가상화 기술을 사용하여 리소스 활용도 높임
- 하이브리드 배포
- 클라우드 기반 리소스를 온프레미스 인프라에 연결
- 클라우드 기반 리소스를 레거시 IT 애플리케이션과 통합
이점
- 선행 비용을 가변 비용으로 대체
- 데이터 센터 운영 및 유지 관리에 비용 투자 불필요
- 용량 추정 불필요
- 규모의 경제로 얻게 되는 이점
- 속도 및 민첩성 향상
- 몇 분 만에 전 세계 배포
Elastic Compute Cloud(EC2)
- 안전하고 크기 조정이 가능한 컴퓨팅 용량을 클라우드에서 제공
EC2 작동 방식
- 시작
- 인스턴스 시작
- 기본 구성(운영 체제, 애플리케이션 서버 또는 애플리케이션) 인스턴스가 포함되어 있는 템플릿을 선택하여 시작
- 인스턴스 유형 선택
- 보안 설정 지정
- 연결
- 여러가지 방법으로 연결 가능
- 사용
- 명령을 실행하여 소프트웨어 설치, 스토리지 추가, 파일 복사 및 정리 등의 작업 수행
EC2 인스턴스 유형
- 유형 선택시 워크로드 및 애플리케이션의 구체적 요구 사항을 고려해야 함
- 범용 인스턴스
- 컴퓨팅, 메모리, 네트워킹 균형 제공
- 애플리케이션, 게임, 엔터프라이즈 애플리케이션용 백엔드 서버, 중소 규모 데이터베이스
- 컴퓨팅 최적화 인스턴스
- 고성능 프로세서를 활용하는 컴퓨팅 집약적인 애플리케이션에 적합
- 고성능 웹서버, 컴퓨팅 집약적 애플리케이션 서버, 게임 전용 서버에 적합
- 단일 그룹에서 많은 트랜잭션을 처리해야 하는 일괄 처리 워크로드에 사용
- 메모리 최적화 인스턴스
- 메모리에서 대규모 데이터 셋을 처리하는 워크로드를 위한 빠른 성능을 제공
- 많은 데이터를 미리 로드해야 하는 워크로드에 적합
- 고성능 데이터베이스
- 엑셀러레이티드 컴퓨팅 인스턴스
- 하드웨어 엑셀러레이터 또는 코프로세서를 사용하여 일부 기능을 CPU보다 더 효율적으로 수행
- 부동 소수점 수 계산, 그래픽 처리, 데이터 패턴 일치 등
- 데이터 처리를 가속화 할 수 있는 구성 요소
- 그래픽 애플리케이션, 게임 스트리밍, 애플리케이션 스트리밍에 적합
- 스토리지 최적화 인스턴스
- 로컬 스토리지의 대규모 데이터 셋에 대한 순차적 읽기 및 쓰기 액세스가 많이 필요한 워크로드에 적합
- 분산 파일 시스템, 데이터 웨어하우징 애플리케이션, OLTP 시스템
- 짧은 임의 IOPS(초당 입출력 작업 수) 제공
EC2 요금
- 온디맨드
- 중단할 수 없는 불규칙한 단기 워크로드가 있는 애플리케이션에 적합
- 선결제 비용, 최소 약정은 적용되지 않음
- 개발 및 테스트와 예측할 수 없는 사용 패턴이 있는 애플리케이션 실행 사례에 적합
- 1년 이상 지속되는 워크로드에는 권장되지 않음
- Savings Plans
- 1년또는 3년 기간 동안 일정한 컴퓨팅 사용량을 약정하여 컴퓨팅 비용 절감 (최대 72%)
- 약정 사용량까지는 할인된 Savings Plan 요금 청구. 초과 시 일반 온디맨드 요금 부과
- AWS Cost Explorer를 통해 EC2 사용량 분석 가능, Savings Plans를 위한 맞춤형 권장 사항 제공
- 예약 인스턴스
- 온디맨드 인스턴스를 사용할 때 적용되는 결제 할인 옵션
- 표준 예약 및 컨버터블 예약 인스턴스는 1년 또는 3년 약정
- 정기 예약 인스턴스는 1년 약정
- 3년 약정 옵션을 통해 더 큰 비용 절감 실현 가능
- 약정 기간이 끝나면 중단없이 사용가능하나, 종료 또는 인스턴스 속성(유형, 리전, 테넌시, 플랫폼)과 일ㅊ하는 새 예약 인스턴스 구입 전 까지는 온디맨드 요금 부과
- 스팟 인스턴스
- 시작 및 종료 시간이 자유롭거나 중단을 견딜 수 있는 워크로드에 적합
- 미사용 EC2 컴퓨팅 용량을 사용하며 온디맨드 요금의 최대 90%까지 비용 절감 가능
- 스팟 요청을 하고 EC2 용량을 사용할 수 없는 경우 용량을 사용할 수 있을 때 까지 요청 성공 하지 않음
- 스팟 인스턴스 시작 후 용량을 더 이상 사용할 수 없거나 수요가 늘면 중단될 수 있음
- 전용 호스트
- 사용자 전용의 EC2 인스턴스 용량을 갖춘 물리적 서버
- 가장 비용이 많이 듦
EC2 확장(Auto Scaling)
- 변화하는 애플리케이션 수요에 따라 EC2 인스턴스를 자동으로 추가하거나 제거 → 가용성을 효과적으로 유지
- 동적 조정: 수요 변화에 대응
- 예측 조정: 예측된 수요에 따라 적절한 수의 EC2 인스턴스를 자동으로 예약
- 두 조정은 함께 사용하면 더 빠르게 조정할 수 있음
- 최소 용량: Auto Scaling 그룹을 생성한 직후 시작되는 EC2 인스턴스의 수
- 희망 용량: 유지되었으면 하는 EC2 인스턴스의 수. 지정하지 않으면 최소 용량이 기본값
- 최대 용량: Auto Scaling 그룹을 구성하되 EC2 인스턴스의 최대 수 제한
Elastic Load Balancing
- 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스와 같은 여러 리소스에 자동으로 분산하는 서비스
- Auto Scaling 그룹으로 들어오는 모든 웹 트래픽의 단일 접점 역할.
- 들어오는 트래픽 양에 맞춰 EC2 인스턴스를 추가하거나 제거하므로 요청이 로드 밸런서로 먼저 라우팅된 후 요청을 처리할 여러 리소스로 분산
메시징 및 대기열
Simple Notification Service(SNS)
- 게시/구독 서비스
- 게시자는 SNS 주제를 사용하며 구독자에게 메시지 게시
- 구독자는 웹 서버, 이메일 주소, Lambda 함수 등등의 옵션 가능
Simple Queue Service(SQS)
- 메시지 손실이나 다른 서비스 사용 없이 소프트웨어 구성 요소 간에 메시지를 전송, 저장, 수신할 수 있음
- 애플리케이션이 메시지를 대기열로 전송
- 사용자 또는 서비스는 대기열에서 메시지를 검색, 처리 후 대기열에서 삭제
추가 컴퓨팅 서비스
서버리스 컴퓨팅
- 서버를 프로비저닝하거나 관리할 필요가 없음
- 처리량 및 메모리와 같은 소비 단위를 수정하여 애플리케이션의 용량 조정
- Lambda
컨테이너
- 애플리케이션의 코드와 종속성을 하나의 객체로 패키징하는 표준 방식 제공
- 보안성, 안정성, 확장성이 매우 중요한 프로세스 및 워크플로에도 사용
- Elastic Container Service(ECS)
- 컨테이너식 애플리케이션을 실행하고 확장할 수 있는 고성능 컨테이너 관리 시스템
- Elastic Kubernetes Service(EKS)
- AWS에서 쿠버네티스를 실행하는 데 사용할 수 있는 완전 관리형 서비스
- Fargate
- 컨테이너용 서버리스 컴퓨팅 엔진
- ECS와 EKS에서 작동
- 서버를 프로비저닝하거나 관리할 필요 없음