Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DeNA.go #01 次世代配車アプリ「MOV」 Go事例紹介
Search
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.6k
Other Decks in Technology
See All in Technology
局所最適は悪ではない。壊れているのは指標です。量と質を同時に見る先行指標の設計
recruitengineers
PRO
2
1.2k
「作れる」と「リリースできる」の間にあったもの── PdMを外して見えた、PdMがやるべき仕事/Buildable ≠ Shippable: What Removing the PM Taught Me About the PM’s Job
yappli_developers
0
280
生成AI時代、PMは事業責任者に進化するともっと面白い〜PMだからこそ事業構造を動かせる時代に〜
kakehashi
PRO
0
870
Microsoft のサポート ライフサイクルを理解する
murachiakira
PRO
0
210
Filter What the LLM Reads: RAG Governance with AgentCore Gateway
yakumo
0
110
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
130
スクラム祭り2026福井トラック_閉じたループから価値のスパイラルへ
kc_nakanishi
0
170
BacklogのRAG 今ならこう作る - S3 Vectorsと自前パイプラインの勘所
revsystem
0
140
AIコーディングを実践してきた1年を振り返る / Looking Back on a Year of Practicing AI Coding
takedatakashi
1
140
【データ横丁主催】AI エージェント時代のTranslytical Data Platform
shisyu_gaku
0
300
AWS Continuum for Penetration Testing に Deep Dive してみる
asanoharuki
1
1.4k
データマネジメント × 法務で作りあげる、 freeeの新しいデータガバナンスへの軌跡
freee
PRO
1
430
Featured
See All Featured
Side Projects
sachag
456
43k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
960
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
The Curse of the Amulet
leimatthew05
3
16k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
350
Music & Morning Musume
bryan
48
7.5k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
720
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
630
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
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 !