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
Jubatusよもやま話 〜OSSのミドルウェア開発〜
Search
Shuzo Kashihara
December 23, 2017
Technology
0
500
Jubatusよもやま話 〜OSSのミドルウェア開発〜
第1回Webシステムアーキテクチャ研究会
Shuzo Kashihara
December 23, 2017
Tweet
Share
More Decks by Shuzo Kashihara
See All by Shuzo Kashihara
Reading “Bridging the Virtualization Performance Gap for HPC Using SR-IOV for Infiniband”
suma90h
1
350
Other Decks in Technology
See All in Technology
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
270
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
5
730
Agile PBL at New Grads Trainings
kawaguti
PRO
1
450
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.2k
今日から始めるAWSセキュリティ対策 3ステップでわかる実践ガイド
yoshidatakeshi1994
0
110
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
1k
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
260
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
7
870
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
490
Android Audio: Beyond Winning On It
atsushieno
0
2.4k
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
280
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
12k
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Large-scale JavaScript Application Architecture
addyosmani
513
110k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
The Pragmatic Product Professional
lauravandoore
36
6.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
113
20k
Speed Design
sergeychernyshev
32
1.1k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Writing Fast Ruby
sferik
628
62k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
850
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Transcript
JubatusΑ· ʙOSSͷϛυϧΣΞ։ൃʙ 201712݄23 ୈ1ճΣϒγεςϜΞʔΩςΫνϟݚڀձ ദݪलଂʢ@suma90hʣ 1
ࣗݾհ • Shuzo Kashihara (ദݪ लଂ, @suma90h) • ઐ •
LinuxγεςϜϓϩάϥϛϯά(userland): C, C++(03) • Jenkins͓͡͞Μ • ٕज़എܠ • PFI࣌ʙɿશจݕࡧɾϨίϝϯυΤϯδϯͷ։ൃʢςετʣɺJubatus։ൃɺࣾΣϒΞϓϦ ͳͲ • झຯͳͲ • ಡॻ: ྺ࢙, Պֶ, খઆ • ఱମࣸਅ 2
Jubatusͱ • ػցֶशʢࢄʣͷϛυϧΣΞٴͼϑϨʔϜϫʔΫ • αʔόʗΫϥΠΞϯτͷར༻ܗଶΛऔΓɺͦͷؒRPCͰΓ औΓ͢Δ • JubatusΛϥΠϒϥϦͱͯ͠ݺͼग़ͯ͑͠ΔCPython֦ு͋ Δ [Ebedded
Jubatus Python] • ࢄͨ͠αʔόͷΠϯελϯεͰฒྻʹֶशɾਪͰ͖Δͷ͕εΰ Π • http://jubat.us/ 3
WSAݚͰ͍ͨ͜͠ͱ • OSSʢϛυϧΣΞΛྫʹ͢ΔʣͷνʔϜ։ൃʹ͓͚Δ • νʔϜϏϧσΟϯάʗνʔϜ։ൃʹ͓͚Δϊϋɾݟ ʹؔͯ͠ɺ • OSSϛυϧΣΞ։ൃʹ͓͚Δҙࢤܾఆͷํɺٞใڞ༗ͷํͷհ • ιϑτΣΞͷ࣭Մ༻ੑʢSLAʣΆ͍͜ͱͷ࣭ɾఏىʢٞʣ
ʹ͍ͭͯҰൠԽ͍ͯͨ͠͠ɻલऀׂͱνʔϜӡ༻ͳύλʔϯͳͷʹରͯ͠ɺޙऀ ٕज़͕͋ͬͯͲ͏Ξϓϩʔν͢Δ͔ͱ͍͏ͱͳ͍ͬͯΔɻલऀʹ͍ͭͯ༧ ߘʹॻ͍ͨͨΊɺεϥΠυͰׂѪͯ͠ςʔϚΛߜͬͨ 4
։ൃνʔϜ͕࢝·Δͱ͖ • ࠷ॳ͔Θ͔Βͳ͍͕ɺϧʔϧɾ։ൃϓϩηεΛ࡞ͬͨΓܾΊΔ͜ͱ͕࢝·Δʢؾ͕͢Δʣ • ୭͔ҰਓͷΦϦδφϧ͕͋Γɺ͔ͦ͜Β͋Δఔ۩ମੑ͕͋Δঢ়ଶͰ࢝·Δ͜ͱ͋Δ • ར༻͢ΔαʔϏεɺϓϥοτϑΥʔϜ҉ͷ͏ͪʹܾ·Δ͜ͱ͋Δ • GitHub? GitLab?ɺOSʢLinux?
Windows?ʣɺϛυϧΣΞʢApache? Nginx?ʣɺϓϩάϥϛϯάݴޠ • ʢಛʹOSSͷʣιϑτΣΞͱܾͯ͠ΊΔɺܾ·Δͷͱͯ͠ҎԼͷΑ͏ͳͷ͕͋Δ • ໊ɺίʔυωʔϜɺϥΠηϯε • ίʔσΟϯάنʢελΠϧʣ • Ϗϧυํ๏࠾༻͢Δπʔϧ܈ʢϓϩάϥϛϯάݴޠʹґଘ͢Δʣ • ϦϦʔεํ๏ɺόʔδϣχϯάɺυΩϡϝϯςʔγϣϯ • ιʔείʔυ܈Λϗετ͢ΔॴʢGitHubʣ • ෦ͷϨϏϡʔํ๏ɺOSSͷ߹֎෦͔ΒͷߩݙͷରԠํ๏ etc • ʢҰൠԽ͍ͨ͠༰Ͱͳ͘ɺ୯ʹ͋ΔΑͶɺͱ͍͏ྻڍͰ͢ʣ 5
͍͔ʹͯ͠νʔϜ։ൃΛճ͔͢ • ڀۃతʹνʔϜશһ͕෦ɾ֎෦ͷࡶ༻ʹؾΛऔΒΕͣʹύϑΥʔϚϯεΛൃشͰ͖Δ͔ɺͩͱࢥ͍ͬͯΔ • ՝ • νʔϜΛ࡞Δͱ͖Ͳ͏͍͔ͬͯ͘ [→ 2017༧ߘ] •
ίʔσΟϯάҎ֎ʹൃੜ͢ΔҰൠతͳࡶʹର͢ΔͲ͏ͯ͠ൃੜ͢ΔࣄͷରԠ • ղܾํ๏ • ఆܕతͳύλʔϯʹର͢ΔԠΛ͋Β͔͡ΊܾΊͨΓɺࣗಈԽͰ͖Δͱ͜Ζͨ͠Γ͢Δ • ϏϧυϦϦʔεͳΒࣗಈԽͷΈΛɺOSSͷߩݙͳΒͲ͏͍͏ϨϏϡʔ߲ɾํͳΒϚʔδͰ͖Δ ͷ͔νʔϜͰ͍͍ͪͪ૬ஊ͠ͳ͍͍ͯ͘ϑοτϫʔΫͷ͍ܰମ੍Λ࡞Δ • ߟ͑Δ͖ͱ͜ΖͰ಄Λ͍ɺ࡞ۀͰྲྀͯ͠ߦ͑Δ෦ʹ࣌ؒΛ͔͚ͳ͍ͰιϑτΣΞΛ։ൃ͍ͯ͘͠ • ࠔͬͨͱ͖Ϧʔμʔʹղܾͯ͠͠·͏ʢϦʔμʔͷෛ୲͕͋Δͱ͍͏՝Δʣ 6
OSS։ൃίϛϡχςΟʹ͓͚Δ ҙࢥܾఆ • ։ൃνʔϜશൠͰҙࢥܾఆΛഭΒΕΔͱ͖ʢίϛϡχςΟͰʣ • ։ൃରͷઃܭΛܾΊͯߦಈ͢Δͱ͖ʢٕज़తͳͷͰʣ ͷ2ύλʔϯʹͬ͘͟ΓͱେผͰ͖Δͱࢥ͏ 7
ҙࢥܾఆϙϦγʔͷߟ͑ํ • ୡ͍ͨ͜͠ͱɾΓ͍ͨ͜ͱ • ॏཁɾॏཁͰͳ͍ࣄʹ͍ͭͯͷɺνʔϜͰͷਝͳҙࢥܾఆ͕͍ͨ͠ • νʔϜ։ൃ͋Δ͋Δ • ϒϨΠϯετʔϛϯάɺ͘͠ΧΦε •
ࣗసंஔ͖ͷٞ ʹͳ͕ͬͯٞऩଋ͠ͳ͍ • ղܾࡦ • 1໊ʙ3໊΄Ͳͦͷʹڧͦ͏ͳ୲ϝϯόʔΛબग़ͯ͠ɺͦͷϝϯόʔ͔Βఏग़͞Εͨ ఏҊΛνʔϜͰٞ͢ΔʢΏΔ͍ΞΠσΟΞ͕۩ମతʹݻ·͖͍ͬͯͯΔͷͰɺνʔϜ શମͰϨϏϡʔ͍͢͠ʣ • ຊʹࠔͬͨͱ͖Ϧʔμʔ͕ܾఆ͢Δʢ※ wikipedia: ༏͍͠ऴͷಠࡋऀ ) 8
։ൃઃܭΛٞ͢Δͱ͖ • ୡ͍ͨ͜͠ͱɾΓ͍ͨ͜ͱ • ৽ن࣮ɾઃܭͷݟ͠ͳͲɺιϑτΣΞʹେ͖ͳมߋΛՃ͍͑ͨͱ͖ͷઃܭใͷڞ༗ͱ ϨϏϡʔΛ͍ͨ͠ • ͪΖΜɺνʔϜϝϯόʔશһͰϗϫΠτϘʔυ্ͰϒϨΠϯετʔϛϯά͢Δͷඇݱ࣮త • ղܾࡦ
• σβΠϯυΩϡϝϯτͷ࡞ͱڞ༗ • ίʔυΛॻ͘લʹσβΠϯυΩϡϝϯτΛ࡞͠ɺڞ༗͠ɺϨϏϡʔͯ͠Β͏ελΠϧ • ୈҰʹࣥචऀͷ಄ͷதͰɺਓʹಡΊΔܗͷઃܭจॻ͕͢Δ • ࣍ʹɺͦΕΛͬͯνʔϜϝϯόʔ͕ઃܭΛϨϏϡʔͰ͖Δঢ়ଶʹͳΔ • ઃܭͷڞ༗ͱٞGoݴޠͷߩݙऀ͚จॻͰਪ͞Ε͍ͯΔ 9
ʲօ༷ͷ࣭ɾఏىʳ ιϑτΣΞͷ࣭ɾՄ༻ੑΛͲ͏ҡ͍͔࣋ͯ͘͠ • ۜͷؙ͕ͳ͍͜ͱʹରͯ͠Ͳ͏ΞϓϩʔνΛͱΔ͔ʢόάͷͳ͍͜ͱɺՄ༻ੑ, MTBFʁʣ ʮͲ͜·Ͱςετ ͢ΕऴΘΓ͕͘Δͷʁʯ • ྃʹର͢Δࢦඪ͋Δʢৄ͘͠ͳ͍Ͱ͢ɻͦΕͰɺΫϦΞͨ͠Βຊʹ͍͍ͷʁɹͱ͍͏͋Δʣ •
JubatusͰςετʹՃ͑ɺQPS(Query per Second)ݟ͍ͯͨ • ґଘϥΠϒϥϦͷόάιϑτΣΞʹӨڹ͢Δ͜ͱ͕͋ΔɻґଘϥΠϒϥϦؚΊͨ • Trusted computing baseͱ͍͏֓೦ͱɺͦΕΛࢀߟʹγεςϜͷྖҬͰ৴པ͢Δ෦Λݶఆ͢Δߟ͑ํͲ͏͔ ʢ͓ͦΒ͘ҙࣝͯ͠ͳ࣮ͯ͘ફ͍ͯ͠Δʣ • ྫ͑ɺCPU/OS(Linux)όά͍ͬͯͳ͍ͷͱͯ͠ɺ৴པͰ͖Δͱߟ͑Δ • ͘͠ɺόάͬͯͯସՄೳͳͷͱͯ͠ɺγεςϜͱͯ͠ӅṭՄೳͳͷͱߟ͑Δ • ϓϩάϥϛϯάͷํ๏ɾιϑτΣΞςετͷख๏ɾγεςϜશମͷෆ۩߹ʹର͢ΔΞϓϩʔν(Chaos Monkey) ͳͲଘࡏ͍ͯ͠Δ [2017༧ߘ] • ςετέʔεϨϕϧͰɺೖྗύλʔϯΛཚͰ͍͘Βੜͯ͠ॏେͳόάʹ໓ଟʹͨΒͳ͍ʢܦݧʣ 10
·ͱΊ • OSSͰͷҙࢤܾఆɺઃܭϨϏϡʔํ๏Λհͨ͠ • [ҙ]ҙࢤܾఆʹ͍ͭͯɺνʔϜϝϯόʔ͕ࣗൃతʹߩݙ Ͱ͖ΔϝϯόʔͰߏ͞ΕΔͱ҉ͷ͏ͪʹԾఆ͍ͯ͠Δ͔ • σβΠϯυΩϡϝϯτͱϨϏϡʔମ੍ʹ͍ͭͯհͨ͠ •
ଞʹڞ༗͍ͨ͠ςʔϚ͋Δ͕ɺ༧ߘΛࢀর • ࣭ɾఏىͱ͍͏ܗͰɺςετͷྃՄ༻ੑͷҡ࣋ͱɺղ ܾ͢Δ͔͠Εͳ͍Ξϓϩʔνʹ͍ͭͯऔΓ্͛ͨ 11