App Engine은 애플리케이션을 배포하고 실행할 때 필요한 모든 작업을 통합하기 위해 완전히 관리되는 클라우드 환경이다. 백그라운드 작업(데이터 저장, 예약 작업)을 비롯한 다양한 작업들을 쉽게 수행할 수 있도록 호스트 서비스 세트를 제공하기 때문에 직접 하나하나 관리할 필요가 없다.
1개의 프로젝트에는 1개의 App Engine만 있을 수 있고, 애플리케이션 영역은 한 번 선택하면 변경이 불가하다(지역마다 요금이 다르기 때문이다)
App Engine은 애플리케이션을 마이크로서비스와 같이 작고 쉬운 부분으로 나눌 수 있는 방법을 제공한다
*마이크로서비스: 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 방법으로 예를 들어 카카오라는 애플리케이션 안에 쇼핑, 검색, 메세지, TV 등 다양한 서비스들이 있는데 이들 서비스 모두를 카카오라는 거대한 서비스의 부분으로 만드는 것이 아닌 각각 하나의 서비스로 구현하는 것을 말한다. 이 말은 곧 마이크로서비스들은 각기 다른 프로그래밍 언어로 구현할 수 있으며 각기 다른 인프라스트럭처를 사용할 수 있다는 뜻이므로 마이크로서비스가 서로(동기, 비동기, UI 연동) 통신하고 프로토콜이 통신을 위해 사용되는 방식(REST, 메시징)이 중요하다
App Engine은 애플리케이션을 배포를 위해 2가지 유형의 App Engine 인스턴스를 제공한다.
1) App Engine Standard
2) App Engine Flex
이제 App Engine 실습을 해보자
(Node.js로 이용할 것이다)
App Engine 생성
애플리케이션 작성에 사용할 프로그래밍 언어를 선택한다
우측 상단의 cloud shell을 클릭해서 터미널을 실행한다
*프로젝트ID와 애플리케이션ID는 동일하다(1개의 프로젝트에는 1개의 App Engine만 있을 수 있기 때문에 1:1 관계)
애플리케이션 생성
"default-flex"라는 새로운 폴더를 생성한다
$ mkdir default-flex
"default-flex" 폴더로 이동하여 애플리케이션을 초기화한다
npm init 명령어는 "package.json" 파일 생성하는데 이 파일은 노드 프로젝트를 만들 때 필요하다
$ npm init
HTTP요청을 처리하는 express를 종속항목으로 추가한다
$ npm install express
애플리케이션의 구성방법을 지정하는 파일인 app.yaml 업데이트
아까 App Engine을 생성할 때 기본언어를 python으로 설정했는데 node.js로 애플리케이션 빌드를 해도 되는지
궁금할 것이다. standard는 언어가 제한되고 샌드박스 환경 내에서 실행되지만, flex는 도커 컨테이너를 기반으로 하므로 원하는 프로그래밍 언어를 사용할 수 있다
app.js라는 이름의 Node.js파일을 만들어서 간단한 스크립트를 작성한다
아래의 스크립트는 /로 전송된 모든 요청을 받고, 응답으로 'App Engine by JHB'를 보낸다
앱 배포
▶ 앱 소스가 들어있는 폴더를 배포해야 한다(현재 위치가 'default-flex' 안에 있으므로 상위 위치로 이동해서 'default-flex'를 배포한다)
$ gcloud app deploy ../default-flex
앱 동작 확인
(SSL/TLS가 동작하는지 확인하기 위해서는 https를 붙여서 실행한다)
curl http://[프로젝트ID].appspot.com
웹 브라우저에서도 잘 실행되는 걸 볼 수 있다
방금 배포한 애플리케이션에 관한 스토리지가 생성된 것을 Cloud Storage에서 확인할 수 있다
*배포한 애플리케이션의 버전 리스트와 서비스 제공유/무를 확인하는 명령어
gcloud app versions list --service=설정한 서비스명
'GCP' 카테고리의 다른 글
Cloud Functions (0) | 2021.02.09 |
---|---|
App Engine standard/flex 배포 (0) | 2021.02.09 |
GCP-Cloud Datastore (0) | 2021.02.07 |
GCP-로드밸런싱 (0) | 2021.02.05 |
GCP-영구디스크 생성 및 사용 / 스냅샷 (0) | 2021.02.04 |