AWS Cloud School 13기 70일차

Forever 김·2026년 4월 9일

AWS Cloud School

목록 보기
65/97

TIL

배운 내용

Developing on AWS - 모듈 8~10

오늘도 Developing on AWS 공인 교육을 이어서 들었다. 어제보다 내용이 훨씬 많아졌는데, DynamoDB 작업부터 Lambda, API Gateway까지 다뤘다. 저작권 문제가 있어서 교재 캡처나 복붙은 하지 않고, 내가 이해한 내용 위주로 정리해보겠다.


모듈 8 : 데이터베이스 작업 처리

DynamoDB 기본 작업

PutItem
새 항목을 생성하거나 기존 항목을 교체한다. 동일한 키를 가진 항목이 이미 있으면 그냥 덮어쓴다.

배치 작업

  • BatchGetItem : 하나 이상의 테이블에서 최대 100개 항목, 최대 16MB까지 읽기
  • BatchWriteItem : 하나 이상의 테이블에서 최대 25개 항목, 최대 16MB까지 생성 또는 삭제

배치 작업은 응답 대기 시간을 줄이기 위해 병렬로 처리한다.

GetItem
기본 키로 항목을 읽어온다. 일치하는 항목이 없으면 아무것도 반환하지 않는다. 기본값은 최종 읽기 일관성이고, 강력한 읽기 일관성이 필요하면 ConsistentReadtrue로 설정하면 된다.

UpdateItem
기존 속성 값을 업데이트하거나, 새 속성을 추가하거나, 기존 속성을 삭제할 수 있다. 단, 기본 키 속성은 업데이트할 수 없다. 지정한 키가 없으면 새 항목을 생성한다. 프로비저닝된 처리량은 업데이트 전후 항목 크기 중 더 큰 값을 기준으로 소비된다.

DeleteItem
기본 키로 단일 항목을 삭제한다. 조건을 지정하지 않으면 멱등적인 작업이라 여러 번 실행해도 오류가 발생하지 않는다. 조건부 삭제를 사용하면 특정 조건이 충족될 때만 삭제가 이루어진다.

기본값으로 DynamoDB 쓰기 작업(PutItem, UpdateItem, DeleteItem)은 비조건부다. 조건부 쓰기는 항목 속성이 하나 이상의 예상 조건을 충족할 때만 성공한다.


DynamoDB 캐싱

DAX (DynamoDB Accelerator)
최종적으로 일관된 데이터에 빠른 응답 시간을 제공하는 인 메모리 캐시다. 세 가지 주요 시나리오에서 활용된다.

  1. 응답 시간을 밀리초 → 마이크로초 수준으로 줄여준다.
  2. DynamoDB API와 호환되는 관리형 서비스라 기존 애플리케이션에 최소한의 변경만으로 적용 가능하다.
  3. 읽기 중심 워크로드나 사용량이 급증하는 경우, 읽기 용량 단위를 오버 프로비저닝할 필요성을 줄여 비용을 절감한다.

ElastiCache
클라우드에서 Memcached 또는 Redis 프로토콜을 준수하는 서버 노드를 배포 및 실행하는 웹 서비스다.


모듈 9 : 애플리케이션 로직 처리

컴퓨팅 서비스 유형

유형설명
인스턴스전통적인 방식. 컴퓨팅 리소스를 완벽하게 제어 가능
컨테이너완전한 가상 관리 시스템보다 작고 이동성이 있으며 관리가 쉬움
서버리스서버 프로비저닝 없이 백엔드 코드 실행 가능

AWS Lambda

Lambda는 이벤트가 트리거하면 실행된다. 연결 가능한 이벤트 소스는 다음과 같다.

  • S3 버킷, DynamoDB 테이블의 데이터 변경 같은 이벤트
  • Amazon API Gateway를 통한 HTTP 요청
  • AWS SDK를 통한 API 호출

Lambda 함수 구조
핸들러 함수는 이벤트가 발생할 때마다 실행된다. 지원 런타임은 Node.js, Java, Python, .NET Core, Go, Ruby이며 커스텀 런타임도 만들 수 있다.

런타임이 하는 일:

  • 함수 설정 코드 실행
  • 환경 변수에서 핸들러 이름 읽기
  • Lambda 런타임 API에서 호출 이벤트 읽기
  • 함수 핸들러로 이벤트 데이터 전달
  • 핸들러 응답을 다시 Lambda로 게시

Lambda 호출 모델

  • 동기식 호출 : 함수 실행 후 응답을 기다린다. 재시도 기능이 내장되지 않았다. API Gateway, Cognito 등이 이 방식을 사용한다.
  • 비동기식 호출 : 이벤트를 대기열로 전송하고 별도 프로세스가 처리한다. 성공 응답 또는 오류를 반환한다.
  • 이벤트 소스 매핑 : 스트림 및 대기열 기반 서비스에서 항목을 읽고 레코드 배치와 함께 함수를 간접 호출한다.

콜드 스타트 최소화

  • Lambda 함수에 트리거를 설정하거나 동시성 프로비저닝 기능을 사용한다.
  • Lambda SnapStart : Java용으로, 코드 변경 없이 추가 비용 없이 시작 성능을 최대 10배까지 향상시킬 수 있다. Firecracker microVM 스냅샷을 찍어 캐시해두는 방식이다.

모듈 10 : API 관리

Amazon API Gateway

REST, HTTP, WebSocket API를 생성, 게시, 유지 관리, 모니터링, 보호하는 AWS 서비스다.

API 유형특징
HTTP API대기 시간이 짧고 비용이 저렴. 간단한 용도에 적합
REST API백엔드 HTTP 엔드포인트, Lambda, AWS 서비스와 통합. 기능이 많고 무겁다
WebSocket API클라이언트 메시지 내용 기반으로 백엔드 호출. 채팅 프로그램 등에 주로 사용

제한(Throttling)
API 과부하를 방지하기 위한 두 가지 설정:

  • 서버 측 제한 : 모든 클라이언트에 적용
  • 클라이언트당 제한 : API 키를 클라이언트 식별자로 사용하는 클라이언트에 적용

통합 유형

유형설명
AWS_PROXY프록시 방식. 통합 요청/응답 설정 불필요. 패스스루
HTTP_PROXY프록시 방식. HTTP 백엔드로 패스스루
AWS비프록시. 통합 요청/응답 모두 직접 구성
HTTP비프록시. 데이터 매핑은 사용자 책임
Mock백엔드 없이 응답 반환. API 테스트에 유용

REST API 호출

배포된 REST API의 호출 URL 형식은 다음과 같다.

API Gateway 콘솔의 TestInvoke 기능을 사용하면 배포 전에도 API를 테스트할 수 있다.


오늘 모듈 8~10까지 꽤 많은 내용을 배웠다. DynamoDB 작업 방식, Lambda 호출 모델, API Gateway 통합 유형이 핵심이었던 것 같다. 특히 Lambda의 동기/비동기 호출 차이와 API Gateway의 프록시 vs 비프록시 통합 차이를 잘 이해해두면 실무에서 많이 쓸 것 같다.

이번 velog는 AWS kiro를 통해 작성하였다. 배운내용을 Notion에 정리하고 정리 부분을 kiro를 통해 검토받고 작성하였다.

profile
나를 한줄로

0개의 댓글