Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
How to train your robot (with Deep Reinforcement Learning)
Lucas García, PhD
4 Strategies to Renew Your Career Passion
Daniel Goleman
The Student's Guide to LinkedIn
LinkedIn
Different Roles in Machine Learning Career
Intellipaat
Defining a Tech Project Vision in Eight Quick Steps pdf
TechSoup
The Hero's Journey (For movie fans, Lego fans, and presenters!)
Dan Roam
10 Inspirational Quotes for Graduation
Guy Kawasaki
The Health Benefits of Dogs
The Presentation Designer
1
of
75
Top clipped slide
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
Jun. 19, 2022
•
0 likes
0 likes
×
Be the first to like this
Show More
•
102 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Engineering
JJUG CCC 2022 の登壇資料です。
Kaname Motoyama
Follow
Advertisement
Advertisement
Advertisement
Recommended
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Saba Software
736 views
•
64 slides
Introduction to C Programming Language
Simplilearn
96 views
•
39 slides
The Pixar Way: 37 Quotes on Developing and Maintaining a Creative Company (fr...
Palo Alto Software
83.3K views
•
39 slides
9 Tips for a Work-free Vacation
Weekdone.com
2.1K views
•
14 slides
I Rock Therefore I Am. 20 Legendary Quotes from Prince
Empowered Presentations
137.5K views
•
21 slides
How to Map Your Future
SlideShop.com
265K views
•
16 slides
More Related Content
Recently uploaded
(20)
★可查可存档〖制作国立大学文凭证书毕业证〗
tujjj
•
2 views
☀️《SLC毕业证仿真》
hjhgg1
•
2 views
★可查可存档〖制作思克莱德大学文凭证书毕业证〗
vgfg1
•
3 views
230216_AI技術共有会_園部.pdf
RyosukeSonobe
•
2 views
56.桑德兰大学.pdf
dsadasd17
•
2 views
★可查可存档〖制作魁北克大学文凭证书毕业证〗
mmmm282537
•
2 views
★可查可存档〖制作波恩大学文凭证书毕业证〗
tujjj
•
9 views
무료스포츠중계 〔www,rtЗЗ,top〕코드 b77 플레이보이카지노 ㋁ 황제카지노 ㉤ 나미비아 국가경기 Ⓣ afc윔블던 ㈭ 퀴라소 ㈗ 축구...
ssusere9c2b4
•
5 views
★可查可存档〖制作布克大学文凭证书毕业证〗
mmmm282537
•
2 views
法国:蒙彼利埃大学毕业证办理流程
cyvyvgk
•
3 views
☀️《UMKC毕业证仿真》
DFFFFG
•
2 views
28西澳.pdf
dsadasd17
•
2 views
☀️《Bournemouth毕业证仿真》
fggg13
•
2 views
204-杨百翰大学.pdf
fdhrtf
•
2 views
68范莎学院.pdf
fdhrtf
•
2 views
134-休斯敦大学.pdf
fdhrtf
•
2 views
72亚历山大学院.pdf
fdhrtf
•
2 views
41布兰登大学.pdf
dsadasd17
•
2 views
★可查可存档〖制作巴黎第十二大大学文凭证书毕业证〗
tujjj
•
3 views
SPECIALIZED heavy racks.pdf
FernandoRivasCortes1
•
2 views
Featured
(20)
How to train your robot (with Deep Reinforcement Learning)
Lucas García, PhD
•
40.1K views
4 Strategies to Renew Your Career Passion
Daniel Goleman
•
119.9K views
The Student's Guide to LinkedIn
LinkedIn
•
82.5K views
Different Roles in Machine Learning Career
Intellipaat
•
11.2K views
Defining a Tech Project Vision in Eight Quick Steps pdf
TechSoup
•
8.6K views
The Hero's Journey (For movie fans, Lego fans, and presenters!)
Dan Roam
•
28K views
10 Inspirational Quotes for Graduation
Guy Kawasaki
•
301.3K views
The Health Benefits of Dogs
The Presentation Designer
•
34.2K views
The Benefits of Doing Nothing
INSEAD
•
51.2K views
A non-technical introduction to ChatGPT - SEDA.pptx
Sue Beckingham
•
17.9K views
The Dungeons & Dragons Guide to Marketing
Ian Lurie
•
15.8K views
How You Can Change the World
24Slides
•
57.9K views
signmesh snapshot - the best of sustainability
signmesh
•
9.5K views
The Science of a Great Career in Data Science
Kate Matsudaira
•
38.2K views
The ABC’s of Living a Healthy Life
Dr. Omer Hameed
•
1.2M views
CAREER FORWARD - THE TOOLS YOU NEED TO START MOVING
Kelly Services
•
3K views
Top 5 Skills for Project Managers
LinkedIn Learning Solutions
•
22.9K views
Mind-Blowing Facts About National Parks
Ethos3
•
43.3K views
8 Easy Ways to Relieve Stress At Work (Backed By Science)
True Stress Management
•
2.7K views
ChatGPT What It Is and How Writers Can Use It.pdf
Adsy
•
32K views
Advertisement
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
連続画像処理による位置情報計算を支える マイクロサービスアーキテクチャ
本山 要 ◉ 2017年ウルシステムズに新卒入社(6年目) ◉
主に開発案件を担当 ‒ 業務アプリ、 B to Cアプリ、コンピュータビジョン ‒ 開発もPMも ‒ Golang、Unity、JavaScript、C#、Java ◉ 得意技は技術要素の爆速キャッチアップ ◉ 新卒研修や採用活動にも従事 2
アジェンダ ◉ 実現したかった事 ◉ アーキテクチャ紹介 ◉
まとめ 3
1. 実現したかった事
壁にぶつからないルンバ 5 with 位置情報計算エンジン 壁にぶつかってから方向転換する 壁にぶつらずに方向転換する
ざっくりシステム要件 6 作成物 1. 画像を撮影し、サーバー に送る 2. クライアントの位置情報を レスポンスとして返却する 3.
位置情報を基に処理を 実行する
システム要件と制約 7 ◉ ターンアラウンドタイム(以下、TAT)は33ミリ秒以下 ◉ 遅延を確実に解消 ◉
位置情報の計算は1プロセスで同時に1回のみ可能
TAT33ミリ秒とは? ◉ TAT ‒ リクエストを開始する直前とレスポンスを受け取った直後の時間差 ◉
日本人が画像を見てなめらかに感じるフレームレートは30FPS ◉ 30FPS = 1/33(回/ms) ◉ 測定環境はオンプレ 8 TAT
システム要件と制約 9 ◉ ターンアラウンドタイム(以下、TAT)は33ミリ秒以下 ◉ 遅延を確実に解消 ◉
位置情報の計算は1プロセスで同時に1回のみ可能
システム要件と制約 ◉ スケーラブル ◉ マルチプロトコル ◉
受信画像を保存可能 ◉ 容易に拡張可能 10 ◉ ターンアラウンドタイム(以下、TAT)は33ミリ秒以下 ◉ 遅延を確実に解消 ◉ 位置情報の計算は1プロセスで同時に1回のみ可能 画像処理に 直接関係する 画像処理に 直接関係しない
アーキテクチャを特徴づける要素 ◉ マイクロサービス ◉ Redis
Pub/Sub でサービス間通信 11
2. アーキテクチャ紹介
アーキテクチャ紹介 ◉ マイクロサービス ◉ Redis
Pub/Sub でサービス間通信 ◉ 特徴 13
概要 14
2. アーキテクチャ紹介 ~マイクロサービス~
スケーラビリティを確保したい ◉ クラウド環境ではコストをかければスケールできる ‒ 仮想サーバーでもサーバーレスでも ◉
オンプレ前提なのでコンテナでスケーラビリティを確保する 16
機能をブレイクダウンしてみる ◉ リクエストの受け取り/ レスポンスの返却 ‒ request/response ◉
画像の前処理 ‒ preprocess ◉ 位置情報の計算 ‒ location 17
◉ 全部入り マイクロサービス化の方針 18
◉ 全部入り マイクロサービス化の方針 19
◉ 全部入り ◉ 全部別々 マイクロサービス化の方針 20
◉ 全部別々 ◉ location
だけ別 マイクロサービス化の方針 ◉ 全部入り 21
◉ 全部別々 ◉ location
だけ別 マイクロサービス化の方針 ◉ 全部入り 22
マイクロサービスを採用 23
「スケーラブル」を達成 ◉ Location を増やすことで位置情報の計算プロセスの制約を乗り越えてスケール 可能に 24
「マルチプロトコル」を達成 ◉ Preprocess に渡すデータの形が一致していれば、Connector
のバリエーション を複数用意できる 25
構成図とシーケンス図 26
システム要件と制約 スケーラブル マルチプロトコル ◉
受信画像を保存可能 ◉ 容易に拡張可能 27 ◉ ターンアラウンドタイム(以下、TAT)は33ミリ秒以下 ◉ 遅延を確実に解消 位置情報の計算は1プロセスで同時に1回のみ可能 画像処理に 直接関係する 画像処理に 直接関係しない
2. アーキテクチャ紹介 ~Redis Pub/Sub
でサービス間通信~
Redis とは ◉ NoSQLデータベース ◉
インメモリで動作 ◉ データの永続化も可能 ◉ Pub/Subのメッセージブローカー機能も 29
Pub/Sub とは ◉ お互いを知らずにメッセージを届ける仕組み ◉
非同期通信 ◉ 発行者と購読者を疎結合にできる 30
Pub/Sub とは ◉ 複数チャンネルからメッセージを受け取ることもできる 31
構成図 ◉ 各サービスは Pub/Sub
で連携 32
シーケンス図 ◉ サービス間が非同期通信に 33
ところで異常系は? ◉ ERROR チャンネルを用意しておく ◉
Connector は ERROR チャンネルからメッセージを受け取ったらエラーレスポンス を返却する 34
拡張性も高い ◉ 他システムへのリアルタイムデータ連携は Subscribe
で可能 35 Subscribeするだけ
システム要件と制約 スケーラブル マルチプロトコル
受信画像を保存可能 容易に拡張可能 36 ◉ ターンアラウンドタイム(以下、TAT)は33ミリ秒以下 ◉ 遅延を確実に解消 位置情報の計算は1プロセスで同時に1回のみ可能 画像処理に 直接関係する 画像処理に 直接関係しない
2. アーキテクチャ紹介 ~特徴~
特徴 ◉ リクエストのスキップ ◉ ストリーミング通信可能なインターフェース ◉
低レイテンシ 38
2. アーキテクチャ紹介 ~特徴~ リクエストのスキップ
リクエストをスキップしてもよい? ◉ スキップしない ◉
スキップする 40 残高 100 残高 400 残高 900 残高 0 残高 100 残高 100 残高 600 残高 0 スキップ スキップ
リクエストをスキップしてよい世界もある ◉ スキップしない ◉
スキップする 41 現在地 (1, 1, 1) 現在地 (4, 4, 4) 現在地 (9, 9, 9) 現在地 (0, 0, 0) 現在地 (1, 1, 1) 現在地 (1, 1, 1) 現在地 (9, 9, 9) 現在地 (0, 0, 0) スキップ
遅延とは何か? ◉ 「遅延が発生する」=「クライアントが実際に見ている画像とサーバーで処理してい る画像がずれる」 ◉ 遅延が蓄積するとクライアントにとって古い位置情報を提供してしまい、誤作動の 原因となる 42 Ct:
時刻 t のクライアントの位置
遅延が発生するメカニズム ◉ モノリスだと思って考えてみる ◉ 同時に捌けるリクエストは1リクエストのみ ‒
ただしタイムアウトするまでの時間は無限とする(タイムアウトを考えない) 43
遅延が発生するメカニズム ◉ モノリスだと思って考えてみる ◉ 同時に捌けるリクエストは1リクエストのみ ‒
ただしタイムアウトするまでの時間は無限とする(タイムアウトを考えない) 44
遅延が発生するメカニズム ◉ モノリスだと思って考えてみる ◉ 同時に捌けるリクエストは1リクエストのみ ‒
ただしタイムアウトするまでの時間は無限とする(タイムアウトを考えない) 45
遅延が発生するメカニズム ◉ モノリスだと思って考えてみる ◉ 同時に捌けるリクエストは1リクエストのみ ‒
ただしタイムアウトするまでの時間は無限とする(タイムアウトを考えない) 46
遅延が発生するメカニズム ◉ モノリスだと思って考えてみる ◉ 同時に捌けるリクエストは1リクエストのみ ‒
ただしタイムアウトするまでの時間は無限とする(タイムアウトを考えない) 47
遅延が発生するメカニズム ◉ モノリスだと思って考えてみる ◉ 同時に捌けるリクエストは1リクエストのみ ‒
ただしタイムアウトするまでの時間は無限とする(タイムアウトを考えない) 48
遅延が発生するメカニズム ◉ モノリスだと思って考えてみる ◉ 同時に捌けるリクエストは1リクエストのみ ‒
ただしタイムアウトするまでの時間は無限とする(タイムアウトを考えない) 49
遅延が発生するメカニズム ◉ モノリスだと思って考えてみる ◉ 同時に捌けるリクエストは1リクエストのみ ‒
ただしタイムアウトするまでの時間は無限とする(タイムアウトを考えない) 50 遅延は発生しないのでTATは一定 遅延が蓄積し、 TATが徐々に増加
遅延が発生するメカニズム ◉ モノリスだと思って考えてみる ◉ 同時に捌けるリクエストは1リクエストのみ ‒
ただしタイムアウトするまでの時間は無限とする(タイムアウトを考えない) 51 実際はマイクロサービスなので 処理が開始されている
サーバー内の動きを詳しく見てみる ◉ どのサービスも処理は1プロセスで同時に1回のみ可能 ◉ クライアントは6ミリ秒ごとにリクエストする ‒
Connector の処理が6ミリ秒ごとに開始する ◉ N回目のリクエストに対する Connector の処理を NConnector とする 52
サーバー内の動きを詳しく見てみる ◉ どのサービスも処理は1プロセスで同時に1回のみ可能 ◉ クライアントは6ミリ秒ごとにリクエストする ‒
Connector の処理が6ミリ秒ごとに開始する ◉ N回目のリクエストに対する Connector の処理を NConnector とする 53
サーバー内の動きを詳しく見てみる ◉ どのサービスも処理は1プロセスで同時に1回のみ可能 ◉ クライアントは6ミリ秒ごとにリクエストする ‒
Connector の処理が6ミリ秒ごとに開始する ◉ N回目のリクエストに対する Connector の処理を NConnector とする 54
サーバー内の動きを詳しく見てみる ◉ どのサービスも処理は1プロセスで同時に1回のみ可能 ◉ クライアントは6ミリ秒ごとにリクエストする ‒
Connector の処理が6ミリ秒ごとに開始する ◉ N回目のリクエストに対する Connector の処理を NConnector とする 55
サーバー内の動きを詳しく見てみる ◉ どのサービスも処理は1プロセスで同時に1回のみ可能 ◉ クライアントは6ミリ秒ごとにリクエストする ‒
Connector の処理が6ミリ秒ごとに開始する ◉ N回目のリクエストに対する Connector の処理を NConnector とする 56
サーバー内の動きを詳しく見てみる ◉ どのサービスも処理は1プロセスで同時に1回のみ可能 ◉ クライアントは6ミリ秒ごとにリクエストする ‒
Connector の処理が6ミリ秒ごとに開始する ◉ N回目のリクエストに対する Connector の処理を NConnector とする 57
サーバー内の動きを詳しく見てみる ◉ どのサービスも処理は1プロセスで同時に1回のみ可能 ◉ クライアントは6ミリ秒ごとにリクエストする ‒
Connector の処理が6ミリ秒ごとに開始する ◉ N回目のリクエストに対する Connector の処理を NConnector とする 58 遅延が蓄積し、TATは徐々に増加
サーバー内の動きを詳しく見てみる ◉ どのサービスも処理は1プロセスで同時に1回のみ可能 ◉ クライアントは6ミリ秒ごとにリクエストする ‒
Connector の処理が6ミリ秒ごとに開始する ◉ N回目のリクエストに対する Connector の処理を NConnector とする 59 遅延が蓄積し、TATは徐々に増加 Preprocess と Location の間隔は 1 ずつ広がる
サーバー内の動きを詳しく見てみる ◉ いつかこの状況になる 60
サーバー内の動きを詳しく見てみる ◉ いつかこの状況になる 61 1Location がなければ すぐに開始できる
遅延を解消する ◉ 1Location をスキップする 62 スキップ
遅延を解消する ◉ アルゴリズム ‒ メッセージを受け取ったときに他にメッセージがないか確認する ‒
他にメッセージがあれば、受け取ったメッセージは最新の画像でないと判断し、スキップする ‒ 他にメッセージがなければ、受け取ったメッセージは最新の画像であると判断し、処理を開始する 63 スキップ
遅延を解消する ◉ Connector, Preprocess,
Locationすべてでスキップできるよう実装する 64 スキップ
サービス間通信に Redis Pub/Sub
を採用 レスポンスをどうするか 65
2. アーキテクチャ紹介 ~特徴~ ストリーミング通信可能なインターフェース
リクエスト用APIとレスポンス用APIに分ける ◉ Request API ‒
リクエストを受けたら RAW_IMAGE に Publish ‒ Publish 後、すぐに空のレスポンスを返す ◉ Response API ‒ ロングポーリングの前提 ‒ Connector がメッセージを受け取ったら、 位置情報のレスポンスを返す 67
シーケンス図 68
構成図とシーケンス図 69
システム要件と制約 スケーラブル マルチプロトコル
受信画像を保存可能 容易に拡張可能 70 ◉ ターンアラウンドタイム(以下、TAT)は33ミリ秒以下 遅延を確実に解消 位置情報の計算は1プロセスで同時に1回のみ可能 画像処理に 直接関係する 画像処理に 直接関係しない
2. アーキテクチャ紹介 ~特徴~ 低レイテンシ
性能評価 ◉ 前提条件 ‒ 指標はTAT ‒
スキップされたリクエストは評価対象外 ‒ 10クライアントから同時に5分間リクエストを継続 ‒ オンプレ環境にデプロイ ‒ クライアントとサーバーはLANケーブルで接続 ◉ 結果 ‒ TAT(90%tile)で約31ミリ秒 ‒ スキップされたリクエストは0 72 TAT
システム要件と制約 スケーラブル マルチプロトコル
受信画像を保存可能 容易に拡張可能 73 ターンアラウンドタイム(以下、TAT)は33ミリ秒以下 遅延を確実に解消 位置情報の計算は1プロセスで同時に1回のみ可能 画像処理に 直接関係する 画像処理に 直接関係しない
3. まとめ
まとめ ◉ 壁にぶつからないルンバを実現するアーキテクチャ ◉ マイクロサービス
と Redis Pub/Sub を採用 ◉ スケーラビリティと低レイテンシを両立 75
Advertisement