GAE는 크게 Flexible Engine 과 Standard Engine 으로 나뉜다.
둘다 GAE라는 시스템을 만드는 엔진이긴 한데 몇가지 차이점이 있다.
기본적으로 가장 쉽게 설명하자면, Flexible은 유연하게 어느정도의 커스텀이 되는 환경이라고 하면, Standard는 표준화된 환경을 의미한다고 볼 수 있다. 따라서, Flexible은 상대적으로 인스턴스의 시작(부팅)이 느리고 ( 분단위 ) Standard는 빠르다( 초단위 ).
또한 요금 시스템 또한 Standard는 사용시간 단위라고 하면, Flexible은 커스텀된 cpu,memory ,disk를 기준으로 과금을 한다.
자세한 내용은 다음 링크를 통해 ( https://cloud.google.com/appengine/docs/the-appengine-environments )
이번 포스팅이 기본적으로 standard를 배포하는 내용이었다면, 이번에 다룰 내용은 flexible을 다룰것이다.
standard는 빠르지만 대신에 기본적인 환경이라서, php5 만 사용이 가능한데, flex 는 php7.1 도 사용이 가능하다.
또한 Node.js의 경우에는 standard에서는 동작하지 않고 flex에서만 동작이 가능하다. 따라서 이번에는 flex를 다룰것인데,
사실 기본적인 내용은 이전 포스팅과 전혀 다를게 없고 오로지 app.yaml과 cloudbuild.yaml 파일만 수정하면 할 수가 있다.
세부적인 내용은 이전 포스팅 참조 ( https://steemit.com/kr/@calmlake79/google-app-engine-git )
app.yaml 은 다음과 같다.
service: default
runtime: php
api_version: 1
env: flexible
handlers:
- url: /.*
script: helloworld.php
secure: always
automatic_scaling:
min_num_instances: 1
max_num_instances: 20
오토스케일링 관련을 넣어준것과 환경을 flex로 바꾼것 외에는 크게 달라진게 없다. 오토스케일링을 안넣어주면 기본적으로 2개의 인스턴스를 띄워준다. 주의하도록.
관련 링크는 다음과 같다. ( https://cloud.google.com/appengine/docs/flexible/php/configuring-your-app-with-app-yaml )
참고로, flex랑 standard랑 미묘하게 옵션값이 달라서 헷갈릴수 있으니 주의해야 한다.
다음은 cloudbuild.yaml 이다.
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ["build", "-t", "gcr.io/bustling-walker-196904/test", "."]
- name: 'gcr.io/cloud-builders/docker'
args: ["push", "gcr.io/bustling-walker-196904/test"]
- name: 'gcr.io/cloud-builders/gcloud'
args:
- app
- deploy
- --image-url=gcr.io/bustling-walker-196904/test
여기는 좀 내용이 많이 바뀌었다.
steps 아래에 - name 이런식으로 하면 순차적으로 실행이 되는 구조이다.
3개의 라인을 순차적으로 이해를 하면,
- 먼저 docker 이미지를 생성한다.
- 만든 docker 이미지를 Cloud Registry 로 push 한다.
- 해당 이미지를 이용하여 앱을 배포한다.
의 구조로 이해하면 된다.
마지막으로 Dockerfile을 추가한다.
FROM gcr.io/google-appengine/php71
COPY . /usr/src/app
php7.1 이미지를 가져오는 docker file 이다.
이대로 만들고 소스코드를 수정하고 git push를 하면? 짜잔.
기존과는 다르게 생긴 버전이 배포 되었다.