Amplify란?
Amplify는 여러 SSR*, SPA*, SSG*를 배포 가능한 서버리스 웹 앱 서비스입니다.
GitHub 등과 연동, 빌드 설정, 빌드 알림, 사용자 지정 도메인, 환경 변수, 모니터링 등의 기능을 지원합니다.
SSR* : Server Side Rendering로서 Next.js, Nuxt 등을 배포 가능
SPA* : Single Page Application로서 React, Angular 등을 배포 가능
SSG* : Static Site Generators로서 Gatsby, Hugo 등을 배포 가능
Amplify Architecture
Amplify는 특별한 지식 없이 다양한 프레임워크를 배포할 수 있습니다.
따라서 Amplify 뒤에서 어떤 Architecture로 배포되어 있는지 알 수 없습니다.
현재 이 부분은 리서치 중에 있습니다.
Amplify 배포하기
Amplify 배포는 AWS Amplify Console의 가이드 대로 손쉽게 배포할 수 있습니다.
다만 아래 몇 가지 주의사항이 존재합니다.
소스 코드 제공 업체 선택 시, 공용 GitHub 계정 선택할 것 - [Ref]
리포지터리 및 브런치 추가 시, 모노리포지토리 사용하지말 것 - [Ref]
앱 설정 시, 빌드 설정 / 고급 설정 꼼꼼히 설정할 것 - [Ref]
소스 코드 제공 업체 선택 시, 공용 계정 선택할 것
타사 소스 코드 제공 업체 선택 시, 반드시 공용 계정을 선택하는 것이 좋습니다.
만약 계정이 탈퇴하거나 권한이 축소될 경우 CI/CD가 작동하지 않을 수 있습니다.
리포지터리 및 브런치 추가 시, 모노리포지토리 사용하지말 것
A/B 배포, 작업 브런치 교체 등의 작업을 진행하기 위해서
Amplify 배포 시 내 앱은 모노 리포지토리임을 활성화하지 않도록 합니다.
앱 설정 시, 빌드 설정 / 고급 설정 꼼꼼히 설정할 것
앱 설정 단계에서 아래 설정값들을 반드시 꼼꼼히 설정하도록 합시다.
빌드 설정
내 사이트를 비밀번호로 보호 ⛳️
테스트 빌드이거나 엑세스 제어가 필요한 경우 해당 옵션을 활성화합시다.
고급 설정
환경 변수 ⛳️
민감하지 않은 환경 변수의 경우 여기에 기록하도록 합니다.
단, API Key / Credential 등은 SSM Parameter Store, Secrets Manager 등의 시크릿 관리 솔루션과 통합하여 사용하여야 합니다.라이브 패키지 업데이트
빌드 제한 시간 ⛳️
Amplify의 최대 빌드 제한 시간은 2시간입니다.
Amplify CI/CD는 때로 무한 Pending 상태에 빠지기 때문에, 해당 빌드 제한 시간을 15분 등으로 줄이도록 합니다.라이브 패키지 업데이트 ⛳️
배포 및 장애 환경의 차이를 최소화 시키기 위해서 버전 정보를 명시합시다.
- Node.js, Yarn, Next.js
사용자 지정 도메인 설정하는 법
AWS Route53 Hosted Zone이 있는 경우
[Amplify - 호스팅 - 사용자 지정 도메인]에서 [도메인 추가]을 사용할 수 있습니다.
만약 서브 도메인으로 배포를 하고 싶을 경우 아래와 같이 입력하면 됩니다.
만약 naver.com
이라는 Route53 Hosted Zone이 있다면,
사용자 지정 도메인에 target.naver.com
이라는 이름을 입력하여
배포한 Amplify Application으로 도메인을 연결할 수 있습니다.
이후 연결한 브런치와 도메인을 연결할 수 있습니다.
고급 사용 사례
Amplify의 다양한 고급 사용 사례에 대해서는 다음 문헌 참고해주세요.
API Key와 같이 민감한 데이터를 다루기 위해서 Amplify SSM Parameter Store 연동 참고하기
Amplify의 느린 성능 문제를 해결하기 위한 Amplify Cache & Cold Start 성능 개선 참고하기