Compute
2025. 10. 14. 18:26ㆍCERTIFICATES/AWS DEA-C01
빅데이터에서의 EC2
- 온디맨드, 스팟, 예약 인스턴스:
- 스팟(Spot): 손실(loss)을 허용할 수 있는 경우 사용함, 비용이 저렴함 → 체크포인팅 기능 필요(예: 머신러닝 등)
- 예약(Reserved): 장기 실행 클러스터나 데이터베이스용으로 사용함(1년 이상 장기 사용 시 적합함)
- 온디맨드(On-Demand): 나머지 일반 워크로드에 사용함
- Auto Scaling (자동 확장):
- EMR 등에서 활용함
- DynamoDB, Auto Scaling Group 등에서는 자동화되어 있음
- EC2는 EMR의 기반 인프라임
- Master Node: 클러스터 관리 노드임
- Compute Node: 데이터를 보유함
- Task Node: 데이터를 보유하지 않고 연산만 수행함
AWS Graviton
- Amazon의 자체 프로세서 제품군은 여러 EC2 인스턴스 유형을 구동
- 범용(General purpose): M7, T4
- 컴퓨팅 최적화(Compute optimized): C7, C6
- 메모리 최적화(Memory optimized): R7, X2
- 스토리지 최적화(Storage optimized): Im4, Is4
- 가속 컴퓨팅(Accelerated computing) – 게임 스트리밍, 머신러닝 추론(ML inference)용: G5
- 최고의 가격 대비 성능을 제공함
- 다양한 데이터 엔지니어링 서비스에서 선택 가능한 옵션임
- MSK, RDS, MemoryDB, ElastiCache, OpenSearch, EMR, Lambda, Fargate
AWS Lambda
Lambda란 무엇인가
- 클라우드 상에서 코드 스니펫을 실행하는 방법
- 서버리스 방식으로 동작
- 지속적 확장 지원
- 일반적으로 데이터가 이동할 때 실시간으로 처리하는 용도로 사용됨
예
서버리스 웹사이트

주문 내역 앱

거래율 알람

서버를 실행하지 않는 이유
- 서버 관리 부담(패치, 모니터링, 하드웨어 장애 등)
- 서버 자체는 저렴할 수 있지만, 확장 시 비용이 매우 빠르게 증가
- 사용하지 않는 처리 시간에 대해서는 비용을 지불하지 않음
- 프론트엔드와 백엔드 개발을 분리하기 용이
Lambda의 주요 사용 사례
- 실시간 파일 처리
- 실시간 스트림 처리
- ETL 작업
- Cron 대체용(주기적 스케줄 작업 실행)
- AWS 이벤트 처리
지원 언어
- Node.js
- Python
- Java
- C#
- Go
- PowerShell
- Ruby
Lambda 트리거

Lambda와 Amazon OpenSearch Service

Lambda와 데이터 파이프라인

Lambda와 Redshift

- Redshift로 데이터 적재 시 모범 사례는 COPY 명령어를 사용하는 것
- 그러나 새로운 데이터가 언제든 나타나 응답해야하는 경우, Lambda를 사용 가능
- DynamoDB를 이용해 어떤 데이터가 이미 로드되었는지 추적할 수 있음
- Lambda가 새로운 데이터를 일정량(batch)으로 모아, COPY 명령어를 통해 Redshift로 로드하도록 구성할 수 있음
Lambda와 Kinesis
- Lambda 코드는 이벤트로부터 스트림 레코드 묶음을 수신함
- 트리거 설정 시 배치 크기를 지정할 수 있음 (최대 10,000개 레코드까지 가능함)
- 배치 크기가 너무 크면 타임아웃(timeout)이 발생할 수 있음
- Lambda의 페이로드 한도(6MB)를 초과하면 배치가 분할되어 처리됨
- Lambda는 배치가 성공할 때까지 또는 데이터가 만료될 때까지 재시도함
- 오류 처리를 적절히 하지 않으면, 특정 샤드가 멈추는 현상이 발생할 수 있음
- 샤드를 더 많이 분할하면, 일부 오류로 전체 처리가 중단되지 않도록 할 수 있음
- Lambda는 샤드 단위 데이터를 동기적으로 처리함

비용 모델
- 사용한 만큼만 지불
- 무료 이용 한도가 넉넉함(월 100만 요청, 400,000GB/초의 컴퓨팅 시간 제공)
- 백만 요청 당 0.2달러
- GB/초 당 0.00001667 달러
기타 보장 사항
- 고가용성
- 예약된 다운타임 없음
- 실패한 코드 자동 재시도 3회 수행
- 무제한 확장성
- 리전당 1000개 동시 실행의 보호 한도 존재
- 고성능
- 새로운 함수가 몇 초 내 호출 가능
- 이벤트가 밀리초 단위로 처리됨
- 코드는 자동으로 캐싱됨
- 단, 타임아웃은 사용자가 지정해야 함
- 타임아웃이 짧게 설정되면 문제 발생 가능
- 최대 실행 시간은 900초(15분)
안티 패턴
- 장시간 실행되는 애플리케이션
- EC2를 쓰는 것이 적합
- 또는 여러 Lambda 함수를 체이닝하여 실행
- 동적 웹사이트
- Lambda를 사용하여 클라이언트 측 AJAX에 의존하는 서버리스 앱을 개발할 수는 있지만 일반적인 동적 웹 애플리케이션에는 부적합
- 상태 저장 애플리케이션
- DynamoDb나 S3를 활용하여 애플리케이션 상태를 추적하는 방식으로 구현 가능
Lambda - 파일 시스템 마운트
- Lambda 함수가 VPC 내에서 실행 중인 경우, EFS 파일 시스템에 접근 가능
- Lambda를 구성하여 초기화 시점에 EFS 파일 시스템을 로컬 디렉터리에 마운트하도록 설정 가능
- EFS Access Point를 반드시 사용해야 함
- 제한 사항
- EFS 연결 한도에 주의
- Lambda 함수 인스턴스 1개당 EFS 연결 1개 할당
- 연결 버스트 한도도 고려해야 함

Lambda 스토리지 옵션

AWS SAM
- Serverless Application Model
- 서버리스 애플리케이션을 개발하고 배포하기 위한 프레임워크
- 모든 구성은 YAML 코드로 정의
- 단순한 SAM YAML 파일로부터 복잡한 CloudFormation 템플릿을 자동 생성
- CloudFormation이 지원하는 모든 기능을 포함: Outputs, Mappings, Parameters, Resources 등
- SAM은 CodeDeploy를 통해 Lambda 함수 배포 가능
- SAM을 사용하면 Lambda, API Gateway, DynamoDB를 로컬 환경에서도 실행 및 테스트 가능
SAM 사용 절차
- Transform 헤더는 SAM 템플릿임을 나타냄
Transform: 'AWS::Serverless-2016-10-31'
- 코드 작성 단계
AWS::Serverless::FunctionAWS::Serverless::ApiAWS::Serverless::SimpleTable
- 패키징 및 배포
sam deploy명령어 사용- 필요 시
sam package를 먼저할 수 있음
- SAM Accelerate를 통해 로컬 변경사항을 AWS Lambda로 빠르게 동기화 가능
sam sync --watch
SAM 배포 심층 분석

SAM Accelerate(SAM Sync)
- SAM Accelerate는 AWS 리소스 배포 시 지연을 줄이기 위한 기능 집합
sam sync- SAM 템플릿에 정의된 프로젝트를 AWS와 동기화
- 인프라를 업데이트하지 않고 코드 변경만 AWS에 반영(서비스 API를 사용하여 CloudFormattion 단계를 우회)

SAM Accelerate(SAM Sync) 예시
sam sync(옵션 없음)- 코드와 인프라를 모두 동기화함
sam sync --code- 인프라를 업데이트하지 않고 코드 변경만 동기화함
- CloudFormation 단계를 우회(bypass)하여 수 초 내에 코드 업데이트 가능함
sam sync --code --resource AWS::Serverless::Function- 모든 Lambda 함수와 그 종속성(dependencies)만 동기화함
sam sync --code --resource-id HelloWorldLambdaFunction- 특정 리소스 ID 기준으로 지정된 리소스만 동기화함
sam sync --watch- 파일 변경을 모니터링하고, 변경이 감지되면 자동으로 동기화 수행함
- 변경 내용이 구성(configuration)을 포함하면 →
sam sync실행 - 변경 내용이 코드만 해당되면 →
sam sync --code실행
AWS Batch
- Docker 이미지 형태로 배치 작업을 실행
- 인스턴스(EC2 및 스팟 인스턴스)를 동적으로 프로비저닝함
- 작업량과 요구사항에 따라 최적의 인스턴스 수와 유형을 자동으로 결정함
- 클러스터를 직접 관리할 필요가 없으며, 완전한 서버리스(serverless) 방식으로 동작함
- 실제 과금은 내부적으로 사용되는 EC2 인스턴스 사용량에 대해서만 부과됨
- CloudWatch Events를 통해 배치 작업을 스케줄링할 수 있음
- AWS Step Functions를 사용하여 배치 작업을 오케스트레이션 할 수 있음
AWS Batch vs Glue
- Glue:
- Glue ETL은 Apache Spark 기반으로 동작하며, Scala 또는 Python 코드를 실행하여 ETL 작업에 집중함
- Glue ETL은 리소스 구성이나 관리에 대해 신경 쓸 필요가 없음
- 생성된 데이터 카탈로그를 통해 Athena 또는 Redshift Spectrum에서 데이터를 활용 가능함
- Batch:
- 작업 유형에 관계없이 어떤 컴퓨팅 작업에도 사용 가능함 (단, Docker 이미지를 제공해야 함)
- 리소스는 사용자의 AWS 계정 내에서 생성되며, Batch가 자동으로 관리함
- ETL 관련 작업이 아닌 경우에는 Batch가 더 적합한 선택임
'CERTIFICATES > AWS DEA-C01' 카테고리의 다른 글
| Analytics (0) | 2025.10.21 |
|---|---|
| Container (0) | 2025.10.14 |
| Migration and Transfer (0) | 2025.10.14 |
| Database (0) | 2025.10.14 |
| Storage (0) | 2025.09.30 |