Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GAEによるPythonWEBアプリケーションの高速開発
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
shimakaze-git
August 30, 2019
Programming
3.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GAEによるPythonWEBアプリケーションの高速開発
shimakaze-git
August 30, 2019
More Decks by shimakaze-git
See All by shimakaze-git
DjangoとFastAPIによる 実践認証技術
shimakaze_soft
0
1.2k
フロントエンドとバックエンドのコミュニケーションをスムーズにするスキーマ駆動開発
shimakaze_soft
2
590
クリーンアーキテクチャのリポジトリパターン - Pythonでの実装
shimakaze_soft
1
6.3k
lt20221030.pdf
shimakaze_soft
0
190
Dependabotを使って 運用しているおはなし
shimakaze_soft
0
2.3k
DjangoCongressJP 2019/2020 & 今年にPyConJP初登壇できたはなし
shimakaze_soft
0
480
FlaskとDjango以外のAPI開発の選択肢
shimakaze_soft
0
550
Python で Dependency Injection(DI) をやるには?
shimakaze_soft
1
3.8k
FalconAPI開発にいいよ!
shimakaze_soft
0
780
Other Decks in Programming
See All in Programming
すこし踏み込む CancellationToken
htkym
2
720
速習iPhone Duo対応
yuukiw00w
1
710
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
250
FreeBSDでZabbixを動かす
kenkino
0
310
Intent as Code
shoppingjaws
6
1.1k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
380
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
290
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
530
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.3k
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.9k
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
380
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
230
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
910
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Unsuck your backbone
ammeep
672
58k
Transcript
@shimakaze_soft GAE によるPythonWEB アプリケー ションの⾼速開発 shimakaze_soft WEB エンジニア勉強会 2019-08-30 shimakaze-git
BackEnd Enginner しまかぜsoft (@shimakaze_soft) 株式会社 Pasona JOB HUB に所属 DjangoCongressJP
スタッフ バックエンドエンジニア( 主にDjango を使⽤) 少しだけインフラエンジニアも兼務 BtoC 向けのサービスを開発 shimakaze_soft ( ⼤島和輝) お前、誰よ?
・Google App Engine を⽤いてのPython の WEB アプリケーションの⾼速な開発 今⽇話すこと
・Django を⽤いてのGAE による開発⽅法をお話し ます ・GAE のStandard( スタンダード) 環境を使⽤しま すが、Flexible( フレキシブル)
は使いません 今回話すことの注意点
・Python は軽量プログラミング⾔語の⼀種 ・巷では機械学習やデーター分析系で有名 ・WEB アプリケーションでも普及 ・Django はPython の中では有名なWEB フレームワーク -
instagram - connpass Django とは何か? ついでにPython について
・GCP のサービスの⼀つで、インフラ上でアプリケー ションを実⾏できるPass ・Heroku みたいなもの、AWS でいうならECS ・単純にアプリケーションをアップロードするだけでア プリケーションを実⾏可能 Google App
Engine とは
・AWS のECS よりも価格が安い ・Node 、Java 、Ruby 、C# 、Go 、Python 、PHP
など のあらゆる⾔語ををサポート ・Standard とFlexible の⼆種類がある Google App Engine の特徴 (1)
・Nginx みたいなWEB サーバーが不要になる ・デプロイすると⾃動でstackdriver logging にログを 流す Google App Engine
の特徴 (2)
Google App Engine Flexible 環境とStandard 環境 の違い
Flexible 環境 ・ローカルディスクの書き込み可能 ・Dockerfile によるカスタマイズが可能 ・SSH 接続が可能 Standard 環境 ・⼀部、機能が制限されている
・ローカルディスクの書き込みが不可能 ・インスタンスの起動時間が⼀瞬 ・SSH 接続ができない
Google App Engine 実践編
$ 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)
$ vim config/settings.py # STATIC 関連の設定 STATIC_URL = '/static/' STATIC_ROOT
= os.path.join(BASE_DIR, 'static') $ python manage.py collecstatic Django のセットアップ (2)
$ touch main.py $ vim main.py # GAE で読み込むためのファイルを設定する from
sample_django.wsgi import application app = application Django のセットアップ (3)
app.yaml AppEngine の動作に必ず必要な基本的なファイル dispatch.yaml cron.yaml ルーティングルールを細く設定する設定ファイル バッチ関連の設定ファイル、設定したスケジュールの 時間帯に特定のURL に対してリクエストを送る Google
App Engine 各種設定ファイル
動かすランタイムとバージョンの指定 runtime: python37 構成ファイルの書き⽅ (1) app.yaml runtime の設定 python37
handlers: - url: / script: auto - url: /static static_dir:
static/ 構成ファイルの書き⽅ (2) app.yaml handlers のルーティングの設定
handlers: - url: / script: auto (auto にするとmain.py を⾃動で選択) -
url: /static static_dir: static/ 構成ファイルの書き⽅ (2) app.yaml handlers のルーティングの設定
env_variables: TEST_ENV: 0 構成ファイルの書き⽅ (3) app.yaml env_variables 環境変数の設定
・requirements.txt というのはPython のパッケージ 管理ファイル ・以下のコマンドがGAE 内で $ pip install -r
requirements.txt requirements.txt の内容を元に⾃動でパッ ケージをインストールする
・requirements.txt にgunicorn を加えなくてもいい gunicorn はDjango では定番のアプリケーションサーバ GAE にgunicorn が最初から⼊っている
以下のコマンドでデプロイ $ gcloud app deploy -q gcloud app deploy によるデプロイ
引数を指定することでyaml ファイルを選択できる $ gcloud app deploy staging-app.yaml gcloud app deploy
によるデプロイ
https://[ バージョン]-dot-[ プロジェクトID].appspot.com ⾃動でSSL 付きのドメインが振られる
Google App Engine 使って後悔したこと
・10 分以上かかることも結構ある ・⼤した規模じゃないアプリでもStandard で 3 分ぐらいかかる デプロイ遅い( フレキシブルだと最悪)
・デフォルトで設定されているdefault アプリケー ションのみにドメインを切れる ・それ以外のアプリケーションはサブドメインのみ GAE 内でドメイン⼀つしか切れない
WebSocket が未対応
⾼速開発とか⾔っているけど デプロイ遅くて結構ストレス貯まります
・Nginx の設定などが不要 ・インフラの管理が圧倒的に楽 ・結構癖があって制限がある ・デプロイ遅い まとめ
ご静聴ありがとうございました!