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
バクラクによるコーポレート業務の自動運転 #BetAIDay
layerx
PRO
1
990
Amazon S3 Vectorsは大規模ベクトル検索を低コスト化するサーバーレスなベクトルデータベースだ #jawsugsaga / S3 Vectors As A Serverless Vector Database
quiver
2
840
夏休みWebアプリパフォーマンス相談室/web-app-performance-on-radio
hachi_eiji
0
230
✨敗北解法コレクション✨〜Expertだった頃に足りなかった知識と技術〜
nanachi
1
740
Foundation Model × VisionKit で実現するローカル OCR
sansantech
PRO
1
390
20250807_Kiroと私の反省会
riz3f7
0
240
S3 Glacier のデータを Athena からクエリしようとしたらどうなるのか/try-to-query-s3-glacier-from-athena
emiki
0
230
マルチプロダクト×マルチテナントを支えるモジュラモノリスを中心としたアソビューのアーキテクチャ
disc99
1
580
「AIと一緒にやる」が当たり前になるまでの奮闘記
kakehashi
PRO
3
150
LTに影響を受けてテンプレリポジトリを作った話
hol1kgmg
0
380
Claude CodeでKiroの仕様駆動開発を実現させるには...
gotalab555
3
1.1k
Amazon Bedrock AgentCoreのフロントエンドを探す旅 (Next.js編)
kmiya84377
1
150
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Facilitating Awesome Meetings
lara
54
6.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
800
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Side Projects
sachag
455
43k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Visualization
eitanlees
146
16k
Statistics for Hackers
jakevdp
799
220k
KATA
mclloyd
32
14k
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