AWS Hands-on Lab #1 : IaC 작성이 힘들고 귀찮을 땐 이걸 써보세요. AWS Application Composer
Written by Minhyeok Cha 현재 클라우드 IaC는 주로 Terraform을 사용하거나 AWS의 CloudFormation을 사용해 사용하고 있습니다. 기존에 사용한 사람들은 Yaml, Json 등 기존 양식을 갖고 있지만 처음 접하는 사람들은 처음부터 배우는 것에 많은 시간이 걸립니다.
이 때 AWS Application Composer 서비스를 사용해 IaC 코드작성 및 공부 시간을 줄여줍니다. 뿐만 아니라 기존 IaC 사용자인 경우 서버리스 환경의 구성환경을 IaC로 구성 관리를 하면 Yaml, Json 파일이 뒤엉켜 독해하기가 힘들지만 AWS Application Composer를 사용해 간단하게 AWS 서버리스 서비스를 접목 시킬 수 있습니다.
AWS Application Composer를 사용하면 캔버스로 직접 디자인하고 설계한 서비스를 나열 후 모범 사례에 부합하는 CloudFormation yaml 파일을 생성하여 서버리스 애플리케이션을 구축할 수 있습니다.
AWS Application Composer란?
AWS Application Composer는 AWS에서 제공하는 시각적 도구로, 서버리스 애플리케이션을 빠르게 구축할 수 있도록 도와주는 서비스입니다.
AWS Application Composer를 사용하면 캔버스로 직접 디자인하고 설계한 서비스를 나열 후 모범 사례에 부합하는 CloudFormation yaml 파일을 생성하여 서버리스 애플리케이션을 구축할 수 있습니다.
간단한 AWS 서버리스 테스트 캔버스 생성
이번 게시글에서는 예시로 Game Item DB를 AWS Application Composer를 사용해 만들어 보았습니다.
API G/W 와 DB를 간단히 연결 할 수 있었지만 새로운 서비스의 기능을 테스트 겸 공부해보기 위해 SNS와 SQS를 추가해 보았습니다.
1. 캔버스 생성
캔버스로 서비스를 나열하고 각 리소스 설정을 끝내면 좌측 상단의 템플릿을 통해 AWS CloudFormation으로 IaC를 돌릴 수 있는 Yaml 파일이 자동으로 작성됩니다.
2. 테스트 목적
가상의 게임 클라이언트에서 나온 API 데이터를 API G/W에 전달 (이 때 게임 앱은 따로 없음으로 API G/W의 테스트를 사용)
Lambda를 통해 SNS 및 SQS를 통해 엔드포인트 수신 (이 부분은 테스트, 공부 겸 올린 거라 무시하셔도 됩니다.)
두 번째 Lambda에서 DynamoDB 테이블을 지정 및 Key-Value 매핑하여 DB 적재
3. Lambda 핸들링 코드 생성
물론 위에 보이듯 AWS 서비스를 사용할 때의 간단한 설정은 수정 가능하지만, Lambda 같은 경우 코드를 직접 써 넣어야 합니다.
위에서 생성한 Yaml 파일은 SAM을 사용해 리소스를 구성할 예정입니다.
AWS SAM (Serverless Application Model)
SAM은 서버리스 애플리케이션 인프라 코드를 정의하고 관리를 해줍니다. 간단하게 설명하자면 템플릿을 통해 인프라를 자동으로 정의해주고 CLI를 통해 구축 및 실행을 도와주는 AWS 툴 킷입니다.
SAM을 Application Composer와 통합하여 복잡성을 추상화를 시킬 수 있습니다.
위에서 생성된 Yaml 파일로 CloudFormation을 사용할 수도 있지만 SAM은 CloudFormation 구문을 사용할 수 있으며 Application Composer는 서버리스 서비스만 구성하다 보니 CloudFormation 보단 위에서 언급된 서버리스 애플리케이션 관리가 용이한 SAM에서 구동하는 편이 효율적이라 생각하여 사용해봤습니다.
이번 게시물은 SAM에 관련된 글이 아니기 때문에 더욱 자세한 사항은 다음에 한번 정리해보겠습니다.
SAM 구성
툴을 사용하기 위해 먼저 AWS SAM CLI를 설치해야 합니다.
이후 터미널에 들어가 위에서 정의한 Yaml 및 Lambda 코드가 있는 경로에 들어가 “sam build”를 사용해 빌드를 시작합니다.
이후 “sam deploy —guided” 를 사용해 배포를 진행합니다.
API Gateway를 사용해 데이터 DB 쌓기
게임 앱은 예시로 들었기 때문에 API G/W에서 테스트를 사용해 파라미터를 수동으로 넣고 테스트 해보았습니다.
DynamoDB 테이블에 데이터가 기록되어 있는 걸 확인할 수 있습니다.
마무리
이번 블로그는 AWS 새로운 서비스인 Application Composer를 사용한 Yaml 생성과 SAM을 사용한 인프라 리소스 배포를 해보았습니다.
처음부터 새 아키텍처를 시작할 수도 있고, Application Composer에서 생성된 애플리케이션을 가져와서 수정할 수도 있습니다. 이를 통해 개발자는 더 쉽게 서버리스 애플리케이션을 구축하고 배포가 가능해졌습니다.
그러나 Terraform이나 CloudFormation이 이용되고 있는 경우 굳이 해당 서비스를 추가로 사용할 기회가 없을 것 같습니다.
아주 좋습니다.
😳