Google Cloud Platform의 App Engine 개요 및 예제
App Engine이란 App의 Engine이란 뜻으로, 휴대폰 앱을 예로 들자면, 사용자에게는 보이지 않지만 사용자가 입력하는 데이터를 처리하는 Application(App)이라는 의미입니다. 흔히 말하는 backend(백엔드)입니다. 반면 프론트엔드는 사용자가 볼수 있는 사용자 인터페이스를 의미합니다. 화면 상에 보이는 입력창, 버튼, 그림 등을 말합니다.
백엔드는 휴대폰의 앱에 내장되어 있을 수 있습니다. 예를 들어 계산기 앱은 계산을 하는 코드가 앱에 내장되어 있습니다. 그러나 휴대폰에서 처리할 수 없는 정보는 원격 서버에 보내서 처리해야 합니다. 예를 들어 chatgpt 앱은 사용자의 질문에 대한 대답을 앱안에 가지고 있지 않으므로, 그 질문을 openaAI에서 관리하는 서버로 보내면, 서버의 LLM(대규모 언어모델)이 응답을 생성해서 휴대폰으로 돌려줍니다. 그러니까 원격 서버에서 정보를 처리할 필요가 있습니다.
Google Cloud Platform(GCP)의 App Engine은 완전 관리형 서버리스(*1 - 아래 주석을 달았습니다) 애플리케이션 플랫폼으로, 개발자가 서버를 직접 관리할 필요 없이 코드를 배포하고 실행할 수 있도록 지원합니다. App Engine은 요청 트래픽이 늘어나면 서버 수를 자동 확장 기능을 제공하여 트래픽 변화에 따라 서버 수를 자동으로 조절하며, 여러 프로그래밍 언어(Python, Java, Node.js, Go 등)로 코드를 짤 수 있습니다.
*1 완전 관리형 서버리스란 사용자가 서버를 장만할 필요없이 인터넷연결로 원격서버를 이용하며, 구글이 서버를 관리해 주는 것을 말합니다.
아래는 간단한 App Engine 사용 예제입니다.
1. 환경 설정 (*2)
- GCP 콘솔에서 App Engine을 사용설정합니다.
- GCP 프로젝트를 생성하고, App Engine에서 사용할 언어로 Python 을 선택합니다.
- GCP 콘솔에서 아래의 명령으로 Google Cloud SDK와 Flask를 설치합니다.
pip install Flask gunicorn
* 2 구글 글라우드에 계정을 만들면 계정마다 여러 개의 프로젝트들을 생성할 수 있습니다. 하나의 프로젝트 당 한 개의 App Engine을 만들 수 있으며, 사용자는 콘솔(GCP 콘솔)에서 명령어를 사용할 수 있습니다. 콘솔은 계정 당 기본적으로 제공되는 원격서버에서 구동하는 명령어 창입니다. (윈도우의 명령 터미널 창과 같은 것)
2. 간단한 API 서버 코드 (app.py)
아래의 python 코드를 app.py(*3)라는 파이썬 파일을 작성하고, 콘솔의 업로드 기능을 이용하여 원격서버에 파일을 업로드 합니다.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/hello', methods=['GET'])
def hello():
return jsonify({"message": "Hello, App Engine!"})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
*3 위의 코드는 http 요청을 처리하는 웹서버를 시작하는 코드로, http request get 요청을 받으면 “Hello, App Engine!”이라는 문자열을 json 형태로 응답하는 웹 서버의 코드입니다.
3. 배포하기하고 app 실행하기
- 콘솔에서 아래의 내용이 담긴 app.yaml파일을 생성하고 앱을 배포합니다. (App Engine의 설정 파일입니다.)
runtime: python39
entrypoint: gunicorn -b :$PORT app:app
- 콘솔에서 아래 명령어를 실행하면 app을 배포하고 실행이 됩니다.
gcloud app deploy
- 배포가 완료되면 브라우저에서 https://<YOUR_PROJECT_ID>.appspot.com/hello에 접속하여 API가 정상 작동하는지 확인합니다. (*4)
*4 <YOUR_PROJECT_ID>는 프로젝트 생성시 자동 생성되는 프로젝트 고유 문자열입니다.
브라우저로 주소창에 위의 주소를 입력하면 브라우저 화면에 “Hello, App Engine!”이 표시됩니다. 즉, 주소를 주소창에 입력하고 엔터키를 누르면, 앱에 http get 요청이 app으로 전달되며, app은 그 요청에 대한 응답으로 “Hello, App Engine!”라는 문자열을 브라우저로 되돌려주면, 브라우저는 그 문자열을 보여줍니다.
위의 예제에서는 문자열 회신이라는 아주 간단한 정보 처리 예를 보여주었지만, 이보다 복잡한 처리 루틴을 python으로 짤 수 있습니다. 또한 요청에는 사용자가 처리하기를 원하는 정보를 실어서 보내고, 응답에 처리된 결과값을 포함하여 받을 수 있습니다.
이와 같은 방식으로 App Engine을 활용하면 웹브라우저, 모바일 앱, 또는 인터넷에 연결된 장치 등의 단말기가 어떠한 정보 처리 요청을 app에 보낼 수 있고, app은 처리를 마치면 다시 단말기로 응답을 보낼 수 있습니다.
'GreenTam의 생각' 카테고리의 다른 글
클라우드 컴퓨팅: 개념 (2) | 2025.03.08 |
---|---|
경제적 독립의 길 (6) | 2025.03.03 |
직장인으로서의 단상 (1) | 2025.02.17 |