GAEによるPythonWEBアプリケーションの高速開発
by
shimakaze-git
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
@shimakaze_soft GAE によるPythonWEB アプリケー ションの⾼速開発 shimakaze_soft WEB エンジニア勉強会 2019-08-30 shimakaze-git
Slide 2
Slide 2 text
BackEnd Enginner しまかぜsoft (@shimakaze_soft) 株式会社 Pasona JOB HUB に所属 DjangoCongressJP スタッフ バックエンドエンジニア( 主にDjango を使⽤) 少しだけインフラエンジニアも兼務 BtoC 向けのサービスを開発 shimakaze_soft ( ⼤島和輝) お前、誰よ?
Slide 3
Slide 3 text
・Google App Engine を⽤いてのPython の WEB アプリケーションの⾼速な開発 今⽇話すこと
Slide 4
Slide 4 text
・Django を⽤いてのGAE による開発⽅法をお話し ます ・GAE のStandard( スタンダード) 環境を使⽤しま すが、Flexible( フレキシブル) は使いません 今回話すことの注意点
Slide 5
Slide 5 text
・Python は軽量プログラミング⾔語の⼀種 ・巷では機械学習やデーター分析系で有名 ・WEB アプリケーションでも普及 ・Django はPython の中では有名なWEB フレームワーク - instagram - connpass Django とは何か? ついでにPython について
Slide 6
Slide 6 text
・GCP のサービスの⼀つで、インフラ上でアプリケー ションを実⾏できるPass ・Heroku みたいなもの、AWS でいうならECS ・単純にアプリケーションをアップロードするだけでア プリケーションを実⾏可能 Google App Engine とは
Slide 7
Slide 7 text
・AWS のECS よりも価格が安い ・Node 、Java 、Ruby 、C# 、Go 、Python 、PHP など のあらゆる⾔語ををサポート ・Standard とFlexible の⼆種類がある Google App Engine の特徴 (1)
Slide 8
Slide 8 text
・Nginx みたいなWEB サーバーが不要になる ・デプロイすると⾃動でstackdriver logging にログを 流す Google App Engine の特徴 (2)
Slide 9
Slide 9 text
Google App Engine Flexible 環境とStandard 環境 の違い
Slide 10
Slide 10 text
Flexible 環境 ・ローカルディスクの書き込み可能 ・Dockerfile によるカスタマイズが可能 ・SSH 接続が可能 Standard 環境 ・⼀部、機能が制限されている ・ローカルディスクの書き込みが不可能 ・インスタンスの起動時間が⼀瞬 ・SSH 接続ができない
Slide 11
Slide 11 text
Google App Engine 実践編
Slide 12
Slide 12 text
$ django-admin startproject sample_django $ cd sample_django $ python manage.py migrate $ touch requirements.txt $ vim requirements.txt # django を導⼊ django==2.2.3 Django のセットアップ (1)
Slide 13
Slide 13 text
$ vim config/settings.py # STATIC 関連の設定 STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') $ python manage.py collecstatic Django のセットアップ (2)
Slide 14
Slide 14 text
$ touch main.py $ vim main.py # GAE で読み込むためのファイルを設定する from sample_django.wsgi import application app = application Django のセットアップ (3)
Slide 15
Slide 15 text
app.yaml AppEngine の動作に必ず必要な基本的なファイル dispatch.yaml cron.yaml ルーティングルールを細く設定する設定ファイル バッチ関連の設定ファイル、設定したスケジュールの 時間帯に特定のURL に対してリクエストを送る Google App Engine 各種設定ファイル
Slide 16
Slide 16 text
動かすランタイムとバージョンの指定 runtime: python37 構成ファイルの書き⽅ (1) app.yaml runtime の設定 python37
Slide 17
Slide 17 text
handlers: - url: / script: auto - url: /static static_dir: static/ 構成ファイルの書き⽅ (2) app.yaml handlers のルーティングの設定
Slide 18
Slide 18 text
handlers: - url: / script: auto (auto にするとmain.py を⾃動で選択) - url: /static static_dir: static/ 構成ファイルの書き⽅ (2) app.yaml handlers のルーティングの設定
Slide 19
Slide 19 text
env_variables: TEST_ENV: 0 構成ファイルの書き⽅ (3) app.yaml env_variables 環境変数の設定
Slide 20
Slide 20 text
・requirements.txt というのはPython のパッケージ 管理ファイル ・以下のコマンドがGAE 内で $ pip install -r requirements.txt requirements.txt の内容を元に⾃動でパッ ケージをインストールする
Slide 21
Slide 21 text
・requirements.txt にgunicorn を加えなくてもいい gunicorn はDjango では定番のアプリケーションサーバ GAE にgunicorn が最初から⼊っている
Slide 22
Slide 22 text
以下のコマンドでデプロイ $ gcloud app deploy -q gcloud app deploy によるデプロイ
Slide 23
Slide 23 text
引数を指定することでyaml ファイルを選択できる $ gcloud app deploy staging-app.yaml gcloud app deploy によるデプロイ
Slide 24
Slide 24 text
https://[ バージョン]-dot-[ プロジェクトID].appspot.com ⾃動でSSL 付きのドメインが振られる
Slide 25
Slide 25 text
Google App Engine 使って後悔したこと
Slide 26
Slide 26 text
・10 分以上かかることも結構ある ・⼤した規模じゃないアプリでもStandard で 3 分ぐらいかかる デプロイ遅い( フレキシブルだと最悪)
Slide 27
Slide 27 text
・デフォルトで設定されているdefault アプリケー ションのみにドメインを切れる ・それ以外のアプリケーションはサブドメインのみ GAE 内でドメイン⼀つしか切れない
Slide 28
Slide 28 text
WebSocket が未対応
Slide 29
Slide 29 text
⾼速開発とか⾔っているけど デプロイ遅くて結構ストレス貯まります
Slide 30
Slide 30 text
・Nginx の設定などが不要 ・インフラの管理が圧倒的に楽 ・結構癖があって制限がある ・デプロイ遅い まとめ
Slide 31
Slide 31 text
ご静聴ありがとうございました!