Amazon Web Services 한국 블로그

AWS Application Composer 미리보기 – 서버리스 워크로드 시각화 생성 도구

오늘 여러 AWS 서비스에서 서버리스 애플리케이션을 구축하는 데 사용할 수 있는 비주얼 디자이너인 AWS Application Composer 미리보기를 출시합니다.

일반적인 분산 시스템에서 각 팀별 권한 부여는 개발자가 비즈니스 기능을 코드로 변환하는 데 도움이 되도록 하는 데 필요한 문화적 변화입니다. 이것은 모든 팀이 독립적으로 작업한다는 의미는 아닙니다. 서로 다른 팀 또는 신규 참여자도 프로젝트에 기여하기 위해 무엇을 구축하고 있는지 이해해야 합니다. 아키텍처를 빠르게 이해하는 가장 좋은 방법은 다이어그램을 사용하는 것입니다.

안타깝게도 아키텍처 다이어그램은 오래된 공유 방식입니다. 또한, 프로덕션으로 워크로드를 출시할 때, 초기 설계 및 인프라와 이미 불일치가 있습니다. 서버리스 애플리케이션을 처음 구축하는 개발자는 여러 AWS 서비스에서 애플리케이션을 구성할 때 학습 곡선에 직면할 수 있습니다. 각 서비스를 구성하는 방법을 이해한 다음 인프라 기반 코드(Infrastructure as Code)를 배우고 작성하여 애플리케이션을 배포해야 합니다.

AWS Application Composer 시작하기

개발자 Emma는 모든 사용자가 서비스에 가입한 후 콘텐츠에 액세스할 수 있는 주문형 비디오 플랫폼에서 일하는 클라우드 아키텍트입니다. 앞으로 몇 달 안에 마케팅 팀은 신규 사용자 전용 할인 코드를 사용하여 사용자 기반을 늘리는 캠페인을 시작하려고 합니다.

그는 서버리스 애플리케이션을 처음 구축하는 개발자 팀과 협력하고 있습니다. 그들은 초당 수천 건의 트랜잭션으로 확장할 수 있는 할인 코드 서비스를 설계해야 합니다. 이 서비스를 구현하기 위한 많은 요구 사항이 있습니다.

  • 사용자로부터 선물 코드를 수집
  • 할인코드 확인이 가능
  • 월말 인보이스에 할인 코드를 적용

이러한 요구 사항과 모든 플랫폼 서비스에 사용할 수 있는 기본 서비스 수준 요구 사항(SLA)을 기반으로  아래와 같이 마이크로 서비스를 구축하는 데 필요한 핵심 요소가 포함된 높은 수준의 아키텍처를 설계합니다.

할인 코드 서비스 상위 수준 아키텍처

할인 코드 서비스 상위 수준 아키텍처

그의 아이디어는 페이로드에 할인 코드가 있는 고객의 요청을 받고 데이터베이스에서 할인 코드의 가용성을 확인하는 것입니다. 그런 다음 서비스는 다양한 할인 코드를 일괄적으로 비동기식으로 처리하여 다운스트림 종속성에 대한 트래픽을 줄이고 전체 인프라 비용을 줄입니다.

이 접근 방식을 통해 향후 서비스가 초기 트래픽 양 이상으로 확장될 수 있습니다. 느슨하게 결합된 아키텍처로 할인 코드 서비스 및 시스템의 다른 부분의 관리 및 구현을 단순화합니다.

개발자와 아키텍처에 대해 논의한 후 그는 AWS 관리 콘솔에서 Application Composer를 열고 서버리스 서비스를 사용하여 구현을 구축하기 시작합니다.

Application Composer 초기화면

Application Composer 초기화면

이제 시작하려면 신규 프로젝트를 선택하고 로컬 파일 시스템 폴더를 선택하여 프로젝트 파일을 저장합니다.

Application Composer 빈 프로젝트 생성

Application Composer에 로컬 프로젝트 파일에 대한 액세스 권한을 부여하면 콘솔 인터페이스와 로컬에 저장된 프로젝트 파일 간의 변경 사항을 거의 실시간으로 양방향 동기화할 수 있습니다. Application Composer 인터페이스로 속성을 업데이트하면 로컬에 저장된 파일에 반영됩니다. IDE에서 로컬 파일을 변경하면 Application Composer 캔버스에 자동으로 반영됩니다.

프로젝트를 생성한 후 Emma는 팀과 합의한 초기 디자인을 표현하기 위해 왼쪽 사이드바에서 필요한 AWS 리소스를 드래그합니다.

Application Composer를 사용하면 서버리스 리소스를 캔버스로 드래그하여 함께 연결할 수 있습니다. 백그라운드에서 Application Composer는 인프라를 코드 AWS CloudFormation 템플릿으로 생성합니다.

 Application Composer 캔버스

예를 들어  Lambda 함수를 캔버스로 끌 때 생성되는 기본 구성입니다. 다음 코드는 템플릿 보기에 있습니다.

  Function:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub ${AWS::StackName}-Function
      Description: !Sub
        - Stack ${AWS::StackName} Function ${ResourceName}
        - ResourceName: Function
      CodeUri: src/Function
      Handler: index.handler
      Runtime: nodejs14.x
      MemorySize: 3008
      Timeout: 30
      Tracing: Active
YAML

Application Composer는 서버리스 워크로드를 처음 접하는 개발자가 때때로 간과하는 몇 가지 유용한 기본 속성 값을 통합합니다. 예를 들어, AWS X-Ray를 사용하여 추적을 활성화 하거나 함수 제한 시간을 늘리는 것이 포함됩니다.

Application Composer 내부의 CloudFormation 템플릿에서 또는 리소스를 시각적으로 선택하여 이러한 매개변수를 변경할 수 있습니다. 이전 예에서 리소스 속성 패널을 열어 Lambda 함수 매개 변수를 업데이트할 수 있습니다.

Application Composer 리소스 패널

Application Composer 프로젝트를 로컬 시스템과 동기화할 때 코드 편집기에서 CloudFormation 템플릿을 변경할 수 있습니다. 이는 Application Composer 인터페이스의 변경 사항을 자동으로 반영합니다.

캔버스에서 두 요소를 연결하면 Application Composer는 기본 IAM 정책, Lambda 함수에 대한 환경 변수 및 해당하는 경우 이벤트 구독을 설정합니다.

예를 들어 Amazon DynamoDB 테이블 및 Amazon SQS 대기열과 상호 작용하는 Lambda 함수가 있는 경우 Application Composer는 Lambda 함수에 대해 다음 구성을 생성합니다.

Function:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub ${AWS::StackName}-Function
      Description: !Sub
        - Stack ${AWS::StackName} Function ${ResourceName}
        - ResourceName: Function
      CodeUri: src/Function
      Handler: index.handler
      []
      Environment:
        Variables:
          QUEUE_NAME: !GetAtt Queue.QueueName
          QUEUE_ARN: !GetAtt Queue.Arn
          QUEUE_URL: !Ref Queue
          TABLE_NAME: !Ref Table
          TABLE_ARN: !GetAtt Table.Arn
      Policies:
        - SQSSendMessagePolicy:
            QueueName: !GetAtt Queue.QueueName
        - DynamoDBCrudPolicy:
            TableName: !Ref Table
YAML

이는 새로운 빌더가 첫 번째 서버리스 애플리케이션을 설계할 때 도움이 되며 고급 빌더가 수정할 수 있는 초기 구성을 제공합니다. 이를 통해 서버리스 애플리케이션을 설계할 때 좋은 운영 사례를 포함할 수 있습니다.

Emma의 팀은 할인 코드 아키텍처를 표현하는 데 필요한 다양한 서비스를 계속 추가하고 있습니다. Application Composer의 최종 결과는 다음과 같습니다.

Application Composer의 할인 코드 아키텍처

Application Composer의 할인 코드 아키텍처

  1. 본 애플리케이션에는 시스템에 할인 코드를 제출하는 데 필요한 API를 노출하는 Amazon API Gateway 엔드포인트가 포함되어 있습니다.
  2. POST API는 할인 코드를 계속 사용할 수 있는지 먼저 확인하는 Lambda 함수를 트리거합니다.
  3. 이것은 DynamoDB 테이블을 사용하여 저장됩니다.
  4. 할인 코드를 성공적으로 검증한 후 함수는 SQS 대기열에 메시지를 추가하고 성공적인 응답을 클라이언트에 반환합니다.
  5. 다른 Lambda 함수는 SQS 대기열에서 메시지를 검색하고 송장을 보냅니다.

이 접근 방식을 사용하면 나머지 작업이 비동기식으로 처리되므로 Lambda 함수 호출 속도가 최적화됩니다. 또한 사용자로부터 요청이 도착하면 서비스를 확장하는 대신 사용자 SQS 일괄 처리당 여러 할인 코드를 집계할 수 있으므로 아키텍처의 복잡성과 비용을 단순화합니다.

개발팀은 이를 서비스의 초기 설계로 사용할 수 있습니다. 앞으로는 인증 메커니즘과 통합할 계획입니다. 그들은 관찰 가능성을 위해 Lambda Powertools를 추가하고 프로젝트가 회사 표준을 준수하도록 내부적으로 개발된 추가 라이브러리를 추가합니다.

Application Composer는 CloudFormation 템플릿 .yaml 파일 및 Lambda 함수의 핸들러를 포함하여 Emma의 로컬 파일 시스템에서 프로젝트를 시작하는 데 필요한 모든 파일을 생성했습니다.

Application Composer 생성 파일

Emma는 이제 이 서비스의 개요를 버전 제어 시스템에 업로드하고 비즈니스 로직 코딩을 시작할 수 있는 다른 개발자와 아티팩트를 공유할 수 있습니다.

추가 기능

Application Composer의 왼쪽 패널에는 사용 가능한 리소스를 빠르게 찾아볼 수 있는 리소스 목록 탭이 포함되어 있습니다.

Application Composer에서 사용 가능한 리소스 찾아보기

캔버스 내부의 시각화를 단순화하기 위해 리소스를 의미론적으로 그룹화할 수도 있습니다. 이는 캔버스에 큰 응용 프로그램이 있고 자원을 찾기 위해 캔버스를 끌지 않고 빠르게 요소를 선택하려는 경우에 유용합니다. 이 기능은 생성된 인프라에 영향을 주지 않습니다.

Application Composer 그룹화

Application Composer는 프로젝트가 다시 로드될 때 캔버스가 리소스를 함께 그룹화할 수 있도록 CloudFormation 템플릿에 일부 메타데이터를 추가합니다.

Metadata:
  AWS::Composer::Groups:
    Group:
      Label: Group
      Members:
        - CodesQueue
        - CodesTable
YAML

새로운 서버리스 워크로드를 구축하는 것 이상으로 Application Composer를 사용할 수 있습니다. 를 선택하여 기존 CloudFormation 템플릿을 로드할 수 있습니다 . 기존 프로젝트 로드 에서 프로젝트 생성 대화 상자

Application Composer가 기존 프로젝트 로드

Application Composer가 기존 프로젝트 로드

이를 사용하여 조직의 모범 사례로 청사진을 정의한 다음 Application Composer 내에서 시각화할 수 있습니다. 이것은 새로운 서버리스 서비스를 시작할 때 팀이 협업하는 데 도움이 됩니다. 기존 기본 템플릿에서 리소스를 추가하여 서버리스 마이크로서비스 또는 이벤트 기반 아키텍처를 구축할 수 있습니다.

AWS SAM과 통합하기

AWS Serverless Application Model (AWS SAM)의 기능의 일환으로 출시된 AWS SAM Accelerate은 최근 프로젝트 변경 사항만 동기화하여 피드백 루프와 코드 및 클라우드 인프라 테스트를 가속화해 줍니다.

Application Composer를 AWS SAM Accelerate와 함께 사용하여 클라우드에서 서버리스 애플리케이션을 보다 간단하게 시각적으로 구축하고 테스트할 수 있습니다. AWS SAM Accelerate에 대해 자세히 알아 보려면, 이 라이브 데모를 살펴보세요.

Application Composer 활용 사례

Emma는 이 프로젝트에서 팀을 돕기 위해 Application Composer를 사용했지만 이를 사용할 추가 방법에 대한 아이디어가 있습니다.

  • 신속한 프로토 타입
  • 기존 서버리스 프로젝트를 검토 및 협력 개발
  • 문서 또는 위키용 다이어그램 생성하기
  • 새 팀원을 프로젝트에 온보딩하기
  • AWS 클라우드 계정에 초기 앱 배포 수단

미리보기에 참여해주세요!

AWS Application Composer는 현재 다음 리전에서 공개 미리 보기로 제공됩니다. 프랑크푸르트(eu-central-1), 아일랜드(eu-west-1), 오하이오(us-east-2), 오레곤(us-west-2), 버지니아 북부(us-east-1) 및 도쿄(ap-northeast-1)에서 사용하실 수 있습니다.

Application Composer는 추가 비용 없이 사용할 수 있으며 AWS 관리 콘솔로 사용할 수 있습니다. 현재 Application Composer는 향후 추가할 계획인 제한된 수의 서비스를 지원합니다. 포함되었으면 하는 서비스를 알려주세요.

공개 미리 보기로서 도구를 발전시키기 위한 제안과 아이디어를 찾고 있습니다. 우리는 여러분의 팀이 조직 내에서 서버리스 워크로드의 채택 속도를 높이는 데 도움이 되는 방법을 찾고 있습니다. 더 많은 피드백을 보내주시길 바랍니다.

더 많은 서버리스 학습 리소스를 보려면 서버리스 랜드 를 방문하십시오 .

– Luca Mezzalira, AWS Principal Solutions Architect

이 글은 AWS Compute Blog의 Visualize and create your serverless workloads with AWS Application Composer 한국어 번역입니다.