GAEによるPythonWEBアプリケーションの高速開発
by
shimakaze-git
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
ご静聴ありがとうございました!