BLOG
클라우드에서 애플리케이션을 구축하고 운영할 때 여러분은 얼마나 자주 스스로에게 ‘내가 지금 잘 하고 있는가?’ 라는 질문을 하고 계신가요?
이는 실제로 굉장히 좋은 질문이며 AWS는 사용자들이 이에 대한 답변이 긍정적으로 나올 수 있도록 약 5년 전 ‘AWS Well-Architected Framework’를 공개했습니다. 이 프레임워크는 사용자의 워크로드를 AWS의 모범사례와 비교하고 개선 방법에 대한 지침을 안내하는 공식적인 접근법입니다. Well-Architected Framework는 고객과 파트너가 클라우드 아키텍처를 설계하고 평가할 수 있는 일관된 방법을 제공하며 다음과 같은 5가지 요소를 기반으로 합니다:
- 운영 효율성
- 보안
- 신뢰
- 효율적 성능
- 비용 최적화
워크로드에 특화된 보다 많은 조언을 제공하기 위해 AWS는 2017년 “렌즈”라는 개념으로 프레임워크를 확장해 일반적인 관점을 넘어 구체적인 기술 영역으로 들어갔습니다. 현재 사용할 수 있는 렌즈는 세 가지 입니다.
- 서버리스
- 고성능 컴퓨터(HPC)
- 사물인터넷(IoT)
무언가를 개선하기 위해 가장 먼저 해야 할 일은 무엇을 측정할 것인지, 어떻게 측정할지를 결정하는 것입니다. 워크로드를 보다 체계적으로 검토할 수 있게 하기 위해 AWS는 2018년 AWS Well-Architected Tool를 출시했습니다. 이는 AWS Management Console에서 무료로 사용할 수 있으며, 사용자는 이를 통해 워크로드를 정의하며 위의 5가지 요소에 대한 답을 얻을 수 있습니다.
Well-Architected Tool은 다음과 같이 다양한 방법으로 사용될 수 있습니다.
- 특정 애플리케이션에 대해 작업하는 경우, 해당 도구를 사용하여 리스크를 평가하고 개선할 영역을 찾을 수 있습니다.
- 여러 애플리케이션을 담당하는 경우, 해당 도구를 사용하여 모든 애플리케이션의 현재 상태를 확인할 수 있습니다.
여기에 더해 AWS는 최근 이 Well-Architected Tool에 렌즈를 적용할 수 있는 기능을 추가했습니다. 그 중 첫 번째로 공식 출시된 기능이 Serverless Lens(서버리스 렌즈)입니다!
AWS Well-Architected Tool에서 Serverless Lens 사용하기
우선 Well-Architected Tool 콘솔에서 사용자의 워크로드를 정의하는 것으로 시작합니다. 현재 Amplify Framework를 사용하여 모바일 앱의 백엔드를 구축하고 있다고 가정해 보겠습니다. 이는 간단한 게임이지만 저는 DynamoDB Global Tables 를 사용하여 제 사용자의 데이터를 저장해 보겠습니다. 애플리케이션은 두 개의 AWS 리전에서 실행됩니다. AWS 계정 ID를 추가하는 것은 옵션이지만 여러 개의 계정 설정 시 애플리케이션 배포를 이해할 때 도움이 됩니다.
이제 적용할 렌즈를 선택할 수 있습니다. 일단 기본으로 AWS Well-Architected Framework가 설정되어 있습니다. 저는 Serverless 렌즈를 선택해보겠습니다. 그러면 프레임워크 모범 사례에 따라 서버리스 앱을 설계, 배포 및 설계하는 방법을 이해하는 데 도움이 되는 일련의 질문들이 추가됩니다.
워크로드가 정의되었다면 검토를 시작합니다. 저는 Serverless 렌즈로 바로 넘어가 보겠습니다. 새로운 질문은 5개의 요소로 나누어져 있습니다. 아래는 이 중 성능에 관련된 질문들의 캡처 화면입니다.
각각의 질문에 대해, 콘솔 우측 부분에는 가능한 답변과 사용된 용어를 이해하는 데 도움이 되는 정보가 있습니다. 저는 도입에 속하는 활동(activities)과 기술(technology)을 선택해 보겠습니다.
- 나는 데이터 스트림(Amazon Kinesis 또는 DynamoDB Streams에서 제공하는 것과 같은)과 비동기 함수 호출을 사용하여 동시성을 향상시키고 있습니다.
- 나는 데이터베이스 액세스를 줄이기 위해 사용자 데이터를 메모리에 캐싱하고 있습니다. 또한 Lambda 함수인 /tmp 또는 Amazon ElastiCache와 같은 외부 데이터 저장소도 사용할 수 있습니다.
- Amazon API Gateway의 Kinesis Data Firehose를 호출해야 하는 경우처럼 서비스 통합이 기본적으로 작업을 수행할 수 있을 때 함수를 제거하고 있습니다. (이는 또한 비용 최적화를 위해서이기도 합니다.)
이 중 한가지 질문에만 대답해도 저장하고 종료하게 되면 이미 도구로부터 피드백을 받습니다. 워크로드 개요(overview)에서 Serverless Lens를 선택합니다. 그러면 자신이 완화해야 할 위험성이 높은 항목들을 확인할 수 있습니다.
그 항목 바로 아래에 다음 이미지처럼 위험성을 높이는 문제에 근거한 구체적인 권고사항과 이를 해결할 수 있는 방법이 보여집니다. 서버리스 애플리케이션의 경우 플랫폼에 의해 자동으로 확장되는 적절한 용량 단위를 사용하여 성능과 비용의 균형을 맞추는 것이 중요하다고 나옵니다.
첫 번째 권장사항을 클릭해 보겠습니다. 그러면 개선 계획에 대한 구체적인 실행 항목을 받게 됩니다. 이 항목에는 Lambda 함수, DynamoDB 테이블, API Gateway 엔드포인트와 같이 서버리스 앱에서 사용할 수 있는 다양한 아키텍쳐 구성 요소가 있습니다. 저의 경우 Lambda Power Tuning 오픈 소스 도구를 사용하여 Lambda 함수의 메모리/전력 구성을 미세 조정하라는 제안을 따라보겠습니다.
일단 이 방안을 실행하기 전에 여기 나와있는 모든 질문에 답해보겠습니다. 이제 AWS 콘솔에서 전체 보고서를 보거나 PDF 형식으로 다운받아 다른 이해 당사자에게 공유할 수 있습니다. 이런 식으로 관련 담당자들과 함께 필요한 방안을 준비하며, 결과적으로 성공적인 서버리스 앱을 보유할 수 있게 됩니다.
개선 계획이 발전되고 난 뒤에는 돌아가서 올바른 답을 표시하여 위험도가 높은 문제를 지우도록 하겠습니다. 여러 번의 반복으로 좋은 아키텍처가 제공 됩니다.
이렇게 문제점을 보완하고 개선하면, 다시 돌아가 높은 위험 요소를 제거하기 위해 정확한 답을 표시할 수 있습니다. 이런 과정을 반복하다 보면 우리가 궁극적으로 원하는 훌륭한 아키텍쳐가 설계됩니다..
공식 출시
Serverless Lens는 AWS 리전 표에 설명된 바와 같이 Well-Architected Tool이 제공되는 모든 리전에서 사용할 수 있습니다. 기존 워크로드에 적용하거나 도구에서 새로운 워크로드를 만들어 사용할 수 있습니다.
AWS Well-Architected Tool은 무료로 사용 가능하며, 작업중인 애플리케이션을 향상시키거나 작업중인 부서 또는 영역에서 사용하는 여러 워크로드에 대한 가시성을 얻기 위해 이 도구를 사용할 수 있습니다.
CIO/CTO로서 사용자는 담당하는 모든 애플리케이션의 상태를 설명하는 대시 보드로 이를 사용할 수 있습니다. 또한 여러 애플리케이션에서 단일 보기를 사용하는 다른 AWS 계정과 워크로드를 공유하여 더욱 쉽게 상태를 확인할 수도 있습니다.
이 도구의 산출물은 리스크와 대처방법이 포함된 보고서이므로, 설계 및 도입 단계에서뿐만 아니라 생산을 포함한 애플리케이션의 전체 라이프사이클에 걸쳐 이 도구를 사용해야 합니다. 그렇지 않으면 도구가 권장하는 사항 중 일부를 실행하기엔 너무 늦어버린 상황이 발생할 수 있습니다.
저자 소개
Danilo Poccia
Danilo는 고객의 혁신을 지원하기 위해 어떤 규모의 회사든 창업자들과 협력하고 있습니다. AWS의 에반젤리스트로서 그는 그의 경험을 활용하여 서버리스 아키텍처, 이벤트 기반 프로그래밍, 머신러닝, 엣지 컴퓨팅의 기술적, 비즈니스적 영향에 초점을 맞춰 고객이 그들의 아이디어를 실현할 수 있도록 하는 도움을 주는 역할을 담당하고 있습니다.
원문 URL: https://aws.amazon.com/ko/blogs/aws/new-serverless-lens-in-aws-well-architected-tool/
** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 개제하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달 드리도록 하겠습니다.