Amazon DynamoDB (2)

kauze98·2025년 5월 21일

AWS 실습

목록 보기
13/16

1. 개요

Amazon DynamoDB와 AWS Lambda를 활용하여 미션 서류 생성기를 구축하는 2 번째 단게입니다.

이번 과정에서는 다음과 같이 하려고 합니다.

  • Lambda 함수를 만들어 두 가지 방식으로 DynamoDB 테이블 데이터를 검색

  • Lambda 함수 테스트(템플릿 및 사용자 지정 테스트)

  • Lambda 함수의 동작 방식 이해 및 실습

이번 실습을 위해 DynamoDB의 기본 개념을 미리 숙지하여 진행하였습니다.

저번 실습과정에서도 정리하였지만, 다시 한 번 DynamoDB와 Lambda에 대해 정리하고자 합니다.

Amazon DynamoDB

  • 완전관리형 NoSQL 데이터베이스 서비스로, 일관된 10ms 미만의 지연 시간과 뛰어난 확장성을 제공

  • 문서 모델과 키-값 저장소 모델을 모두 지원

  • 모바일, 웹, 게임, IoT 등 다양한 애플리케이션에 적합

  • 데이터는 테이블(Table)에 저장되며, 각 테이블은 여러 개의 항목(Item)으로 구성되고, 각 항목은 속성(Attribute)들의 집합
    (NoSQL임에도 테이블이라는 용어를 쓰는 이유는, 데이터를 논리적으로 그룹화하고 관리하기 위해서입니다. 다만, DynamoDB의 테이블은 RDBMS처럼 엄격한 스키마가 없고, 각 아이템마다 속성 구성이 달라도 상관없다는 점이 다릅니다. 또, SQL이 아닌 자체 API와 JSON 기반 쿼리로 데이터를 다룹니다.)

  • 기본 키(Primary Key)는 각 항목을 고유하게 식별하며, 파티션 키만 사용하거나 파티션 키+정렬 키(복합키)로 구성 가능

  • 보조 인덱스(Secondary Index)를 통해 기본 키가 아닌 속성으로도 효율적인 검색 가능

 

AWS Lambda

  • 서버리스 컴퓨팅 서비스로, 서버 관리 없이 코드를 실행할 수 있음

  • 이벤트(예: S3 업로드, API 호출 등)에 반응하여 함수가 실행

  • Node.js, Java, Python 등 다양한 언어 지원

  • Lambda 함수에 IAM 역할을 부여하여 DynamoDB 등 AWS 리소스에 접근 권한을 부여

  • 사용량에 따라 비용이 발생하며, 요청이 있을 때만 실행되어 비용 효율적

  • 자동 확장 지원: 요청 수에 따라 초당 수천 건까지 자동 확장

 


2. CloudFormation 상태 확인

CloudFormation 상태 확인 요약

 

  1. CloudFormation 콘솔 접속 및 스택 확인
  • AWS Management Console에서 CloudFormation에 접속하였습니다.

  • 현재 작업 중인 리전인지 반드시 확인합니다. 리전이 다르면 스택이 보이지 않을 수 있습니다.

 

  1. 스택 생성 상태 모니터링
  • 스택 목록에서 해당 스택의 상태를 확인합니다.

  • 스택이 생성 중일 때는 CREATE_IN_PROGRESS 상태로 표시됩니다. 이 상태는 리소스가 프로비저닝(생성)되고 있음을 의미합니다.

  • 생성이 완료되면 상태가 CREATE_COMPLETE로 변경됩니다. 이때 모든 리소스가 준비된 것입니다.

  • 상태가 바뀌지 않을 경우 콘솔의 새로고침(Refresh) 버튼을 눌러 최신 상태를 재확인 하였습니다.

 

  1. 참고 및 추가 정보
  • 스택 생성이 실패하면 CREATE_FAILED로 표시되며, 오류 원인은 스택 이벤트에서 확인할 수 있습니다.

  • 스택 생성 중에는 이벤트 탭에서 각 리소스의 생성 진행 상황과 원인을 실시간으로 볼 수 있습니다.

  • CloudFormation 템플릿이 실습에 필요한 AWS 리소스(예: DynamoDB, Lambda 등)를 자동으로 준비합니다. 준비 완료까지 몇 분 정도 소요될 수 있습니다.

 

  1. 유의사항

리전이 올바른지 항상 확인해야 하며, 이번 과정에 필요한 리소스가 모두 준비될 때까지 기다려야 합니다. 진행 상황은 이벤트 탭에서 실시간으로 확인 가능하였습니다.

CloudFormation을 사용하는 이유는?

AWS 인프라(서버, 데이터베이스, 네트워크 등)를 코드(템플릿)로 정의해서 자동으로 일괄 생성·관리하기 위함입니다

  • 인프라 관리 자동화 및 간소화
    CloudFormation 템플릿에 필요한 모든 리소스와 설정을 정의하면, AWS가 이를 자동으로 생성하고 구성합니다. 사용자는 각 리소스를 일일이 수동으로 만들고 연결할 필요가 없습니다.

  • 반복 가능하고 일관된 환경 구축
    동일한 템플릿을 여러 번 재사용해 언제든지 똑같은 인프라 환경을 손쉽게 복제할 수 있습니다. 개발, 테스트, 운영 등 다양한 환경을 일관되게 유지할 수 있습니다.

  • 변경 및 삭제도 자동화
    템플릿을 수정해 스택을 업데이트하면, CloudFormation이 변경 내역만 반영해줍니다. 스택을 삭제하면 관련된 모든 리소스가 한 번에 정리됩니다.

  • 종속성 및 순서 자동 관리
    리소스 간의 의존성과 생성 순서를 AWS가 자동으로 처리하므로, 복잡한 인프라도 실수 없이 구축할 수 있습니다.

  • 버전 관리 및 추적 용이
    템플릿 파일은 코드처럼 버전 관리가 가능해, 언제든지 변경 이력을 추적하고 롤백할 수 있습니다.

즉, CloudFormation을 활용하면 인프라를 코드로 관리(Infrastructure as Code, IaC)하여, 신속하고 안정적으로 AWS 리소스를 구축·운영할 수 있습니다.

 


3. Lambda 함수 생성

두 개의 Lambda 함수를 생성합니다. 첫 번째 함수는 SuperMission DynamoDB 테이블에 저장된 슈퍼 히어로 목록을 검색합니다. 두 번째 함수는 동일한 DynamoDB 테이블에서 미션 세부 정보를 검색합니다.

Lambda 함수 생성 및 테스트 절차 요약

  1. 첫 번째 Lambda 함수: 슈퍼 히어로 목록 검색 (getheroeslist)
  • 목적:
    SuperMission DynamoDB 테이블에 저장된 모든 슈퍼 히어로 목록을 조회

  1. 두 번째 Lambda 함수: 미션 세부 정보 검색 (getmissiondetails)
  • 목적:
    SuperMission 테이블에서 특정 슈퍼 히어로의 미션 세부 정보를 조회

 

Lambda 함수 동작 방식 요약

  • Scan:
    테이블 전체를 순회하며 모든 항목을 반환. 필터 없이 전체 데이터를 가져올 때 사용.

  • Query:
    파티션 키(여기서는 SuperHero)로 특정 항목만 조회. ProjectionExpression을 통해 필요한 속성만 반환.

DynamoDB와 AWS Lambda를 연동하여 실제로 데이터를 검색하는 서버리스 애플리케이션의 핵심 과정을 경험했습니다.
DynamoDB 테이블에서 데이터를 조회하는 Lambda 함수를 직접 생성하고, 다양한 테스트 방법(템플릿 및 사용자 지정 이벤트)을 활용해 함수의 동작을 검증함으로써, 실무에서 자주 활용되는 서버리스 데이터 처리 패턴을 익혔습니다.

마지막 3부에서 Amazon API Gateway를 사용하여 API를 구성하고, Lambda 함수를 통해 DynamoDB 테이블에서 정보를 검색하도록 퍼블릭 웹 사이트를 설정하여 이 3부작 실습을 마무리하려고합니다.


profile

0개의 댓글