KEMBAR78
Daftar
Login
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev] | PPTX
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
DeNA
PPTX, PDF
9,660 views
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
DeNAのオートモーティブ事業本部スマートタクシー事業部システム開発部 部長 惠良 和隆 が 2019/10/31 に MOBILITY:dev で 登壇した内容をご紹介します。
Automotive
◦
Read more
4
Save
Share
Embed
Download
Downloaded 13 times
1
/ 58
2
/ 58
3
/ 58
4
/ 58
5
/ 58
6
/ 58
7
/ 58
8
/ 58
9
/ 58
10
/ 58
11
/ 58
12
/ 58
13
/ 58
14
/ 58
15
/ 58
16
/ 58
17
/ 58
18
/ 58
19
/ 58
20
/ 58
21
/ 58
22
/ 58
23
/ 58
24
/ 58
25
/ 58
26
/ 58
27
/ 58
28
/ 58
29
/ 58
30
/ 58
31
/ 58
32
/ 58
33
/ 58
34
/ 58
35
/ 58
36
/ 58
37
/ 58
38
/ 58
39
/ 58
40
/ 58
41
/ 58
42
/ 58
43
/ 58
44
/ 58
45
/ 58
46
/ 58
47
/ 58
48
/ 58
49
/ 58
50
/ 58
51
/ 58
52
/ 58
53
/ 58
54
/ 58
55
/ 58
56
/ 58
57
/ 58
58
/ 58
More Related Content
PDF
『SHOWROOM』の大規模化に伴う技術課題のソリューション ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~
by
DeNA
PDF
Microsoft License の基本
by
祥子 松山
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PPTX
OpenWRTとIPv6で高速インターネット!
by
KageShiron
PDF
Tackling Complexity
by
Yoshitaka Kawashima
PPTX
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
by
Tokoroten Nakayama
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
PDF
Pythonによる黒魔術入門
by
大樹 小倉
『SHOWROOM』の大規模化に伴う技術課題のソリューション ~演者・視聴者の熱量を支える負荷対策、HTML5対応など~
by
DeNA
Microsoft License の基本
by
祥子 松山
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
OpenWRTとIPv6で高速インターネット!
by
KageShiron
Tackling Complexity
by
Yoshitaka Kawashima
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
by
Tokoroten Nakayama
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
Pythonによる黒魔術入門
by
大樹 小倉
What's hot
PDF
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
by
モノビット エンジン
PDF
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
by
VirtualTech Japan Inc.
PDF
DeNAの大規模ライブ配信基盤を支える技術
by
DeNA
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
by
日本マイクロソフト株式会社
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
AWSではじめるMLOps
by
MariOhbuchi
PDF
Python 3.9からの新定番zoneinfoを使いこなそう
by
Ryuji Tsutsui
PDF
データドリフトの紹介
by
Sho Tanaka
PPTX
Apache Avro vs Protocol Buffers
by
Seiya Mizuno
PDF
インフラCICDの勘所
by
Toru Makabe
PDF
Data-Centric AIの紹介
by
Kazuyuki Miyazawa
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
by
Amazon Web Services Japan
PPTX
今さら聞けない人のためのDevOps超入門
by
VirtualTech Japan Inc.
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
by
sairoutine
PDF
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
by
Amazon Web Services Japan
PDF
NTT研究所におけるYammerの取り組みと、社内Twitterの統計解析
by
Tokoroten Nakayama
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
by
DeNA
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
PPTX
マイクロサービスにおける非同期アーキテクチャ
by
ota42y
PPTX
オートモーティブ領域における 位置情報関連アルゴリズムあれこれ
by
DeNA
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
by
モノビット エンジン
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
by
VirtualTech Japan Inc.
DeNAの大規模ライブ配信基盤を支える技術
by
DeNA
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
by
日本マイクロソフト株式会社
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
AWSではじめるMLOps
by
MariOhbuchi
Python 3.9からの新定番zoneinfoを使いこなそう
by
Ryuji Tsutsui
データドリフトの紹介
by
Sho Tanaka
Apache Avro vs Protocol Buffers
by
Seiya Mizuno
インフラCICDの勘所
by
Toru Makabe
Data-Centric AIの紹介
by
Kazuyuki Miyazawa
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
by
Amazon Web Services Japan
今さら聞けない人のためのDevOps超入門
by
VirtualTech Japan Inc.
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
by
sairoutine
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
by
Amazon Web Services Japan
NTT研究所におけるYammerの取り組みと、社内Twitterの統計解析
by
Tokoroten Nakayama
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
by
DeNA
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
マイクロサービスにおける非同期アーキテクチャ
by
ota42y
オートモーティブ領域における 位置情報関連アルゴリズムあれこれ
by
DeNA
More from DeNA
PPTX
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
by
DeNA
PPTX
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
by
DeNA
PPTX
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...
by
DeNA
PDF
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
by
DeNA
PPTX
クラウド環境でのセキュリティ監査自動化【DeNA TechCon 2020 ライブ配信】
by
DeNA
PPTX
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
by
DeNA
PDF
仕様起因の手戻りを減らして開発効率アップを目指すチャレンジ 【DeNA TechCon 2020 ライブ配信】
by
DeNA
PPTX
DeNA データプラットフォームにおける 自由と統制のバランス【DeNA TechCon 2020 ライブ配信】
by
DeNA
PPTX
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】
by
DeNA
PDF
MOV の機械学習システムを支える MLOps 実践【DeNA TechCon 2020 ライブ配信】
by
DeNA
PDF
コンピュータビジョン技術の実応用〜DRIVE CHARTにおける脇見・車間距離不足検知〜【DeNA TechCon 2020 ライブ配信】
by
DeNA
PDF
DeNA の Slack 導入と活用の事例紹介
by
DeNA
PPTX
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]
by
DeNA
PPTX
後部座席タブレットにおけるMaaS時代を見据えた半歩先のUX設計」 [MOBILITY:dev]
by
DeNA
PPTX
ドライブレコーダ映像からの3次元空間認識 [MOBILITY:dev]
by
DeNA
PPTX
MOV お客さま探索ナビの GCP ML開発フローについて
by
DeNA
PPTX
課題ドリブン、フルスタックAI開発術 [MOBILITY:dev]
by
DeNA
PPTX
DeNA の AWS アカウント管理とセキュリティ監査自動化
by
DeNA
PPTX
DeNAのQCTマネジメント IaaS利用のベストプラクティス [AWS Summit Tokyo 2019]
by
DeNA
PPTX
知っててもいいかもしれない知財のこと(抜粋版)
by
DeNA
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
by
DeNA
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
by
DeNA
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...
by
DeNA
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
by
DeNA
クラウド環境でのセキュリティ監査自動化【DeNA TechCon 2020 ライブ配信】
by
DeNA
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
by
DeNA
仕様起因の手戻りを減らして開発効率アップを目指すチャレンジ 【DeNA TechCon 2020 ライブ配信】
by
DeNA
DeNA データプラットフォームにおける 自由と統制のバランス【DeNA TechCon 2020 ライブ配信】
by
DeNA
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】
by
DeNA
MOV の機械学習システムを支える MLOps 実践【DeNA TechCon 2020 ライブ配信】
by
DeNA
コンピュータビジョン技術の実応用〜DRIVE CHARTにおける脇見・車間距離不足検知〜【DeNA TechCon 2020 ライブ配信】
by
DeNA
DeNA の Slack 導入と活用の事例紹介
by
DeNA
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]
by
DeNA
後部座席タブレットにおけるMaaS時代を見据えた半歩先のUX設計」 [MOBILITY:dev]
by
DeNA
ドライブレコーダ映像からの3次元空間認識 [MOBILITY:dev]
by
DeNA
MOV お客さま探索ナビの GCP ML開発フローについて
by
DeNA
課題ドリブン、フルスタックAI開発術 [MOBILITY:dev]
by
DeNA
DeNA の AWS アカウント管理とセキュリティ監査自動化
by
DeNA
DeNAのQCTマネジメント IaaS利用のベストプラクティス [AWS Summit Tokyo 2019]
by
DeNA
知っててもいいかもしれない知財のこと(抜粋版)
by
DeNA
MOVで実践したサーバーAPI実装の超最適化について [MOBILITY:dev]
1.
MOVで実践したサーバーAPI実装 の超最適化 株式会社ディー・エヌ・エー オートモーティブ事業本部 スマートタクシー事業部システム開発部 部長 惠良和隆
2.
自己紹介 2002年新卒でコンシューマゲーム開発会社に入社し、家庭用ゲーム機向けゲームタイトルの 開発に携わりながら、開発環境やフレームワークの構築に従事する。 2013年10月、ゲーム以外のBtoCサービスに携わるべくDeNAに中途入社する。しかしながら、 スマホ向けゲームのネイティブアプリ化待ったなしの状況において、基盤技術の構築とゲーム 開発力向上のためにゲーム事業にフルコミットすることからスタートする。 2018年7月、オートモーティブ事業本部に異動。AWS IoTを使ったプローブデータ収集システ ムの開発・保守、地図データ整備、移動体情報配信システムの開発などに携わる。 2019年4月MOVのシステム開発担当部門の部長に就任し、マネジメントしつつ自らも開発に 携わる(現在は、APIサーバーと乗務員アプリ)。 惠良 和隆(えら
かずたか)
3.
3 みなさん、 タクシーに乗ってますか?
4.
MOVとは? • DeNAが提供するタクシー配車アプリ • ITのチカラでタクシー利用を進化させるサービス •
神奈川、東京、大阪、京都にサービス展開 • 近くのタクシーがすぐに来る • 車輌ステータスのモニタリングすることにより、 呼べるタクシー車輌を選んで配車している 4 ※MOVのシステムの詳細は、DeNA TechCon2019 の 『次世代タクシー配車サービス「MOV」を支える車載ハードウェアとソフトウェアの話」 を参照ください
5.
5 MOVでは、呼び出すタクシーを どのように選択しているのか?
6.
(1) ユーザーの指定した迎車地に近い車輌を見つける 6 X m
7.
(2) 呼べる状態の車輌のみを選別 7 例:すでにお客様が乗 車中の車輌を除く
8.
(3) 各車輌から迎車地までの到着予想時間を算出 8 10分 3分 12分 4分 8分 7分
9.
(3) 各車輌から迎車地までの到着予想時間を算出 9 10分 3分 12分 4分 8分 7分 最も早く到着する車輌 に配車依頼を送信する
10.
呼べる状態の車輌とは? • 空車であること • タクシーの所属する交通圏に迎車地が含まれていること •
休憩中など、MOV配車受付停止中でないこと • 駅などのタクシー乗り場で、お客様を待つ列に並んでいな いこと(駅待ちしていないこと) 10
11.
呼べる状態の車輌とは? • 空車であること • タクシーの所属する交通圏に迎車地が含まれていること •
休憩中など、MOV配車受付停止中でないこと • 駅などのタクシー乗り場で、お客様を待つ列に並んでいな いこと(駅待ちしていないこと) 11
12.
呼べる状態の車輌とは? • 空車であること • タクシーの所属する交通圏に迎車地が含まれていること •
休憩中など、MOV配車受付停止中でないこと • 駅などのタクシー乗り場で、お客様を待つ列に並んでいな いこと(駅待ちしていないこと) 12 駅待ちしていないことをどうやって判断するか?
13.
タクシー乗り場を含む特定エリア内にいるか? 13 このエリア内にいる場合は、 駅待ちしていると判断する ©OpenStreetMap contributors
14.
14 タクシーを呼べない場所があるって ご存知ですか?
15.
タクシーを呼べない場所 • そもそも車が進入できない場所 • 車輌侵入禁止区域 •
歩行者天国となっている道路 • お祭りや花火などのイベントによる交通規制区域 • 駅や空港、病院などの施設のタクシー乗り場 • すべてのタクシーが乗り入れることが出来ない場所もある • 交通渋滞緩和のための自主規制 • お客様を乗せる順番は、タクシーの並び順に従うのが通常であり、 呼ばれたからと言って列に並ばずにお客様を乗せるとトラブルの 原因になりかねない 15
16.
MOVでの対応は? • 迎車地点として設定できないようにしている 16 アプリ内で迎車地として 指定できないエリアを表 示して、その旨を利用者 にお知らせする
17.
タクシー配車における必須処理 • ポリゴンで定義された配車禁止エリアに、タクシー車輌や 迎車地が含まれるかどうか? • そもそも迎車地がサービス圏内かどうか? 17 Point-In-Polygon判定 ポリゴンの中に任意の点が含まれるかどうか
18.
本日お話する内容 • タクシー配車における必須処理 • Point-In-Polygon判定のための方法 •
超最適化の手法 • まとめ 18
19.
Point-In-Polygon判定の手法 • アルゴリズムには様々なものがあるが、いずれかを自前実 装する or
実装されたライブラリを利用する • ElasticsearchのGeolocation機能を利用する • PostGIS(PostgreSQLのExtension)の機能を利用する • 様々なサービスが提供しているWeb APIを利用する 19
20.
MOVでのPoint-In-Polygon実装(1) • リリース最初期は、AWSのElasticsearch Serviceを利用 •
Elasticsearchには、GIS向けの機能が提供されている • データタイプ:geo-point、geo-shape • geo-shapeとgeo-pointが交差しているかの判定や、両者の距離 などをクエリで利用できる • タクシー車輌位置を示すgeo-pointと交差するgeo-shape をもつドキュメントがインデックス内に存在するかどうか • ユーザー位置を示すgeo-pointから半径Xm以内の距離にあ るドキュメント(geo-shape)を取得する 20
21.
21 その後・・・
22.
22 Point-In-Polygon判定に AWS Elasticsearch Service を利用するのは止めた
23.
MOVでのPoint-In-Polygon実装(1) • MOVの構成(当時) 23 AWS IoT
Core Amazon Elasticsearch Service Service API App Engine MySQL Cloud SQL AWS Cloud Android AndroidiOS 乗務員アプリ ユーザーアプリ
24.
MOVでのPoint-In-Polygon実装(1) • MOVのサービスAPIは、GCP環境(GAE/go)で動作して おり、AWSのマネージドサービスであるElasticsearch Serviceにアクセスする際に、必ずAWS Sigv4の認証が入 り、GCP-AWS間のレイテンシも存在する (インスタンス規模の割にスループットが出なかった) •
Elasticsearch Serviceはマネージドサービスではあるが、 オートスケールしてくれないので、急激な負荷の上昇など に対応できない 24
25.
25 代替手段として採用したのは・・・
26.
26
27.
MOVでのPoint-In-Polygon実装(2) 27 • PostgreSQLの拡張機能であるPostGISを利用する • PostgreSQL@CloudSQLはPostGISをサポート •
Point-In-Polygon以外にも多種多様なGISオペレーション をSQLで実現できる • 単純なQPS性能はElasticsearchよりもかなり高い • フロントエンドとしてGAE/pythonを採用し、APIとして 利用できるように実装
28.
MOVでのPoint-In-Polygon実装(2) • 性能評価結果 • クエリ実行元は、Google
Compute Engine上のインスタンスとする • クエリ内容はどちらも同様の結果が得られるものとする • 試験対象インスタンスのCPU負荷が65%程度になるようにクエリを実行する 28 Product Instance Type vCPU Memory [GB] QPS Response Time [ms] Elasticsearch c4.2xlarge .elasticsearch 8 15 1615.85 6.189 PostGIS N/A 16 15 46303.36 0.66 1インスタンスあたりの性能
29.
MOVでのPoint-In-Polygon実装(2) • 性能評価結果 • クエリ実行元は、Google
Compute Engine上のインスタンスとする • クエリ内容はどちらも同様の結果が得られるものとする • 試験対象インスタンスのCPU負荷が65%程度になるようにクエリを実行する 29 1インスタンスあたりの性能 PostGISのvCPUを考慮しても、QPSとResponse Timeが圧倒的 Product Instance Type vCPU Memory [GB] QPS Response Time [ms] Elasticsearch c4.2xlarge .elasticsearch 8 15 1615.85 6.189 PostGIS N/A 16 15 46303.36 0.66
30.
30 その後・・・
31.
31 (・・・まさか・・・ゴクリ)
32.
32 Point-In-Polygon判定に PostGIS を利用するのは止めた
33.
MOVでのPoint-In-Polygon実装(2) • CloudSQLのPostgreSQLは、インスタンスのメモリ容量 が多いほど最大同時接続数が増加する • CloudSQLインスタンスのメモリが少ないと、
GAE側でイ ンスタンスがスケールしてもCloudSQLの最大同時接続数 に到達してしまい接続できなくなる • 結果として、大量のメモリを積んだインスタンスを複数台 使用しなければならなくなり、コスト高に・・・ 33
34.
MOVでのPoint-In-Polygon実装(2) • CloudSQLのPostgreSQLは、インスタンスのメモリ容量 が多いほど最大同時接続数が増加する • CloudSQLインスタンスのメモリが少ないと、
GAE側でイ ンスタンスがスケールしてもCloudSQLの最大同時接続数 に到達してしまい接続できなくなる • 結果として、大量のメモリを積んだインスタンスを複数台 使用しなければならなくなり、コスト高に・・・ 34 PostGISのせいじゃないじゃん・・・
35.
MOVでのPoint-In-Polygon実装(2) • PostGISを使った判定にも性能的な課題はあった • 交通圏のポリゴンデータが多頂点ポリゴンとなっており、 PostGISでもPoint-In-Polygon判定だけで数msかかって いた 35
36.
特別区・武三交通圏(東京都) 36出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)
37.
京浜交通圏(神奈川県) 37出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)
38.
MOVでのPoint-In-Polygon実装(2) • PostGISを使った判定にも性能的な課題はあった • 交通圏のポリゴンデータが多頂点ポリゴンとなっており、 PostGISでもPoint-In-Polygon判定だけで数msかかって いた •
PostGISが内部で利用しているGDALを直接利用して判定 しても1ms以上かかることが判明した 38
39.
MOVでのPoint-In-Polygon実装(2) • Point-In-Polygon判定は、ユーザーアクセス数が増加する とそれに比例して増加するため、一定以上のキャパシティ が必要だが、インフラ費用を無駄に消費するのは避けたい • 数ms程度なら十分高速な部類ではあるが、様々なAPIで利 用されるものであり、より高速にするとサービスAPIのレ イテンシを削減できる •
何より・・・ 元ゲーム開発者としては、1msでも十分遅い!!!! 39
40.
40 そして、超最適化へ・・・
41.
MOVでのPoint-In-Polygon超最適化 • GDALを利用して判定する • ただし、最適化のための事前処理を行う 41
42.
事前処理①:Polygonの細分化 42 出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)
43.
事前処理①:Polygonの細分化 43 出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)
44.
事前処理①:Polygonの細分化 44 絶対に交差する 交差する かもしれない 絶対に交差しない 出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)
45.
事前処理①:Polygonの細分化 45 切り出した小さなポリ ゴンとの判定を行う 交差する かもしれない 出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)
46.
事前処理①:Polygonの細分化 46 圧倒的に頂点数が削減されるので、計算量も激減する 出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)
47.
事前処理①:Polygonの細分化 • ポリゴンを一定サイズのメッシュで分割し、各メッシュに 以下の情報をもたせる • 絶対に交差するかどうかのBOOL値 •
交差するかもしれないメッシュは、切り出したポリゴンデータ • 絶対に交差しないメッシュに関してはデータを持たない • メッシュのIDと上記の情報のマッピングデータを事前計算 • 分割に使うメッシュの大きさはポリゴンのサイズに合わせ てアダプティブに設定 • MOVでは地域メッシュを使って分割 47
48.
事前処理②:ポリゴンのクラスタリング • 交通圏以外のポリゴンは小さいけど大量にある 48 出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)
49.
事前処理②:ポリゴンのクラスタリング • どのポリゴンがどのメッシュに含まれるかを事前計算 49 出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)
50.
事前処理②:ポリゴンのクラスタリング • どのポリゴンがどのメッシュに含まれるかを事前計算 • ポリゴンが含まれるメッシュIDの配列をポリゴン情報に 含める 50
51.
MOVでのPoint-In-Polygon超最適化 • GDALを直接利用して判定する • ただし、最適化のための事前処理を行う •
事前処理を行ったデータをすべてメモリにロードすることで全 計算をオンメモリで処理する (protocol buffers形式のバイナリファイルをGCSに配置) • 実装言語はgolang • GDALをgolangで使用するためには、cgoが必須 ⇒GAE/goは諦める • GKE上にgolang実装されたWebサーバーを構築 51
52.
MOVでのPoint-In-Polygon超最適化 • インフラ構成 52 Kubernetes Cluster Container
Engine Ingress Cloud Load Balancing Preprocessed Data Cloud Storage Polygon Meta Data Cloud SQL Service API App Engine
53.
MOVでのPoint-In-Polygon超最適化 • 性能比較(交通圏判定API) 53
54.
MOVでのPoint-In-Polygon超最適化 • 性能比較(交通圏判定API) 54
55.
MOVでのPoint-In-Polygon超最適化 • 性能比較(配車禁止エリア判定API) 55
56.
MOVでのPoint-In-Polygon超最適化 • 性能比較(配車禁止エリア判定API) 56
57.
まとめ • データに適切な事前処理を施すことにより、超効率的な Point-In-Polygon判定処理を実装した • 全データをオンメモリとすることで、交通圏判定や配車禁 止エリア判定を超高速化できた •
実行性能が数百倍になったことでインスタンスあたりの性 能キャパシティが大幅に拡大した • 結果として、GAE/goほどのスピンアップ速度がなくても 負荷上昇に十分耐えられるシステムになった 57
58.
58 ご清聴ありがとうございました。
Download