성능 및 리소스 최적화

AWS에서 애플리케이션 배포하기

Dunieski Otano

Amazon Web Services Solutions Architect

느리고 비용이 많이 드는 상태

  • 트래픽이 급증하면 앱 속도가 느려집니다
  • 같은 달에 Lambda 요금이 급증합니다
  • 튜닝하면 더 빠르고 저렴해집니다

느리고 비용이 많이 드는 함수를 보여주는 속도-비용 게이지, 최적화를 가리킴

AWS에서 애플리케이션 배포하기

비용과 콜드 스타트를 고려한 동시성 설정


예약: 상한 설정과 보호

  • 함수의 용량 상한을 설정하고 보장합니다
  • 가장 저렴한 제어 방식이지만, 콜드 스타트에는 효과가 없습니다

프로비저닝: 워밍업 비용 지불

  • 인스턴스를 미리 워밍업시켜 콜드 스타트가 없습니다
  • 비용이 더 들므로 지연 시간이 중요한 경우에만 사용하세요
AWS에서 애플리케이션 배포하기

실행 시간-비용 곡선으로 메모리 최적화하기

메모리 증가에 따른 실행 시간-비용 곡선: 실행 시간 선은 감소하다가 평평해지고, 총 비용은 U자 형태를 이루며 가장 저렴한 최적 메모리 설정이 강조 표시됨

  • 메모리가 늘어나면 CPU도 늘어나 실행 시간이 짧아집니다
  • 비용 = 메모리 가격 x 실행 시간
  • 가장 저렴한 지점은 보통 중간 입니다
  • 여러 크기로 프로파일링한 후 선택하세요
AWS에서 애플리케이션 배포하기

애플리케이션 수준 캐싱

  • 실행 컨텍스트 내에서 작업을 재사용하세요
  • 워밍업된 Lambda는 호출 간에 전역 변수를 유지합니다
  • 설정, 클라이언트, 자주 조회하는 데이터를 캐시하세요
  • 인스턴스 간 공유 캐시로 ElastiCache 를 사용하세요

Lambda 실행 컨텍스트 캐싱: 워밍업된 호출 간 재사용되는 전역 클라이언트 객체, 여러 함수 인스턴스 간 자주 사용하는 데이터를 공유하는 ElastiCache 클러스터

AWS에서 애플리케이션 배포하기

에지에서의 CloudFront 캐싱

  • CloudFront: 에지 로케이션에서 응답을 캐시합니다
  • 백엔드를 거치지 않고 반복 요청을 처리합니다
  • 캐시 키에는 헤더, 쿼리 문자열, 쿠키 를 포함할 수 있습니다
  • 정적이고 캐시 가능한 콘텐츠는 비용 없이 확장됩니다

CloudFront 에지 캐싱: 백엔드를 거치지 않고 인근 사용자에게 캐시된 응답을 제공하는 에지 로케이션이 표시된 지구본과 헤더·쿼리 문자열을 보여주는 캐시 키 설정

AWS에서 애플리케이션 배포하기

적절한 캐시 계층 선택하기

세 단계로 쌓인 캐시 계층: 정적이고 널리 공유되는 콘텐츠를 위한 에지의 CloudFront, 자주 사용하는 객체를 위한 인스턴스별 인메모리 캐시, 공유되는 고빈도 읽기를 위한 ElastiCache 또는 DAX

  • 에지(CloudFront): 정적이고 널리 공유되는 콘텐츠
  • 애플리케이션(인메모리): 인스턴스별 자주 사용하는 객체
  • 데이터(ElastiCache/DAX): 공유되는 빈번한 읽기
  • 계층을 쌓으면 각각 다른 비용을 절감합니다
AWS에서 애플리케이션 배포하기

최적화 종합하기

  • 실행 시간-비용 곡선 으로 메모리를 최적화하세요
  • 지연 시간이 중요한 경우에만 프로비저닝된 동시성을 추가하세요
  • 에지, 앱, 데이터 계층에서 캐싱하세요
  • 측정하고, 하나씩 변경하고, 다시 측정하세요

최적화 요약: 메모리 크기 조정을 위한 실행 시간-비용 곡선, 프로비저닝된 동시성 결정, 세 가지 캐시 계층 다이어그램, 측정-변경-재측정 반복 주기

AWS에서 애플리케이션 배포하기

연습해 봅시다!

AWS에서 애플리케이션 배포하기

Preparing Video For Download...