본문 바로가기
  • 클라우드야 나랑 친해지자!
클라우드/GCP

App Engine : 완전 관리형 애플리케이션

by 정민규 2021. 2. 8.
반응형

수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다

개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

 

잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!


교재 <구글 클라우드 플랫폼 인 액션> 을 토대로 실습을 진행했습니다.

 

 

 

 

출처 : 위키백과

구글 앱 엔진(Google App Engine, GAE)은 구글에서 제공하는 서비스 중 하나이며, 웹 응용 프로그램을 PHP · Python · Java · Go 언어를 사용하여 개발하고 구글의 인프라에서 실행하고 버전 관리할 수 있다. 구글 클라우드 플랫폼의 일부이다.

 

- 출처 : 위키백과 -

 

 

* App Engine Standard

 

* [방법1] App Engine으로 초간단 웹서버 만들기

 

App Engine > 대시보드 > 만들기 > 언어:Python > Cloud Shell 선택 > Shell에 코드 작성 > 웹 미리보기 ( 8080포트에서 미리보기 ) > 'Hello World!' 가 출력됨

 

 

터미널에 입력할 내용 ( Shell에 코드 작성 )

 

$git clone https://github.com/GoogleCloudPlatform/python-docs-samples

$cd python-docs-samples/appengine/standard_python3/hello_world

$virtualenv --python python3 ~/envs/hello_world

$source ~/envs/hello_world/bin/actiave

$pip install -r requirements.txt

$python3 main.py

 

 

웹 미리보기

 

 

 

 

 

* [방법2] App Engine으로 초간단 웹서버 만들기

 

터미널에 계속해서 진행합니다. 경로 ( /python-docs-samples/appengine/standard_python3/hello_world )

 

gcloud auth login > 링크 접속 후 계정 로그인하고 권한 허용 클릭 > gcloud config set project [프로젝트ID] > gcloud app create > gcloud app deploy app.yaml --project [프로젝트ID]

 

 

-> https://[프로젝트ID].appspot.com/  으로 검색하면 웹에 Hello World! 가 출력되는 것을 확인할 수 있습니다.

 

 

내용을 바꾸고 싶다면 vi main.py 실행 후 return 부분에 출력할 내용을 입력하시면 됩니다.

다시 gcloud app deploy app.yaml --project [프로젝트ID] 실행 후 웹에 접속해보면 바뀐 내용이 출력됩니다.

 

 

 

 

 

 

 

* App Engine Flex

 

App Engine 의 터미널에서 시작합니다.

 

* 패키지 정의 및 필요 종속성 설정

 

$mkdir default-flex
$cd default-flex
$npm init

모든 설정 Enter

$npm install express

 

* "Hellow, world!" 애플리케이션 정의하는 스크립트 작성

 

$vi app.js 에 아래 스크립트를 작성 후

 

github.com/Jpub/GCP/blob/master/Chapter_11/list11.6.js

 

Jpub/GCP

<구글 클라우드 플랫폼 인 액션> 리포지토리. Contribute to Jpub/GCP development by creating an account on GitHub.

github.com

 

$node app.js 를 실행하면, 아래와 같이 출력되면서 포트가 열린 것을 확인할 수 있습니다.

 

 

새로운 터미널을 열고

$curl http://localhost:8080 을 실행하면

Hello from App Engine Flex! 가 출력됨을 확인하실 수 있습니다!

 

 

이제 코드가 작동하는지 확인했으므로 App Engine에 다시 배포할 수 있습니다.

이전과 마찬가지로 App Engine에 코드 실행 방법을 설정해야 합니다.

App Engine 표준과 마찬가지로 app.yaml이라는 파일에 구성 옵션을 추가합니다.

 

-> 가장 큰 차이점은 Flex 기반 애플리케이션이 도커를 기반으로 하기 때문에 app.yaml에 넣은 구성이 훨씬 덜 복잡하다는 것입니다.

 

 

$vi app.yaml 실행 후 아래 내용을 저장합니다.

runtime: nodejs
env: flex
service: default

 

보다시피 이 구성 파일은 App Engine Standard에 애플리케이션을 빌드할 때 사용한 구성 파일보다 훨씬 간단합니다.

App Engine Flex는 코드를 가져와서 컨테이너에 넣는 방법만 알면 됩니다.

라우팅 정보를 설정하는 대신 App Engine에 서버 시작 방법을 알려줘야 합니다.

 

$vi package.json 실행 후 아래 내용을 저장합니다.

{
 "name": "default-flex",
 "version": "1.0.0",
 "main": "index.js".
 "license": "MIT",
 "dependencies": {
   "express": "^4.17.1"
   },
   "scripts": {
     "start": "node app.js"
     }
}

 

 

 

* App Engine Flex에 배포

 

 

App Engine Flex에 애플리케이션을 배포하는 것은 App Engine Standard에 배포하는 것과 유사합니다.

 

첫 번째 차이점은 배포를 완료하는 데 약간 시간이 거린다는 점입니다.

App Engine Flex는 애플리케이션 코드에서 도커 컨테이너를 만들어 구글 클라우드에 업로드하고, Compute Engine VM 인스턴스를 프로비저닝하고, 해당 인스턴스에서 컨테이너를 시작하기 때문에 더 많은 시간이 소요됩니다.

 

App Engine Standard를 사용하는 경우보다 훨씬 더 많은 작업을 수행할 수 있지만, 프로세스 자체는 동일하므로 gcloud 명령줄 도구로 수행할 수 있습니다.

 

 

$gcloud app deploy ../default-flex 명령어를 실행해 애플리케이션에 배포한 후,

App Engine Standard에서 애플리케이션을 테스트한 것과 동일한 방식으로 작동하는지 테스트할 수 있습니다.

 

$curl https://PROJECT-ID.appspot.com/ 명령어를 실행하면

Hello from App Engine Flex! 가 출력되는 것을 확인할 수 있습니다.

 

반응형

댓글