Full Stack Development - Web and Mobile Apps -
AWS Amplify
AWS Amplify는 풀스택(Full Stack) 애플리케이션 개발을 지원하는 개발 플랫폼이다.
특히 프론트엔드와 백엔드를 쉽게 설정, 개발, 배포을 통합적으로 관리하는 데 유용하다.
(즉, Elastic Beanstalk처럼 개발과 배포를 쉽게 만들어준다.)
Elastic Beanstalk는 백엔드를 쉽게 구성해주지만, Amplify를 프론트엔드, 백엔드, CI/CD를 쉽게 올인원(all in one)으로 쉽게 만들게 해준다.
AWS Amplify 특징
- Fully Managed Service(완전 관리형)이다. – 서버를 직접 관리할 필요가 없다
- 프론트엔드: 프레임워크(예: React, Angular, Vue.js) 및 모바일 플랫폼(예: iOS, Android)과 함께 사용할 수 있다.
- 백엔드: 인증(예: Amazon Cognito), API (예: Lambda), 데이터&파일 저장소 등을 쉽게 설정할 수 있다.
- CI/CD: 애플리케이션의 CI/CD 파이프라인을 설정할 수 있어 코드 Merge 시에 자동으로 빌드&배포된다.
- Amplify는 Git 리포지토리(CodeCommit, Bitbucket, GitHub 등)와 연동이 가능하다.
- 서버리스 아키텍처를 기반으로 다양한 AWS 서비스와 쉽게 연동할 수 있는 도구들을 제공한다.
- Amplify는 기본적으로 HTTPS를 사용하여 데이터 전송을 한다.
AWS Amplify 사용 예시: 웹 블로그를 만들기
- UI 만들기:
- 사용자가 React로 블로그의 프론트엔드 코드를 작성하고 Git 리포지토리에 저장하기
- Git 리포지토리를 Amplify Console에 연결하기
- Amplify로 백엔드 설정:
- Amplify에서 로그인 기능(예: Cognito를 사용)을 구현하기
- 스토리지(예: S3)를 사용해 이미지 파일을 저장하기
- CI/CD 배포:
- Amplify Console에서 GitHub와 연결하여 코드를 Push하면 자동으로 배포된다.
- Amplify가 CI/CD 파이프라인을 자동으로 설정해, 코드 Merge 시 바로 배포된다.
😵 DVA-C03 문제
한 회사가 AWS에서 정적 웹사이트를 배포하고 유지 관리하려고 합니다. 각 웹사이트의 소스 코드는 AWS CodeCommit, Bitbucket 및 GitHub과 같은 여러 버전 관리 시스템 중 하나에 호스팅됩니다.
회사는 개발, 스테이징, UAT, 프로덕션 환경을 사용하여 단계적 릴리스를 구현하고 싶습니다. 각 환경으로의 배포는 해당 Git 브랜치에서 코드 Merge로 시작되어야 합니다. 회사는 모든 데이터 교환에 대해 HTTPS를 사용하고자 하며, 지속적으로 실행되는 서버가 필요 없는 솔루션을 원합니다.
어떤 솔루션이 가장 적은 운영 오버헤드로 이러한 요구 사항을 충족할까요?
- AWS Amplify를 사용하여 각 웹사이트를 호스팅하고 서버리스 백엔드를 사용합니다. 원하는 환경에 해당하는 리포지토리 브랜치를 연결합니다. 코드 변경을 Merge하여 배포를 시작합니다.
- 여러 환경에서 AWS Elastic Beanstalk를 사용하여 각 웹사이트를 호스팅합니다. EB CLI를 사용하여 각 리포지토리 브랜치를 연결합니다. AWS CodePipeline을 통합하여 버전 관리 코드 Merge에서 자동으로 배포합니다.
- 각 환경에 대해 서로 다른 Amazon S3 버킷에 각 웹사이트를 호스팅합니다. AWS CodePipeline을 구성하여 버전 관리에서 소스 코드를 가져옵니다. AWS CodeBuild 단계를 추가하여 소스 코드를 Amazon S3로 복사합니다.
- 각 웹사이트를 Amazon EC2 인스턴스에 호스팅합니다. 각 웹사이트의 정적 자산을 묶기 위한 사용자 정의 배포 스크립트를 작성합니다. 자산을 Amazon EC2로 복사합니다. 코드가 Merge될 때 스크립트를 실행하는 워크플로를 설정합니다.
정답 & 오답
정답. 1번 AWS Amplify 사용하기
Amplify의 백엔드는 서버리스 환경에서 작동한다.
자동화된 배포: Amplify는 Git 리포지토리와 직접 연결할 수 있어, 코드 Merge시 자동으로 배포된다.
HTTPS 지원: Amplify는 HTTPS를 지원하여 데이터 보안을 보장한다.
단계적 릴리스에 적합: 개발, 스테이징, UAT, 프로덕션 환경별로 Amplify 프로젝트와 브랜치를 연결할 수 있다.
2번. Elastic Beanstalk는 동적인 웹 애플리케이션에 더 적합하며, S3 기반의 정적 사이트 배포보다 복잡하고 관리해야 할 요소가 많아진다.
3번. S3와 CodePipeline은 정적 웹사이트 배포에 사용할 수 있지만, 추가 설정이 많이 필요하고, 서버리스 솔루션으로 Amplify에 비해 관리 부담이 크다. HTTPS에 관한 설명이 없다.
4번. EC2 인스턴스는 지속적으로 실행되는 서버가 필요하여 운영 오버헤드가 크다. 서버리스가 아닌 EC2를 사용하는 것은 요구사항에 맞지 않다.
'클라우드(AWS)' 카테고리의 다른 글
[AWS] Lambda Layer란? 쉽게 정리 (Lambda에서 필요한 라이브러리 사용하기) (1) | 2024.11.09 |
---|---|
[AWS] API Gateway 개발 환경 별로 (예: Dev, Prod) Stages 설정하는 법 (1) | 2024.10.29 |
[AWS] Amazon OpenSearch란? 쉽게 정리 (검색 엔진, Elasticsearch) (0) | 2024.10.20 |
[AWS] RBAC와 ABAC란? 쉽게 정리 (0) | 2024.10.12 |
[AWS] STS (Security Token Service)란? 쉽게 정리 (AssumeRole, AssumeRoleWithSAML, Trust Policy) (3) | 2024.10.12 |