Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SpoLiveの爆速開発を支えるGAE/Goノウハウ / Practice of GAE&Go...

mtskhs
September 17, 2019

SpoLiveの爆速開発を支えるGAE/Goノウハウ / Practice of GAE&Go supporting SpoLive super fast development

NTTグループ内の勉強会である、NTT Engineers’ Festa #3におけるLT資料。
スマートフォン向けのスポーツ解説アプリSpoLive(https://spo.live/)の開発で、バックエンドを担っている筆者による、GAEやGoによるノウハウの共有
GAEで開発・運用していて便利な機能として、スケールアウト・ミドル・監視・カスタムドメインやSSLについて紹介し、
Goのpackage構成や、拡張性・テスト容易性を考慮した実装、APIサーバーのloggingミドルウェアについて紹介する。

mtskhs

September 17, 2019
Tweet

More Decks by mtskhs

Other Decks in Technology

Transcript

  1. 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
  2. 3

  3. #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
  4. #1 about GAE • 監視もStackDriverで ◦ ログの監視 ◦ エンドポイントの監視 ◦

    (GCE) プロセス監視 / メトリクス監視 • Alert送信も選択肢豊富 12
  5. #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