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
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