API 테스트 및 배포

AWS에서 애플리케이션 개발하기

Ricardo Sueiras

Principal Technologist

개발자를 위한 코드형 인프라

 

iac

  • 클라우드 네이티브 앱은 코드형 인프라(Infrastructure-as-Code, IaC)로 배포합니다.
  • 구성 파일에 클라우드 리소스를 정의합니다.
  • AWS 관리 콘솔에서 수동 설정(clickops)을 피할 수 있습니다.
AWS에서 애플리케이션 개발하기

AWS CloudFormation

 

cloudformation

  • AWS의 기본 IaC 서비스입니다.
  • YAML 또는 JSON 템플릿으로 AWS 리소스를 정의합니다.
AWS에서 애플리케이션 개발하기

AWS Cloud Development Kit (CDK)

 

cdk

  • CDK는 코드를 사용해 IaC를 정의합니다.
  • YAML이나 JSON 대신 Python, TypeScript, Java로 작성합니다.
  • 앱은 배포 시점에 CloudFormation 템플릿으로 변환됩니다.
AWS에서 애플리케이션 개발하기

AWS Serverless Application Model (SAM)

  • CloudFormation을 확장합니다.
  • 서버리스 리소스와 API를 위한 간소화된 문법을 제공합니다.
  • 변환 계층 역할을 합니다.
  • SAM 문법을 완전한 CloudFormation 템플릿으로 변환합니다.

 

sam

AWS에서 애플리케이션 개발하기

SAM의 주요 기능

  • 최소 권한 IAM 역할을 자동 생성하며, 세부 조정도 가능합니다.
  • 배포 파이프라인을 구성 파일로 정의합니다.
  • sam build와 sam deploy로 패키징하고 배포합니다.
  • sam validate로 템플릿 오류를 미리 확인합니다.
  • sam local start-lambda로 Lambda를 로컬에서 에뮬레이션합니다.
    • 지속적인 로컬 엔드포인트를 제공합니다

 

sam features

AWS에서 애플리케이션 개발하기

SAM으로 테스트하기

  • 배포 전 서버리스 앱을 로컬에서 빌드, 호출, 테스트합니다.
  • Lambda 함수와 API Gateway 통합을 테스트합니다.
  • sam local invoke로 함수를 로컬에서 호출합니다.
    • 일회성 호출입니다
  • sam local start-api로 API Gateway를 에뮬레이션합니다.

 

testing with sam

AWS에서 애플리케이션 개발하기

단위 테스트

 

unit tests

  • SAM과 단위 테스트로 Lambda 동작을 검증합니다.
  • 로컬 테스트는 개발 주기를 단축합니다.
  • pytest, JUnit, Jest 같은 프레임워크와 함께 사용합니다.
AWS에서 애플리케이션 개발하기

테스트 워크플로

 

test workflow

  • sam local generate-event로 테스트 이벤트를 생성합니다.
  • JSON 이벤트 파일을 출력합니다.
  • sam local invoke FunctionName -e event.json으로 로컬에서 호출합니다.
  • 배포 전 프레임워크의 검증(assertion)으로 응답을 확인합니다.
AWS에서 애플리케이션 개발하기

AWS 서비스 모킹

 

mocking tests

  • moto 같은 모킹 라이브러리와 로컬 테스트를 결합합니다.
  • 실제 호출 없이 시뮬레이션된 AWS 서비스와 상호작용합니다.
  • 테스트 속도를 높입니다.
  • 테스트 비용을 줄입니다.
  • 스로틀링이나 장애 같은 오류 시나리오를 검증합니다.
AWS에서 애플리케이션 개발하기

지속적 통합 및 지속적 배포 (CI/CD)

  • SAM 앱은 보통 CI/CD 파이프라인을 통해 배포됩니다.
  • 빌드, 테스트, 패키징, 배포를 자동화합니다.
  • AWS CodeCommit은 코드와 SAM 템플릿을 저장합니다.
  • AWS CodeBuild는 테스트와 sam build를 실행합니다.
  • AWS CodePipeline은 워크플로를 조율합니다.

 

cicd

AWS에서 애플리케이션 개발하기

CI/CD 워크플로

  • 소스 코드와 SAM 템플릿을 저장소에 커밋합니다.
  • 자동화된 테스트와 검증을 실행합니다.
  • sam build로 앱을 패키징합니다.
  • sam deploy로 리소스를 배포합니다.
  • 배포 후 CloudWatch로 모니터링합니다.

 

workflow

AWS에서 애플리케이션 개발하기

배포 문제 해결

  troubleshooting

  • 문제 해결은 핵심적인 운영 역량입니다.
  • 흔한 배포 실패 원인:
  • IAM 권한 문제.
  • 잘못된 SAM 또는 CloudFormation 템플릿.
  • Lambda 패키징 실패 또는 종속성 누락.
  • 잘못된 API Gateway 구성.
AWS에서 애플리케이션 개발하기

배포 문제 해결

  troubleshooting

  • SAM 배포는 내부적으로 CloudFormation에서 실행됩니다.
  • 스택 이벤트와 자동 롤백 기능을 제공합니다.
  • 배포 실패를 파악하는 데 도움이 됩니다.
  • 이전 환경 상태로 복원하도록 롤백합니다.
AWS에서 애플리케이션 개발하기

배포 문제 해결

  troubleshooting

  • 다음 항목으로 문제를 해결합니다:
  • CloudWatch 로그.
  • API Gateway 실행 로그.
  • Lambda 로그.
  • CloudWatch 지표.
AWS에서 애플리케이션 개발하기

연습해 봅시다!

AWS에서 애플리케이션 개발하기

Preparing Video For Download...