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

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

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

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