ASW를 통해 손쉽게 첫번째 애플리케이션 배포하기 위한 3가지 방법
1. 정적 웹 사이트 및 프론트엔드 앱
2. 가상 서버 기반 백엔드 앱
3. 완전 관리형 서버 및 DB 기반 앱
1. 정적 웹 사이트 및 프론트엔드 앱
AWS에서는 기본적으로 아마존 S3라고 하는 스토리지 서비스가 있다. 여기에 XML 파일을 올리면 정적 웹 사이트 기능을 통해서 세팅을 할 수 있다. 권한 설정을 하려고 할 때는 별도의 세팅이 필요하다. 전세계로 컨텐츠 배포 네트워크를 사용하려면 아마존 클라우드 프론트라고 하는 서비스를 사용해야 한다. 도메인 명을 갖고 세팅을 하려고 할 때는 아마존 라우터53이라고 하는 서비스를 사용하여 my websit.com과 같이 세팅해야 한다. https 서비스를 제공하려고 할 때는 앱에서 AWS Certificate Manager라고 하는 서비스를 설정해야 한다.
■ AWS Amplify Console ▶ 몇 번의 클릭으로 정적 웸 사이트 및 프론트엔드 앱 배포 가능
ⓐ 정적 웹 사이트 배포 도구
- 다양한 정적 웹 사이트 또는 서버리스 웹 앱에 적합
Single Page Apps | 블로그 및 웹 사이트 | 풀스택 서버리스 앱 |
React, Angular, Vue, Ember로 만들어진 단일 페이지 웹 기반 모바일 앱 지원 가능 | Gatsby, Hugo, Jekyll과 같은 정적 웹 사이트 생성기를 통해 블로그 기반 정보 사이트 배포 가능 | GraphQL 또는 REST API를 사용하여 동적 기능 추가함으로서 풀스택 서버리스 앱 배포 가능 |
ⓑ 지속적인 통합 및 배포 (CI/CD) 가능
- 복잡한 CI/CD 도구 사용 없이도 데브옵스 기반 배포 가능
앱 배포 과정 단순화 | 즉석 세부(Atomic) 배포 | 기능 기반 브랜치 가능 |
개발 과정에서 git push 같은 소스 변경 사항을 지속적으로 통합하여 배포 과정을 단순화 | 코드 업데이트한 후 바로 배포 진행, 실패하더라도 바로 롤백하여 서비스에 영향 없음 | 정식 서비스에 영향을 미치지 않고 신규 기능을 브랜치에 연결하여 배포 수행 가능 |
ⓒ 글로벌 SSL 기반 웹 호스팅 자동화
- 전 세계에 손쉽게 안전한 웹 사이트 배포 가능
글로벌 가용성 | 간편한 사용자 지정 도메인 설정 | 암호 기반 인증 |
수백 개 엣지 로케이션을 보유한 Amazon의 안정적인 콘텐츠 전송 네트워크 활용한 빠른 배포 및 사용자 접근성 확대 | 클릭 한 번으로 사용자 지정 도메인 이름 설정 및 무료 HTTPS 인증서 설정 완료 | 사용자 이름과 암호를 설정하여 내부 기능에 대해 팀 내에서만 안전하게 공유 및 테스트 가능 |
[사용 방법]
㉮ 코드 레포지토리 선택 및 연결
㉯ 원클릭 웹 사이트 설정 및 배포
㉰ 업데이트 될 때마다 주기적인 자동 배포
실습
로그인 후, 검색창에 Amplify를 검색하였다.
다음으로 모든 앱에 가서 [New app] - [Host web app]으로 들어간다.
github를 선택하고 권한 부여를 해준다.
gthub에 있는 웹 사이트 코드를 불러온 후, 배포 설정을 한다. 초기 설정을 따른다.
저장 및 배포를 하게 되면 레파지토리에 있는 코드를 모두 가져와서 패키징을 하고 전세계적으로 배포할 수 있는 준비를 하게 된다.
배포 상황과 설정을 확인할 수 있다.
그 후, github에서 코드를 수정한 후 다시 들어오니 빌드를 재실행하고 있는 모습을 볼 수 있었다.
2. 가상 서버 기반 백엔드 앱
AWS에서 가상 서버 기반이라고 해서 기본적으로 아마존 EC2가 있다. 서버 세팅을 하고 이 환경에 PHP를 깔고 워드프로세스를 올릴 수 있다. 서버 한 대만 만들면 서비스 장애가 날 수 있기 때문에 Availability Zone에 서버를 나눠서 배포하게 된다.
■ Amazon Lightsail ▶ 저렴한 가격으로 가상 서버, 스토리지, 데이터베이스 및 네트워킹 서비스를 한 번에 할 수 있음
ⓐ Lightsail 활용 사례
소규모 웹 호스팅 | 콘텐츠 웬 사이트 | 비즈니스 소프트웨어 |
LAMP, Nginx, MEAN 및 Node.js 등 사전 구성된 개발 스택의 웬 애플리케이션을 빠르게 호스팅 제공 | WordPress, Magento, Plesk 및 Joomla 등 콘텐츠 기반 웬 사이트를 안정적으로 운영하기 위한 경우 | 사내 파일 공유 및 저장, 백업, 재무 및 회계 소프트웨어 등과 같은 업무용 소프트웨어 제공 시 |
ⓑ 다양한 애플리케이션 포트폴리오 제공
: 다양한 클라우드 자원에 대해 월 정액 비용으로 예측된 예산안에서 다양한 개발 스택을 빠르고 안정적 운영
ⓒ 서버 한 대로 소형 가상 호스팅 운영
ⓓ 손쉽게 안정적인 아키텍처 구성
- 로드밸런스, 데이터베이스 서비스도 추가되었다. 로드 밸런스 기능을 통해 한 개의 서버가 다운되어도 다른 서버로 서비스 이용이 지속적으로 가능하다. 도메인 명도 설정이 가능하다. 고정 ip를 넣지 않는게 보안적으로 좋다. 스냅샷도 찍을 수 있다.
실습
실습을 위해 Lightsail에 접속한다.
인스턴스 위치, 가용 영역, 인스턴스 이미지 등을 선택할 수 있게 되어있다.
월정액으로 운영되게 때문에 선택할 수 있다. 월정액으로 요금이 발생하기 때문에 인스턴스 생성까지는 하지 못하였다.
ip address가 바로 설정이 되어서 사용할 수 있다. ssh로 브라우저에서 바로 사용이 가능하다. 아이디, 패스워드를 넣어서 바로 사용이 가능하다.
[가상 서버보다 더 안정적으로 운영하고 싶을 때]
: Lightsail에서 Amazon EC2 기반으로 이전 가능
--> 가용성을 높이고, 트래픽 기반 자동 확장/축소, 안전하게 애플리케이션 배포, 자동적인 프레임워크 업데이트, 운영체제 패치, 손쉬운 헬스 체크 및 자동 페일 오버를 위해서는 EC2 기반으로 이전하는 것이 좋다.
3. 완전 관리형 서버 및 DB 기반 앱
■ AWS Elastic Beanstalk ▶ 코드 배포 만으로 서버 구성, 로드 밸런싱, 자동 확장, 비용 절감, 패치 및 모니터링 제공
--> 서버/DB 인스턴스 설정, 오토스케일링 설정, 네트워크 보안 설정, 로드 밸런싱 설정, OS 및 런타임 자동 패치, 다양한 배포 제공, 헬스 모니터링, 온디맨드/스팟 비용 설정
실습
AWS Elastic Beanstalk에 접속한다.
웹 앱 생성을 클릭하면 이름을 입력하는 창이 제일 먼저 나온다.
어떠한 언어로 할 것인지 플랫폼을 설정해야 한다. 코드 업로드를 할 수 있다. 그 후, 애플리케이션 생성을 클릭하면 된다. 무슨 이유인지 모르겠지만 생성이 되지 않아서 캡처하지 못하였다.
업데이트도 빠르고 간편하게 가능하다. 예전 버전까지 한 번에 애플리케이션 버전에서 확인 가능하다.
☞ EB CLI를 통한 관리
Elastic Beanstalk 초기화 - 리전, 보안키, 플랫폼, 키페어 등 $ eb init |
DNS 설정, 로드밸런싱 타입, 운영 환경 설정 등 $ eb create |
코드 수정 및 애플리케이션 배포 $ git commit $ eb deploy |
+ 소규모 프로젝트를 해야 할 때
■ AWS CodeStar ▶ 소규모 팀의 프로젝트에서 데브옵스 기반 개발 및 배포 운영을 위한 완전 관리 서비스
- 팀 기반으로 프로젝트 중심으로 Amazon EC2, AWS Lambddda 및 Elastic Beanstalk용 앱 운영 가능
- 프로젝트 대시 보드, 팀원 관리, 소스 코드, 배포 파이프라인 이슈 트래커 연결 기능
- 손쉽게 지속적 통합 및 배포(CI/CD) 기반 개발 및 운영 가능