Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jubatusよもやま話 〜OSSのミドルウェア開発〜

Jubatusよもやま話 〜OSSのミドルウェア開発〜

第1回Webシステムアーキテクチャ研究会

Avatar for Shuzo Kashihara

Shuzo Kashihara

December 23, 2017
Tweet

More Decks by Shuzo Kashihara

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ • Shuzo Kashihara (ദݪ लଂ, @suma90h) • ઐ໳ •

    LinuxγεςϜϓϩάϥϛϯά(userland): C, C++(03) • Jenkins͓͡͞Μ • ٕज़എܠ • PFI࣌୅ʙɿશจݕࡧɾϨίϝϯυΤϯδϯͷ։ൃʢςετʣɺJubatus։ൃɺࣾ಺΢ΣϒΞϓϦ ͳͲ • झຯͳͲ • ಡॻ: ྺ࢙, Պֶ, খઆ • ఱମࣸਅ 2
  2. WSAݚͰ࿩͍ͨ͜͠ͱ • OSSʢϛυϧ΢ΣΞΛྫʹ͢ΔʣͷνʔϜ։ൃʹ͓͚Δ • νʔϜϏϧσΟϯάʗνʔϜ։ൃʹ͓͚Δϊ΢ϋ΢ɾ஌ݟ ʹؔͯ͠ɺ • OSSϛυϧ΢ΣΞ։ൃʹ͓͚Δҙࢤܾఆͷ࢓ํɺٞ࿦΍৘ใڞ༗ͷ࢓ํͷ঺հ • ιϑτ΢ΣΞͷ඼࣭΍Մ༻ੑʢSLAʣΆ͍͜ͱͷ࣭໰ɾ໰୊ఏىʢٞ࿦ʣ

    ʹ͍ͭͯҰൠԽͯ͠࿩͍ͨ͠ɻલऀ͸ׂͱνʔϜӡ༻ͳύλʔϯͳͷʹରͯ͠ɺޙऀ ͸ٕज़͕͋ͬͯ΋Ͳ͏Ξϓϩʔν͢Δ͔ͱ͍͏࿩ͱͳ͍ͬͯΔɻલऀʹ͍ͭͯ͸༧ ߘʹॻ͍ͨͨΊɺεϥΠυͰ͸ׂѪͯ͠ςʔϚΛߜͬͨ 4
  3. ։ൃνʔϜ͕࢝·Δͱ͖ • ࠷ॳ͔Θ͔Βͳ͍͕ɺϧʔϧɾ։ൃϓϩηεΛ࡞ͬͨΓܾΊΔ͜ͱ͕࢝·Δʢؾ͕͢Δʣ • ୭͔ҰਓͷΦϦδφϧ͕͋Γɺ͔ͦ͜Β͋Δఔ౓۩ମੑ͕͋Δঢ়ଶͰ࢝·Δ͜ͱ΋͋Δ • ར༻͢ΔαʔϏεɺϓϥοτϑΥʔϜ΋҉໧ͷ͏ͪʹܾ·Δ͜ͱ΋͋Δ • GitHub? GitLab?ɺOSʢLinux?

    Windows?ʣɺϛυϧ΢ΣΞʢApache? Nginx?ʣɺϓϩάϥϛϯάݴޠ • ʢಛʹOSSͷʣιϑτ΢ΣΞͱܾͯ͠ΊΔɺܾ·Δ΋ͷͱͯ͠ҎԼͷΑ͏ͳ΋ͷ͕͋Δ • ੡඼໊ɺίʔυωʔϜɺϥΠηϯε • ίʔσΟϯάن໿ʢελΠϧʣ • Ϗϧυํ๏΍࠾༻͢Δπʔϧ܈ʢϓϩάϥϛϯάݴޠʹґଘ͢Δʣ • ϦϦʔεํ๏ɺόʔδϣχϯάɺυΩϡϝϯςʔγϣϯ • ιʔείʔυ܈Λϗετ͢Δ৔ॴʢGitHubʣ • ಺෦ͷϨϏϡʔํ๏ɺOSSͷ৔߹֎෦͔Βͷߩݙ΁ͷରԠํ๏ etc • ʢҰൠԽ͍ͨ͠಺༰Ͱ͸ͳ͘ɺ୯ʹ͋ΔΑͶɺͱ͍͏ྻڍͰ͢ʣ 5
  4. ͍͔ʹͯ͠νʔϜ։ൃΛճ͔͢ • ڀۃతʹ͸νʔϜશһ͕಺෦ɾ֎෦ͷࡶ༻ʹؾΛऔΒΕͣʹύϑΥʔϚϯεΛൃشͰ͖Δ͔ɺͩͱࢥ͍ͬͯΔ • ՝୊ • νʔϜΛ࡞Δͱ͖Ͳ͏΍͍͔ͬͯ͘ [→ 2017༧ߘ] •

    ίʔσΟϯάҎ֎ʹൃੜ͢ΔҰൠతͳࡶ຿ʹର͢ΔͲ͏ͯ͠΋ൃੜ͢Δࣄ৅΁ͷରԠ • ղܾํ๏ • ఆܕతͳύλʔϯʹର͢ΔԠ౴Λ͋Β͔͡ΊܾΊͨΓɺࣗಈԽͰ͖Δͱ͜Ζ͸ͨ͠Γ͢Δ • Ϗϧυ΍ϦϦʔεͳΒࣗಈԽͷ࢓૊ΈΛɺOSSͷߩݙͳΒͲ͏͍͏ϨϏϡʔ߲໨ɾํ਑ͳΒϚʔδͰ͖Δ ͷ͔νʔϜͰ͍͍ͪͪ૬ஊ͠ͳ͍͍ͯ͘ϑοτϫʔΫͷ͍ܰମ੍Λ࡞Δ • ߟ͑Δ΂͖ͱ͜ΖͰ಄Λ࢖͍ɺ࡞ۀͰྲྀͯ͠ߦ͑Δ෦෼ʹ࣌ؒΛ͔͚ͳ͍Ͱιϑτ΢ΣΞΛ։ൃ͍ͯ͘͠ • ࠔͬͨͱ͖͸Ϧʔμʔʹղܾͯ͠͠·͏ʢϦʔμʔͷෛ୲͕͋Δͱ͍͏՝୊͸࢒Δʣ 6
  5. ҙࢥܾఆϙϦγʔͷߟ͑ํ • ୡ੒͍ͨ͜͠ͱɾ΍Γ͍ͨ͜ͱ • ॏཁɾॏཁͰͳ͍෺ࣄʹ͍ͭͯͷɺνʔϜͰͷਝ଎ͳҙࢥܾఆ͕͍ͨ͠ • νʔϜ։ൃ͋Δ͋Δ • ϒϨΠϯετʔϛϯάɺ΋͘͠͸ΧΦε •

    ࣗసंஔ͖৔ͷٞ࿦ ʹͳͬͯٞ࿦͕ऩଋ͠ͳ͍ • ղܾࡦ • 1໊ʙ3໊΄Ͳͦͷ෼໺ʹڧͦ͏ͳ୲౰ϝϯόʔΛબग़ͯ͠ɺͦͷϝϯόʔ͔Βఏग़͞Εͨ ఏҊΛνʔϜ಺Ͱٞ࿦͢ΔʢΏΔ͍ΞΠσΟΞ͕۩ମతʹݻ·͖͍ͬͯͯΔͷͰɺνʔϜ શମͰϨϏϡʔ͠΍͍͢ʣ • ຊ౰ʹࠔͬͨͱ͖͸Ϧʔμʔ͕ܾఆ͢Δʢ※ wikipedia: ༏͍͠ऴ਎ͷಠࡋऀ ) 8
  6. ։ൃઃܭΛٞ࿦͢Δͱ͖ • ୡ੒͍ͨ͜͠ͱɾ΍Γ͍ͨ͜ͱ • ৽ن࣮૷ɾઃܭͷݟ௚͠ͳͲɺιϑτ΢ΣΞʹେ͖ͳมߋΛՃ͍͑ͨͱ͖ͷઃܭ৘ใͷڞ༗ͱ ϨϏϡʔΛ͍ͨ͠ • ΋ͪΖΜɺνʔϜϝϯόʔશһͰϗϫΠτϘʔυ্ͰϒϨΠϯετʔϛϯά͢Δͷ͸ඇݱ࣮త • ղܾࡦ

    • σβΠϯυΩϡϝϯτͷ࡞੒ͱڞ༗ • ίʔυΛॻ͘લʹσβΠϯυΩϡϝϯτΛ࡞੒͠ɺڞ༗͠ɺϨϏϡʔͯ͠΋Β͏ελΠϧ • ୈҰʹࣥචऀͷ಄ͷதͰɺਓʹಡΊΔܗͷઃܭจॻ͕׬੒͢Δ • ࣍ʹɺͦΕΛ࢖ͬͯνʔϜϝϯόʔ͕ઃܭΛϨϏϡʔͰ͖Δঢ়ଶʹͳΔ • ઃܭͷڞ༗ͱٞ࿦͸Goݴޠͷߩݙऀ޲͚จॻͰ΋ਪ঑͞Ε͍ͯΔ 9
  7. ʲօ༷΁ͷ࣭໰ɾ໰୊ఏىʳ ιϑτ΢ΣΞͷ඼࣭ɾՄ༻ੑΛͲ͏ҡ͍͔࣋ͯ͘͠ • ۜͷ஄ؙ͕ͳ͍͜ͱʹରͯ͠Ͳ͏ΞϓϩʔνΛͱΔ͔ʢόάͷͳ͍͜ͱɺՄ༻ੑ, MTBF͸ʁʣ ʮͲ͜·Ͱςετ ͢Ε͹ऴΘΓ͕͘Δͷʁʯ • ׬ྃʹର͢Δࢦඪ͸͋Δʢৄ͘͠ͳ͍Ͱ͢ɻͦΕͰ΋ɺΫϦΞͨ͠Βຊ౰ʹ͍͍ͷʁɹͱ͍͏࿩΋͋Δʣ •

    JubatusͰ͸ςετʹՃ͑ɺQPS(Query per Second)͸ݟ͍ͯͨ • ґଘϥΠϒϥϦͷόά΋ιϑτ΢ΣΞʹӨڹ͢Δ͜ͱ͕͋ΔɻґଘϥΠϒϥϦؚΊͨ • Trusted computing baseͱ͍͏֓೦ͱɺͦΕΛࢀߟʹγεςϜͷྖҬͰ৴པ͢Δ෦෼Λݶఆ͢Δߟ͑ํ͸Ͳ͏͔ ʢ͓ͦΒ͘ҙࣝͯ͠ͳͯ͘΋࣮ફ͍ͯ͠Δʣ • ྫ͑͹ɺCPU/OS(Linux)͸όά͍ͬͯͳ͍΋ͷͱͯ͠ɺ৴པͰ͖Δͱߟ͑Δ • ΋͘͠͸ɺόάͬͯͯ΋୅ସՄೳͳ΋ͷͱͯ͠ɺγεςϜͱͯ͠ӅṭՄೳͳ΋ͷͱߟ͑Δ • ϓϩάϥϛϯάͷํ๏ɾιϑτ΢ΣΞςετͷख๏ɾγεςϜશମͷෆ۩߹ʹର͢ΔΞϓϩʔν(Chaos Monkey) ͳͲଘࡏ͍ͯ͠Δ [2017༧ߘ] • ςετέʔεϨϕϧͰɺೖྗύλʔϯΛཚ਺Ͱ͍͘Βੜ੒ͯ͠΋ॏେͳόάʹ͸໓ଟʹ౰ͨΒͳ͍ʢܦݧʣ 10
  8. ·ͱΊ • OSSͰͷҙࢤܾఆɺઃܭϨϏϡʔํ๏Λ঺հͨ͠ • [஫ҙ఺]ҙࢤܾఆʹ͍ͭͯ͸ɺνʔϜϝϯόʔ͕ࣗൃతʹߩݙ Ͱ͖ΔϝϯόʔͰߏ੒͞ΕΔͱ҉໧ͷ͏ͪʹԾఆ͍ͯ͠Δ͔ ΋ • σβΠϯυΩϡϝϯτͱϨϏϡʔମ੍ʹ͍ͭͯ঺հͨ͠ •

    ଞʹ΋ڞ༗͍ͨ͠ςʔϚ΋͋Δ͕ɺ༧ߘΛࢀর • ࣭໰ɾ໰୊ఏىͱ͍͏ܗͰɺςετͷ׬ྃ΍Մ༻ੑͷҡ࣋ͱɺղ ܾ͢Δ͔΋͠Εͳ͍Ξϓϩʔνʹ͍ͭͯऔΓ্͛ͨ 11