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
560
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jubatusよもやま話 〜OSSのミドルウェア開発〜
第1回Webシステムアーキテクチャ研究会
Shuzo Kashihara
December 23, 2017
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
360
Other Decks in Technology
See All in Technology
強化学習「理論」入門
enakai00
3
3.6k
猫付きpingコマンドを自作
uyuki234
0
210
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
160
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
110
OSPN.JPバージョンアップ作業進捗のご報告 / 20260801-osc26kyoto
akkiesoft
0
470
その“隠したつもり”が命取り ── 自前と平文をやめて「正解」に委ねる
kuroneko13
0
110
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
20分でわかるセキュアAPI
nwiizo
2
250
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
250
同じWAFが、攻撃の“形”は弾く── 正当な“形”の不正は通す
kuroneko13
0
130
ホームラボ紹介
y_sera15
0
150
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
7.1k
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
350
Crafting Experiences
bethany
1
250
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Un-Boring Meetings
codingconduct
0
380
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Building the Perfect Custom Keyboard
takai
2
840
Documentation Writing (for coders)
carmenintech
77
5.4k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Designing for humans not robots
tammielis
254
26k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
240
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
930
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