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

新規サービスでGo, GAEを使ってみた話 とその振り返り

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

新規サービスでGo, GAEを使ってみた話 とその振り返り

Avatar for takuya tsuruda

takuya tsuruda

May 23, 2018
Tweet

Other Decks in Technology

Transcript

  1. Copyright © DeNA Co., Ltd. All Rights Reserved. 自己紹介 2

    ・基本情報 - DeSCヘルスケア - 新卒2年目 - 鶴田拓也(つるだたくや) ・普段してること - カミナル 開発・運用 - サーバサイドエンジニア
  2. Copyright © DeNA Co., Ltd. All Rights Reserved. 今日話すこと 3

    ・DeSCヘルスケアのサービス ・新規で作ったプロダクト ・こんな感じで作りました - Google App Engine(GAE) - Deploy - QA環境の構築 - Analytics - DataStore - BigQuery - DataStudio ・失敗したこと・苦戦したこと
  3. Copyright © DeNA Co., Ltd. All Rights Reserved. DeSCヘルスケアのサービス -

    利用者の健診結果 - 身体データの記録(歩数・体重・血圧 ・血糖値) - 興味関心に沿った健康情報のレコメ ンデーション - ウォーキングイベント開催 - 活動に応じてポイント取得 KenCoM
  4. Copyright © DeNA Co., Ltd. All Rights Reserved. DeSCヘルスケアのサービス -

    歩数管理 - 1対1のデイリー歩数バトル - 健保内での月間歩数ランキング - KenCoMポイントの獲得 さんぽジスタ
  5. Copyright © DeNA Co., Ltd. All Rights Reserved. カミナルとは 9

    ・歩いたら - 1日8000歩以上 - 週に4日以上 ・ご褒美 - コーヒー - アイス ・2017/10 ~ - 開発開始 ・2018/03 ~ - トライアルスタート
  6. Copyright © DeNA Co., Ltd. All Rights Reserved. こんな感じで作りました ・GAE

    + Go + Datastore ・net/http + GAE libraly ・gorilla/mux, urfave/negroni, pkg/error ….
  7. Copyright © DeNA Co., Ltd. All Rights Reserved. こんな感じで作りました 13

    ・GAE - サクッと作ってサクッと潰す - 社内の知見を増やす - 使ってみたかった ・Go - Standard EnvironmentでRails使えない - Go使ってみたかった
  8. Copyright © DeNA Co., Ltd. All Rights Reserved. ~Deploy~ 16

    f/branch_a f/branch_b f/branc_c QA push push push
  9. Copyright © DeNA Co., Ltd. All Rights Reserved. ~Deploy~ 17

    f/branch_a f/branch_b f/branch_c version: version: version: QA https://f-branch-a-dot.com - branch毎に環境が作 成される https://f-branch-b-dot.com https://f-branch-c-dot.com
  10. Copyright © DeNA Co., Ltd. All Rights Reserved. ~Deploy~ 18

    f/branch_a f/branch_b f/branch_c version: version: version: QA https://f-branch-a-dot.com - debugモードで向き先を 変更できるように
  11. Copyright © DeNA Co., Ltd. All Rights Reserved. 歩数送信の流れ 5/21

    5/22 12:00 12:00 7000 8000 7000 ①送る! ②8000歩 確定!! 5/21の歩数 ③送る! 8000 23:59
  12. Copyright © DeNA Co., Ltd. All Rights Reserved. 歩数送信の流れ 5/21

    5/22 12:00 12:00 7000 8000 7000 7000 ①送る! ②8000歩 確定!! 5/21の歩数 ③送る! 23:59
  13. Copyright © DeNA Co., Ltd. All Rights Reserved. 歩数取得失敗の原因 5/21の実際の歩数

    5/21 12:00 5/21 23:59 5/22 12:00 7000 8000 8000 歩数の書き込み ヘルスケアから 取得 7000歩を送る 歩数の書き込み ヘルスケアから 取得 8000歩を送る 7000歩 8000歩
  14. Copyright © DeNA Co., Ltd. All Rights Reserved. 歩数取得失敗の原因 7000

    8000 8000 歩数の書き込み ヘルスケアから 取得 7000歩を送る 歩数の書き込み ヘルスケアから 取得 7000歩を送る 歩数の書き込み 5/21 12:00 5/21 23:59 5/22 12:00 7000歩 7000歩 5/21の実際の歩数
  15. Copyright © DeNA Co., Ltd. All Rights Reserved. ヘルスケアの歩数情報 ヘルスケへの追加日⇨

    終了時間⇨ ヘルスケア⇨今日⇨歩数⇨全てのデー タを表示 差分
  16. Copyright © DeNA Co., Ltd. All Rights Reserved. 歩数取得失敗の原因 7000

    8000 8000 歩数の書き込み ヘルスケアから 取得 7000歩を送る 歩数の書き込み ヘルスケアから 取得 7000歩を送る 歩数の書き込み 5/21 12:00 5/21 23:59 5/22 12:00 7000歩 7000歩 5/21の実際の歩数 差分
  17. Copyright © DeNA Co., Ltd. All Rights Reserved. 歩数取得できない原因 差分

    歩数が更新されてからヘルスケアに書き込まれ るまでラグがある カミナルが最新の歩数を取得できない 前日の歩数をポストするが、最新の歩数とは限ら ない 目標を達成しているのに、不達成になってしまう
  18. Copyright © DeNA Co., Ltd. All Rights Reserved. 歩数問題への対応 ・対応

    - 判定結果が失敗の場合は最大1週間待つ - 端末側でヘルスケアへの導線を追加 - ヘルスケアを開くと歩数が書き込まれるた め
  19. Copyright © DeNA Co., Ltd. All Rights Reserved. 失敗例 Do

    not store Contexts inside a struct type; instead, pass a Context explicitly to each function that needs it. The Context should be the first parameter, typically named ctx: Go Doc - Package context
  20. Copyright © DeNA Co., Ltd. All Rights Reserved. 理由 struct

    をリクエストスコープと紐づけて状態として管理してしまっている ので 別のリクエストスコープから struct を利用できてしまい キャンセル情報が伝搬されない(メモリリークの可能性)
  21. Copyright © DeNA Co., Ltd. All Rights Reserved. まとめ ・Go,

    GAEでサクッと構築 ・Datastore, BQ, DataStudio で BI 構築 ・端末からの歩数は最新のものとは限らない ・アンチパターン踏んじゃった