AWS Cloud Practitioner Essentials - Module 3: 컴퓨팅 서비스 살펴보기

Module 3: 컴퓨팅 서비스 살펴보기
서버리스 컴퓨팅 소개
- AWS 컴퓨팅 옵션 비교 (비관리형, 관리형, 서버리스)
- 비관리형 서비스 (Unmanaged Services)
- 정의
- 기본적인 물리적 인프라만 AWS가 제공하고, 운영 체제(OS) 패치, 애플리케이션 설치, 네트워크/방화벽 구성 등 나머지 모든 구성과 관리를 고객이 직접 제어하는 서비스
- 대표 서비스
- 특징
- 인스턴스 전체에 대해 아주 높은 수준의 사용자 지정 제어 권한(Control)을 제공하지만, 사용자의 유지보수 및 관리 오버헤드가 큼 (수동 관리)
- 관리형 서비스 (Managed Services)
- 정의
- 사용자가 자신의 요구사항에 맞춰 초기 설정을 구성하면, 가동 유지, 패치, 업그레이드, 장애 극복 등의 운영 작업을 AWS가 백그라운드에서 직접 처리해주는 서비스
- 대표 서비스
- Elastic Load Balancing (ELB), Amazon SQS, Amazon SNS 등
- 특징
- 인프라 관리 부담을 줄여주므로 사용자는 인프라 유지보수보다 애플리케이션 구축 및 비즈니스 로직 설계에 집중할 수 있음
- 서버리스/완전관리형 서비스 (Serverless / Fully Managed)
- 정의
- 사용자가 애플리케이션을 구동하기 위한 가상 서버나 리소스를 직접 보거나 관리할 필요가 전혀 없는 서비스
- 대표 서비스
- 특징
- 리소스 프로비저닝, 고가용성, 하드웨어 유지 관리, 자동 스케일링이 모두 완전 자동 처리되며 사용자는 작성한 코드 자체만 배포하고 관리함 (편의성에 최적화)
aws 서버리스, 컨테이너, 솔루션 개요
aws lambda
- AWS Lambda
- 정의
- 서버를 별도로 프로비저닝하거나 직접 관리하지 않고도, 특정 이벤트(트리거)에 반응하여 코드를 바로 실행하는 대표적인 서버리스(Serverless) 컴퓨팅 서비스
- 작동 원리
- 사용자가 코드를 작성하여 Lambda 함수로 업로드하고 이벤트 소스(S3 파일 업로드, SQS 메시지 생성, HTTP 요청 등)를 트리거로 세팅함
- 해당 이벤트가 발생할 때만 코드가 가동되며, 평상시 유휴 상태에는 하드웨어 리소스나 비용 소모가 없음
- 요금 체계
- 실제 코드가 수행된 시간(밀리초 단위로 정확히 계산) 및 함수에 할당한 메모리 용량 크기에 따라 비용이 부과됨
- 실행 제한 (매우 중요)
- 최대 지속 시간 제한: 15분
- 15분 이내에 완료되지 않는 장기 프로세싱 작업에는 적합하지 않으며, 이 경우 다른 컴퓨팅 인스턴스를 선택하거나 작업을 15분 단위 세그먼트로 분리해야 함
- 프로그래밍 언어 지원
- Java, Python, Node.js 등을 런타임 환경으로 기본 지원하며, 기타 언어는 사용자 지정 런타임(Custom Runtime)을 구축하여 가동 가능
- AWS 서비스 통합 및 데모 (SQS 트리거 기반 Lambda 작동 프로세스)
- 큐 및 메시지 준비
- SQS 콘솔에서 대기열을 생성한 뒤 테스트 메시지(페이로드)를 전송하여 대기시킴
- 청사진 (Blueprint) 활용
- 빠른 연동 테스트를 위해 SQS와 연계된 검증된 템플릿(청사진)을 활용하여 Node.js, Python 등의 런타임 환경으로 Lambda 함수(예: Lambert)를 신속하게 생성함
- 실행 역할 (Execution Role) 설정
- Lambda 함수가 SQS 대기열을 지속적으로 감시하고 메시지를 가져올 수 있도록 Amazon SQS 폴러 정책 템플릿 권한이 인가된 전용 실행 역할(예: Demo_Lambert_Role)을 반드시 지정해 주어야 함
- 트리거 (Trigger) 매핑
- 대상 SQS 대기열을 Lambda 함수의 유효한 트리거 소스로 구성하여 연결 설정을 완료함
- 메시지 폴링 및 자동 삭제
- SQS 대기열에 새로운 메시지가 유입되면 Lambda 함수가 이를 인지하여 지극히 빠른 속도로 메시지를 가공/처리하며, 처리가 성공한 메시지는 SQS 대기열에서 자동으로 영구 소멸됨
- 모니터링 및 로깅 감사
- Lambda 콘솔의 Monitor 탭을 통해 지표를 조회하거나, 연동된 Amazon CloudWatch Logs의 로그 그룹(Log Groups) 및 로그 스트림(Log Streams)을 열어 함수가 처리한 실제 데이터 내용과 ID 로그를 검증하고 감사 추적할 수 있음
- Lambda 사용 사례
- 실시간 이미지 처리
- 정의: 소셜 미디어 등에 사진 업로드 시 Lambda가 트리거되어 썸네일 크기로 변환 및 필터 처리 자동화
- 개인화 콘텐츠 전송
- 정의: 뉴스 피드 접속 등의 이벤트 트리거 시 사용량에 따라 개인 추천 엔진을 자동 가동 및 최적 데이터 송신
- 온라인 게임의 실시간 이벤트 처리
- 정의: 점수 획득, 업적 해제 등의 이벤트를 수천 명의 플레이어로부터 실시간으로 받아 서버리스 상태에서 갱신 및 처리
aws 기반의 컨테이너 및 오케스트레이션
- 컨테이너 (Containers)
- 정의
- 애플리케이션의 코드, 런타임, 라이브러리, 종속성, 설정 파일 등을 단일 패키지로 묶어 어떤 컴퓨팅 환경에서든 동일하게 작동하도록 격리하는 이식성 높은 가상화 환경
- 컨테이너 vs 가상 머신(VM)
- 컨테이너는 호스트 OS 커널을 공유하여 가볍고 부팅 속도가 매우 빠르며 리소스 효율성이 우수함
- VM은 하이퍼바이저 위에서 각각 별개의 전체 OS를 가동하므로 속도가 느리고 인프라 자원을 상대적으로 많이 소모함
- 컨테이너 오케스트레이션 (Container Orchestration)
- 정의
- 수십~수천 개에 이르는 컨테이너의 전체 수명 주기(시작, 중지, 업데이트, 네트워킹, 오토 스케일링, 오류 복구 등)를 자동화하여 통합 관리해 주는 서비스
- AWS 컨테이너 서비스 분류
- 레지스트리 (Registry)
- Amazon ECR (Elastic Container Registry): 컨테이너 이미지를 보관하는 ‘창고’
- 정의: 안전하게 컨테이너 이미지를 보관, 관리, 배포하는 완전 관리형 OCI 표준 준수 레지스트리 서비스
- 오케스트레이션 (Orchestration)
- Amazon ECS (Elastic Container Service)
- 정의: Docker 컨테이너를 가동 및 관리할 수 있도록 지원하는 AWS 독자적인 고성능 컨테이너 오케스트레이션 서비스
- 특징: 간소하고 통합된 기능 제공. 소규모 팀이나 트래픽 유동성이 있는 애플리케이션 구축에 적합
- Amazon EKS (Amazon Elastic Kubernetes Service)
- 정의: 오픈소스 컨테이너 관리 프레임워크인 Kubernetes를 AWS 환경에서 쉽게 다룰 수 있게 보장하는 관리형 서비스
- 특징: 오픈소스 생태계 통합 및 하이브리드/대규모 배포 시 우수한 통제력과 유연성을 제공함
- 컴퓨팅/호스팅 플랫폼 (Compute Platforms)
- Amazon EC2 시작 유형
- 정의: 가상 서버 인프라를 사용자가 직접 구성하고 가상 머신 수준의 세부 설정을 제어하는 방식
- 특징: 하드웨어 및 특수한 네트워크 설정의 커스터마이징이 가능하나 서버 유지 관리 오버헤드가 수반됨
- AWS Fargate 시작 유형
- 정의: 서버를 프로비저닝하거나 관리할 필요가 없는 컨테이너 전용 서버리스(Serverless) 컴퓨팅 엔진
- 특징: 컨테이너의 배치 및 가동 스케일링을 AWS가 100% 관리해주며 사용자는 사용한 컨테이너 자원에 대해서만 지불함 (ECS와 EKS 모두 Fargate 시작 유형을 지원함)
추가 컴퓨팅 서비스
- AWS Elastic Beanstalk
- 정의
- Java, Python, Node.js, Docker 등으로 작성된 웹 애플리케이션 및 서비스를 신속하게 배포, 관리, 스케일링할 수 있도록 돕는 완전 관리형 서비스 (PaaS)
- 특징
- 사용자가 소스 코드와 구성 설정만 업로드하면 인프라 프로비저닝, 오토 스케일링, 로드 밸런싱, 애플리케이션 상태 모니터링을 자동으로 대행함
- 인프라를 직접 구축할 필요는 없지만, 프로비저닝된 하위 AWS 기본 리소스(EC2 등)에 대한 세부적인 제어 및 수정 권한은 여전히 소유함
- 적합한 대상
- 인프라 설정 복잡성을 줄이고 즉시 배포하려는 웹 애플리케이션, RESTful API, 마이크로서비스
- AWS Batch
- 정의
- AWS 인프라 리소스를 직접 관리할 필요 없이 대규모 병렬 배치(Batch) 컴퓨팅 워크로드를 자동으로 예약하고 실행해 주는 완전 관리형 서비스
- 특징
- 작업의 우선순위와 컴퓨터 리소스 사양에 맞춰 필요한 최적의 컴퓨팅 인프라(EC2 등) 풀을 자동으로 증설, 스케일링, 배포 및 회수함
- 적합한 대상
- 과학 계산 시뮬레이션, 대용량 빅데이터 및 유전체 분석 처리, 미디어 트랜스코딩, 기계 학습 모델 훈련
- Amazon Lightsail
- 정의
- 저렴하고 예측 가능한 정액제 월별 요금으로 가상 프라이빗 서버(VPS), 인스턴스, 스토리지, DB, 네트워킹을 간편하게 패키지로 제공하는 서비스
- 특징
- 복잡한 AWS 관리 콘솔의 설정 없이도 매우 간단한 제어판을 제공하여 인프라 구축의 허들을 대폭 낮춤
- 적합한 대상
- 소규모 비즈니스 웹사이트, 저트래픽 개인 블로그(예: WordPress), 개발자 학습용 샌드박스, 단순한 개발/테스트 환경
- AWS Outposts
- 정의
- AWS 클라우드 인프라, 서비스, API, 도구를 고객 온프레미스 데이터 센터나 로컬 물리 서버 환경으로 확장하여 서비스하는 완전 관리형 하이브리드 솔루션
- 특징
- AWS 퍼블릭 클라우드 환경과 자사 온프레미스 로컬 인프라 간에 완전히 일관된 작동 경험과 도구 세트를 제공함
- 적합한 대상
- 규정 준수 및 현지 법률로 인한 물리적 데이터 보존(Data Residency) 요구 충족, 로컬 레거시 시스템과의 연동을 위한 극도로 짧은 지연 시간(Low Latency) 요구 상황