AWS CLF — Computing


AWS Lambda

  • 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 Serverless 컴퓨팅 서비스
  • AWS에서 서버 운영에 필요한 모든 인프라를 관리하며 사용자는 코드를 입력하여 실행
  • 요청할 때에만 시스템을 사용하는 온디맨드 방식의 실행으로 사용한 만큼만 비용을 지불
  • 이벤트 횟수 및 리소스 사용량을 기반으로 자동 스케일링
  • 거의 대부분의 AWS 서비스들과 통합되어 사용이 가능
  • AWS CloudWatch와 자동으로 연결되어 있어 손쉬운 모니터링 및 로깅 가능
  • 요청 1백만 건당 0.20 USD로 저렴한 가격 정책
  • Node.js, Pyhton, Java, C#, Golang 등 다양한 언어 지원
  • 환경변수, 버전, Container Image, Endpoint 등 다양한 기능 지원

IDE vs. Google Colab vs. AWS Lambda 비교

구분 IDE (VS Code 등) Google Colab AWS Lambda
주요 목적 코드 작성 및 개발 개발, 실험, 분석, 교육 프로덕션 환경에서의 자동화, 백엔드 로직 실행
작업 방식 대화형 (Interactive) 대화형 (Interactive) 비-대화형 (Non-interactive), 이벤트 기반
실행 주체 사람(개발자) 사람(직접 ‘실행’ 버튼 클릭) 시스템 이벤트(파일 업로드, API 호출 등)
사용자 인터페이스 있음 (코드 에디터) 있음 (웹 기반 노트북) 없음(백그라운드에서 실행)

사용 사례

  • S3 업로드 이벤트 감지하여 특정 Lambda 코드 실행
  • Kinesis와 통합하여 실시간 스트리밍 처리
  • Serverless한 동적 웹사이트 구축
  • API 요청을 인증하고 처리하는 백엔드 구축
  • 각종 Batch 작업
  • 특정 AWS 리소스 Trigger 작업

AWS Batch

  • AWS에서 배치 컴퓨팅 작업을 효율적으로 손쉽게 실행할 수 있게 해주는 서비스
  • 배치 컴퓨팅은 수동 개입없이 주기적으로 반복적인 컴퓨팅 작업을 수행하는 것으로 시작과 끝이 있음
  • 데이터 이행,수식 계산,ETL(Extract,Transform,Load)프로세스 등과 같이 대규모의 데이터 처리 또는 계산 작업에 사용
  • AWS 완전관리형 서비스이기 때문에 인프라를 관리할 필요가 없이 코드 작성과 배포, 스케줄링에만 집중
  • 배치 작업은 Docker 컨테이너 이미지로 정의되어 Elastic Container Services(ECS)에서 실행됨

AWS Batch vs. Lambda 상세 비교

구분 AWS Batch AWS Lambda
핵심 개념 대규모 일괄 처리를 위한 ‘관리형 컴퓨팅 클러스터’ 이벤트 기반의 ‘서버리스 함수 실행 환경’
작업 단위 도커 컨테이너로 정의된 작업(Job) 코드로 작성된 함수(Function)
실행 환경 사용자가 정의한 EC2 또는 Fargate 클러스터 AWS가 관리하는 서버리스 환경 (사용자가 볼 수 없음)
확장성 작업 대기열의 작업 수에 따라 EC2 인스턴스 수를 자동 조절 (클러스터 단위 확장) 요청(이벤트)이 발생할 때마다 함수를 개별적으로 자동 실행 및 확장
실행 시간 수 시간, 수일 등 제한 없는 긴 작업에 적합 최대 15분 이내의 짧은 작업만 가능
자원 제어 높음 (GPU, 고용량 메모리 등 특정 EC2 인스턴스 유형을 직접 선택 가능) 낮음 (메모리 용량만 선택 가능, CPU는 메모리에 비례하여 자동 할당)
비용 모델 실행된 EC2 인스턴스의 사용 시간에 따라 과금 (스팟 인스턴스 활용 시 비용 대폭 절감) 함수 호출 횟수 + 실행 시간(밀리초 단위)에 따라 과금 (실행 안 되면 0원)
주요 사용 사례 -대규모 데이터 처리/변환 (ETL) -유전체 분석, 딥러닝 등 과학 계산 -영상 렌더링 및 인코딩 -실시간 파일 처리 (S3 이미지 업로드 시 썸네일 생성) -API 백엔드 (API Gateway와 연동하여 웹 요청 처리) -간단한 자동화 작업 (주기적인 데이터 정리 등)

Amazon Lightsail

  • 클라우드 경험이 많지 않은 사용자가 UI에서 손쉽게 웹 사이트나 애플리케이션을 배포할 수 있도록 도와주는 서비스
  • 서버,컨테이너,데이터베이스,스토리지,네트워크 등 연관된 서비스들을 쉽게 배포
  • Lightsail내 리소스 사용량,성능,상태 등에 대한 알림 및 모니터링을 설정 가능
  • 고가용성이 있지만 자동 확장이 없고 AWS 통합이 제한적
  • 사용량이 많지 않은 간단한 웹 사이트나 웹 애플리케이션 개발 및 배포에 적합

AWS EC2 vs. Lightsail 상세 비교

구분 EC2 (Elastic Compute Cloud) Lightsail (라이트세일)
핵심 개념/비유 부품부터 조립하는 ‘커스텀 PC’ 미리 완성된 ‘브랜드 PC’
관리 모델 IaaS (서비스형 인프라). 사용자가 OS부터 네트워크까지 대부분을 직접 제어하고 책임짐 사용하기 쉬운 IaaS. 복잡한 부분을 AWS가 관리해주지만, OS/앱 관리는 사용자 책임
주요 대상 전문가, 기업, 복잡한 아키텍처가 필요한 모든 사용자 초보자, 학생, 소규모 비즈니스, 간단한 웹사이트 운영자
선택의 폭 매우 넓음. 수백 가지의 인스턴스 유형, 스토리지(EBS) 종류, 네트워크 옵션을 세밀하게 선택 제한적. 미리 구성된 몇 가지 플랜(예: 1GB RAM, 2GB RAM) 중에서 선택.
가격 정책 종량제. 사용한 만큼(초 단위) 개별 서비스(인스턴스, EBS, 데이터 전송 등)에 대해 따로 과금복잡하지만 최적화 가능 월 고정 요금. 인스턴스, SSD, 데이터 전송량을 묶어서 예측 가능한 단일 요금으로 제공
네트워킹 VPC, 서브넷, 보안 그룹, 라우팅 테이블 등 전문적인 지식이 필요함 단순 방화벽 규칙만 설정하면 됨. VPC의 복잡성을 숨김
확장성 Auto Scaling을 통한 자동 수평 확장이 가능하며 매우 유연함 수동 스케일링만 가능 (더 높은 플랜으로 업그레이드 - 스케일 업)
통합성 거의 모든 AWS 서비스와 완벽하게 통합됨 일부 주요 서비스(S3, RDS 등)와 통합 가능.(VPC 피어링 필요)
적합한 워크로드 모든 종류의 워크로드. 대규모 웹 서비스, 빅데이터, 머신러닝, 엔터프라이즈 애플리케이션 등 간단한 워크로드. 블로그(WordPress), 소규모 웹사이트, 개발/테스트 환경

Conatainer 란?

  • 애플리케이션을 실행하기 위한 격리된 환경을 제공하는 가상화 기술
  • 일반적으로 Docker 엔진을 사용하여 구축되며, 호스트 운영 체제의 리소스를 공유하면서 실행
  • 애플리케이션 실행에 필요한 패키지들을 묶어서 Docker 엔진을 통해 컨테이너로 생성
  • 컨테이너라는 격리된 환경에서 실행되므로 환경에 관계없이 동일한 동작을 보장
  • 이미지를 사용하여 애플리케이션을 패키징하고 배포하기 때문에 스케일링 및 관리가 용이
  • 작은 서비스들의 조합으로 통합된 서비스를 운영하는 마이크로서비스 환경에서 주로 사용
  • 관련 플랫폼으로는 대표적으로 Docker와 Kubernetes가 있음

Elastic Container Registry(ECR)

  • Docker 컨테이너 이미지를 저장,관리 및 배포하기 위한 완전 관리형 Docker 컨테이너 레지스트리 서비스
  • AWS 클라우드 네이티브한 Docker Hub
  • 사용자 고유의 개인 Docker 컨테이너 레지스트리를 제공하여 이미지를 손쉽게 저장,관리 및 배포
  • IAM과 통합되어 IAM 정책을 사용하여 이미지에 대한 액세스 권한을 관리
  • public: 외부에서 저장된 이미지에 접근 가능
  • private: IAM 권한이 있는 유저만 저장된 이미지에 접근 가능