Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DeNA.go #01 次世代配車アプリ「MOV」 Go事例紹介
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
hami
May 24, 2019
Technology
9.7k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DeNA.go #01 次世代配車アプリ「MOV」 Go事例紹介
DeNA.go #01 での発表資料です
hami
May 24, 2019
More Decks by hami
See All by hami
High memory usage server in Go
subc
0
2.5k
Other Decks in Technology
See All in Technology
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
540
Snowflakeと仲良くなる第一歩
coco_se
4
430
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
160
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
610
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1k
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
370
社内 AI エージェント Synapse と セマンティックレイヤーの育て方
hiroakis
2
1.7k
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
130
Chainlitで作るお手軽チャットUI
ynt0485
0
200
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
220
20260619 私の日常業務での生成 AI 活用
masaruogura
1
120
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
610
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
420
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
RailsConf 2023
tenderlove
30
1.5k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Code Review Best Practice
trishagee
74
20k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Transcript
May 24, 2019 shuhei.ikeda Automotive BU. Smart Taxi Gr. DeNA
Co., Ltd. DeNA.go #01 次世代配車アプリ「MOV」 Go事例紹介
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. •Python
4年 •Ruby 2年 •C# / Erlang / Go1年 MOV リリース1ヶ月後の2018年5月ごろに参加 いまServerSideのTeamLeader 自己紹介 *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. •2018年
4月 神奈川県 地域限定でリリース •2018年 6月 神奈川県 対象エリア拡大 •2018年 12月 東京都 リリース MOV *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved.
Ruby から Go移行 *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. •MOV
server(2019/01 〜) - Go実装 - WebAPI テストあり - 動作確認はChatOpsでE2Eテスト •MOV server(〜 2018/4) - Ruby実装 - WebAPI テストは一部のみ実装済み - 動作確認はPostman MOV SERVERを1年前と比較 *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. *
システム構成 before after
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved.
Why Go? *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. Rubyは開発者の生産性が高いとても良い言語ですが..
圧倒的なサーバスピンアップ速度 GAE/SE Goの圧倒的なサーバスピンアップ速度 5分でアクセス数が10倍になるようなpush通知やTV放送といった爆発的なアクセス増加で も事前準備なしでアクセスを捌きるにはGAE/SE Goが最適だった。 -> Go移行で達成できた メモリ効率の良さ prefork型Web serverでは達成できないメモリ効率の良さ -> goroutineでmany cpu server のリソースを使い切れる Why Go? *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. どうやってRuby
から Go に移行したかはtech blogに記載 MOV タクシー配車アプリ RubyからGolangへ刷新 マイクロサービス化 https://engineer.dena.jp/2019/01/mov-rubygolang.html * How
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved.
Go 事例紹介 *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. Vue.js
+ Express(GAE/SE Node.js) + GAE/SE Go Expressは環境切り替え、IP制限、JWT認証のため利用 * 社内向け管理画面
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. 試行錯誤した結果
UnitTestとhandlerのシナリオテストを書く方式に収束した。 GAE のテスト高速化にはgithub.com/favclip/testerator を利用。 * Test
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. API
Documentの生成 github.com/swaggo/swag を利用 structからsample JSON含んだドキュメントを自動生成でき便利 * 自動生成
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. Slack
Bot コマンドを共有しなくてもSlackのchat履歴から各エンジニアが学んでいくのが良い SlackのReal-Time Messaging APIを利用したbotを構築 ▼ Slackから配車結合テストを実行した例 成功時 失敗時 CHAT OPS *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved.
負荷・障害に強いシステム実現に向けて *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved.
exponential backoff DB接続失敗時のリトライ間隔時間を失敗ごとに徐々に増やして行く。 DB高負荷起因でAppサーバがスケールアウトしDBがコネクション数起因でDBが落ちるこ とを防ぐ。 オートスケールするサーバでRDBを利用するなら入れておいて損はないと思います。 負荷・障害に強いシステム実現に向けて1 *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. 負荷検証の敷居を低く
AWS EC2 + Locustで構築。1営業日あれば負荷が掛けれるようscript化 少しでもリスクあると思ったら負荷検証できるよう敷居をとにかく低くしておく 負荷・障害に強いシステム実現に向けて2 *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved.
fallback 実装 サービス落とすより機能下げ縮退運転する 投入ポイントの見極めが仕様次第で難しいですが刺さると緊急時の銀の弾丸に 緊急シナリオごとにbizと縮退内容を握っておくとよりよい。 - ETA(予想到着時間)システム高負荷で応答ないとき2点間直線距離で近似計算 - 新システム投入初期段階はエラー時旧システムにfallback - 高負荷時に表示する車両台数を減らす 負荷・障害に強いシステム実現に向けて3 *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved.
100倍速めざしてやっていくぞ *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. bot,
WebAPI, gRPCサーバでもシュッと書けてしまうGoの素晴らしさは既に各所で十分語られて いるため省略して.. 車両動態 のポーリングが重いので、gRPC with streaming APIで1サーバで捌ける同 時接続ユーザ数100倍目指してやっていくぞ。 * ポーリングWebAPI の gRPC with streaming API化
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. *
現在
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. *
将来
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved.
PR *
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved. High
memory usage server in Golang メモリに乗り切らない膨大なマスタデータをGolang Serverで高速に効率よく扱うにはどうすれば 良いでしょうか。diskストレージからメモリへのデータ展開はprotobufを利用すると直接mapに変 換でき高速に処理できます。 更新されたdiskストレージ上のマスタデータをロック時間最小でメモリ展開するにはRead/Write ロックを組み合わせHot loadingする手法が有効です。 以上を地理空間データを扱った知見を抽象化して紹介します。 https://fukuoka.gocon.jp/ja/speakers/ikeda.sub/ * Go Conference'19 Summer in Fukuoka 登壇します
* Copyright (C) 2019 DeNA Co.,Ltd. All Rights Reserved.
「DeNA オートモーティブ」「DeNA AI」で検索 • https://dena-automotive.com/ • https://dena.ai/ * We're Hiring !