Slide 1

Slide 1 text

SpoLiveの爆速開発を支える GAE/Goノウハウ NTT Engineers Festa #3 Hisayuki Matsuki   Twitter: @matskhs

Slide 2

Slide 2 text

about me ● 松木久幸(@mtskhs) ○ Backend Engineer / Gopher ○ NTT Resonant / NTT Communications ○ EC => スポーツAI解説サービス(SpoLive) ○ Agile (シリコンバレーで3ヶ月働いて体感した自立型組織のススメ) ■ https://speakerdeck.com/matsu0228/organizationtheory-of-engineering ○ Agile Testing Days 2018 レポート ■ https://speakerdeck.com/matsu0228/report-of-agiletestingdays2018 2

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

SpoLive ラグビー国際試合にも対応しました 4

Slide 5

Slide 5 text

SpoLive Architecture • expo / Firebase / GCP+Go Go Compute Engine (GCE) App Engine (GAE) 5

Slide 6

Slide 6 text

Contents ● 話すこと ○ #1 GAE について ○ #2 実装パターン 6

Slide 7

Slide 7 text

#1 about GAE ● 対応言語: Java, Node.js, Python, C#, .Net, Ruby, Go ● StandardとFlexibleの2種類あるが、Standardについて触れる ○ スケールアウト ○ ミドルの運用不要 ○ 監視まで提供されている ○ カスタムドメイン+SSL 7 https://cloud.google.com/appengine/docs/whatisgoogleappengine?hl=ja

Slide 8

Slide 8 text

#1 about GAE • サーバレス・スケーリング(瞬間スケールアウト) 8 https://speakerdeck.com/googlecloudjapan/deep-dive-into-google-cloud-technology?slide=31

Slide 9

Slide 9 text

#1 about GAE ● ミドルの運用不要 ○ log: google.golang.org/appengine/log ○ memcache: google.golang.org/appengine/memcache 9

Slide 10

Slide 10 text

#1 about GAE ● ミドルの運用不要 ○ log: google.golang.org/appengine/log 10

Slide 11

Slide 11 text

#1 about GAE ● ミドルの運用不要 ○ memcache: google.golang.org/appengine/memcache 11

Slide 12

Slide 12 text

#1 about GAE ● 監視もStackDriverで ○ ログの監視 ○ エンドポイントの監視 ○ (GCE) プロセス監視 / メトリクス監視 ● Alert送信も選択肢豊富 12

Slide 13

Slide 13 text

#1 about GAE ● GAEだとサイト移転時のRedirectも楽々 ○ カスタムドメイン+SSL ○ Redirect Server by Go 13

Slide 14

Slide 14 text

#2 implement pattern of Go ● データ連携バッチ ○ スポーツごとのデータソースからfirebaseへ保存する ○ optionでデータソースを指定できる ○ firebase側のスキーマや、一般的なビジネスロジックは共通 化 14 . ├── main.go ├── Makefile ├── cmd/ # サブコマンド毎のmain処理 │ ├── root.go │ ├── rugby_**source1**.go │ └── rugby_worldcup.go ├── infrastructure/ # datasorce毎の具体処理 / firebase保存処 理 │ ├── firebase.go │ └── rugby_**source1**.go ├── usecase/ # ビジネスロジック / スキーマ │ └── rugby_entity.go └── testdata/ Clean Architecture 達人に学ぶソフト ウェアの構造と設計 https://www.amazon.co.jp/dp/B07FSBHS2V/ref=cm_sw_e m_r_mt_dp_U_89xFDbZSR01SJ

Slide 15

Slide 15 text

#2 implement pattern of Go ● 拡張性・テストコストを低くする実装を心がける 15

Slide 16

Slide 16 text

#2 implement pattern of Go ● logging ミドルウェア ○ リクエスト毎のクエリ・処理時間のロギング 16

Slide 17

Slide 17 text

Summary ● GAEだと、いろいろ楽 ○ スケールアウト、ミドルの運用不要、監視、カスタムドメイ ン+SSL ● 実装パターンの紹介 ○ package構成 ○ 拡張性・テスト容易性を考慮した実装 ○ loggingミドルウェア 17