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

Haconiwa: プログラムによる組み立て可能性と拡張性を持つLinuxコンテナ

Haconiwa: プログラムによる組み立て可能性と拡張性を持つLinuxコンテナ

情報処理学会第80回全国大会 発表資料

KONDO Uchio

March 13, 2018
Tweet

More Decks by KONDO Uchio

Other Decks in Technology

Transcript

  1. ۙ౻Ӊஐ࿕ / ϖύϘݚڀॴɾGMOϖύϘגࣜձࣾ
    2018.03.13 ৘ใॲཧֶձୈ80ճશࠃେձ
    Haconiwa:
    ϓϩάϥϜʹΑΔɼ૊ΈཱͯՄೳੑͱ
    ֦ுੑΛ࣋ͭLinuxίϯςφ

    View Slide

  2. γχΞɾϓϦϯγύϧΤϯδχΞ
    ۙ౻Ӊஐ࿕ / @udzura
    http://blog.hogehoge.com
    Uchio Kondo
    ϖύϘݚڀॴ/ٕज़ج൫νʔϜ

    View Slide

  3. 1. ͸͡Ίʹ
    2. ίϯςφΛར༻ͨ͠Φʔτεέʔϧͷ՝୊
    3. ఏҊख๏: Haconiwa
    4. ຊख๏Λར༻ͨ͠ΞʔΩςΫνϟɾγεςϜͷྫ
    5. ·ͱΊ
    ໨࣍

    View Slide

  4. 1. ͸͡Ίʹ
    2. ίϯςφΛར༻ͨ͠Φʔτεέʔϧͷ՝୊
    3. ఏҊख๏: Haconiwa
    4. ຊख๏Λར༻ͨ͠ΞʔΩςΫνϟɾγεςϜͷྫ
    5. ·ͱΊ
    ໨࣍

    View Slide

  5. • Πϯλʔωοτ/͜ͱWebͷϢʔβ͕૿͑ͯɼΠϯλʔωοτʹެ։͞Εͨ
    αʔϏεͷӡ༻ऀͷ՝୊͕૿͑ͨ
    • ྫ͑͹ιʔγϟϧϝσΟΞʹΑΔʮόζʯʮԌ্ʯ
    • ྫ͑͹DoS/DDoS߈ܸ
    • ͜ͷΑ͏ʹɼಥൃతͳΞΫηεͷٸ্ঢ/ٸܹͳෛՙ޲্ʹ͞Β͞Εͨ৔߹ͷ
    ղܾࡦͷҰͭͱͯ͠ɼΦʔτεέʔϧʹ஫໨͕ू·͍ͬͯΔ
    લఏ: ಥൃΞΫηε૿΁ͷӡ༻తରॲ

    View Slide

  6. • Φʔτεέʔϧ: ෛՙঢ়گʹԠ͡γεςϜΛߏ੒͢Δαʔό਺౳Λޮ཰తʹ૿
    ݮ͢Δख๏
    • Φʔτεέʔϧʹ͓͍ͯ͸ɼαʔόϦιʔεΛͳΔ΂͘ߴ଎ʹ૿Ճɾݮগͤ͞
    Δඞཁ͕ੜ·ΕΔ
    • ैདྷͷαʔόϦιʔεͷԾ૝Խٕज़ʢϋΠύʔόΠβܕ/ϗετܕʣͱൺ΂ͯ

    ىಈ͕ߴ଎ͰɼϦιʔε੍ޚͷཻ౓͕ࡉ͔͍ίϯςφܕԾ૝Խ͕ීٴͭͭ͋͠
    Δ
    ͦͷ্Ͱ: ΦʔτεέʔϧˠίϯςφܕԾ૝Խ΁ͷ஫໨

    View Slide

  7. • ݱঢ়ීٴ͍ͯ͠ΔίϯςφܕԾ૝Խͷख๏ʹ͸͍͔ͭ͘՝୊͕͋Δ
    1. σϑΥϧτͰෆཁͳػೳؚΊΦʔϧΠϯϫϯͰ༗ޮʹͳΔ఺
    2. ֦ுੑʹ๡͘͠ɼཁ݅ʹ߹ΘͤΔ͜ͱ͕ࠔ೉ͳ఺
    • ͜ΕΒ͸ಛʹɼߴ͍ूੵੑΛཁٻ͢ΔWebϗεςΟϯάج൫Ͱ໰୊ʹ
    • ͜ΕΒͷ՝୊Λղܾ͢Δख๏ͱͯ͠։ൃͨ͠ίϯςφϥϯλΠϜHaconiwa

    ʹ͍ͭͯఏҊ͢Δ
    ίϯςφܕԾ૝ԽΛऔΓר͘՝୊

    View Slide

  8. 1. ίϯςφܕԾ૝Խ: ϗετܕ౳ͱҧ͍ɼϗετOSͱΧʔωϧΛڞ༗͠σόΠ
    εͷԾ૝ԽΛߦΘͳͣɼϓϩηεϕʔεͷಠཱ؀ڥͱͨ͠Ծ૝Խܗࣜ
    2. ίϯςφ: ίϯςφܕԾ૝Խܗࣜʹ͓͍ͯɼOSػೳʹΑΓಠཱੑΛ෇༩͞Ε
    ͨͦΕͧΕͷϓϩηε·ͨ͸ͦͷάϧʔϓɽΠϯελϯεͱ΋ݺͿ
    3. ίϯςφϥϯλΠϜ: ্ड़ͷίϯςφͷىಈɼఀࢭɼͱ͍ͬͨϥΠϑαΠΫϧ
    Λ؅ཧ͢ΔͨΊͷιϑτ΢ΣΞ

    ༻ޠͷఆٛ
    ίϯςφ

    ϥϯλΠϜ
    ίϯςφ
    ʢϗετͷ-JOVY04ʣ

    View Slide

  9. 1. ͸͡Ίʹ
    2. ίϯςφΛར༻ͨ͠Φʔτεέʔϧͷ՝୊
    3. ఏҊख๏: Haconiwa
    4. ຊख๏Λར༻ͨ͠ΞʔΩςΫνϟɾγεςϜͷྫ
    5. ·ͱΊ
    ໨࣍

    View Slide

  10. 1. Πϯελϯεͷ௥Ճॲཧ͕௿଎Ͱ͋Δ
    2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰͕௿͍
    3. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάͷ஗Ԇ
    4. εέʔϦϯά͢΂͖ঢ়گݕ஌ͷϦΞϧλΠϜੑ͕௿͍

    দຊΒ(*)ʹΑΔΦʔτεέʔϧͷ՝୊

    'BTU$POUBJOFS࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟʢൃදࢿྉʣ 

    [email protected]JBOIVBOJTV[BPLVTIJ
    ZJOHEFLJSVIFOHDIBOHYJOHXPDIJUVTJTVUFNVBLJUFLVUJZB

    View Slide

  11. • ϗετܕ΍ϋΠύʔόΠβܕͱൺֱͨ͠৔߹
    • 1, 3. ʹ͍ͭͯ: ίϯςφ͸ىಈ΍ఀࢭ͕ߴ଎Ͱ͋Γɼ޲͍͍ͯΔ
    • 2. ʹ͍ͭͯ: ίϯςφʹϓϩηε͸๛෋ͳAPIʹΞΫηεͰ͖ɼϦιʔε੍ޚ
    Λࡉ͘Ͱ͖Δɽ޲͍͍ͯΔ
    • 4. ʹ͍ͭͯ͸ϓϩηεͱ͍͏ಛੑ্؂ࢹΛৄࡉ͔ͭܰྔʹͰ͖Δͱߟ͑ΒΕ
    Δ͕ɼຊ࿦จͰ͸ߟ࡯͍ͯ͠ͳ͍
    ՝୊ʹରͯ͠ίϯςφΛར༻ͨ͠৔߹

    View Slide

  12. • Docker: https://www.docker.com/
    • LXC: https://linuxcontainers.org/lxc/introduction/
    • ͜ΕΒͷίϯςφϥϯλΠϜʹؔͯ͠͸ɼIEEE Cloud Computingࢽͷ
    “Containers and Cloud: From LXC to Docker to Kubernetes” ίϥϜΛ͸͡
    Ίɼ঺հهࣄʹ͍ͱ·͕ͳ͍
    Ұ୴ͷ݁࿦: ίϯςφܕԾ૝Խͷ࠾༻

    View Slide

  13. 1. ෆཁͳػೳΛ؆୯ʹআ֎Ͱ͖ͳ͍఺
    2. γεςϜཁ݅Λຬͨ͢Α͏ͳ֦ு͕؆୯ʹͰ͖ͳ͍఺

    ͞ΒͳΔ՝୊: طଘͷίϯςφϥϯλΠϜͷ໰୊

    View Slide

  14. • ͜͜·Ͱʹ͋͛ͨΑ͏ͳίϯςφϥϯλΠϜ͸ɼσϑΥϧτͰ਺ଟ͘ͷίϯς
    φΛ࣮ݱ͢Δػೳ͕ηοτͰ༗ޮʹͳΔ
    • ར༻ऀͱͯ͠͸ৄࡉΛؾʹͤͣԾ૝؀ڥΛར༻Ͱ͖ΔϝϦοτͰ΋͋Δ
    • ҰํͰɼಛʹϦιʔεޮ཰΍ूੵੑͱ͍͏؍఺͔ΒɼಛఆͷػೳΛແޮԽͨ͠
    ͍ͱ͍͏धཁ͕ଘࡏ͢Δ
    • ྫ͑͹ɼOSͷrootfsΛ࠶ར༻͍ͨ͠ɼωοτϫʔΫΛࣗ෼Ͱ੍ޚ͍ͨ͠ଞ
    • ཧ࿦্͸ͲͷΑ͏ͳίϯςφϥϯλΠϜͰ΋ՄೳͰ͋Δ͕ɼDockerͳͲͷ
    ৔߹໌֬ʹυΩϡϝϯτ͕ଘࡏ͠ͳ͍ͳͲɼར༻͕೉͍͠
    ෆཁͳػೳΛ؆୯ʹআ֎Ͱ͖ͳ͍఺

    View Slide

  15. • ઌड़ͷIEEEͷίϥϜͰ͸ίϯςφͷΫϥελϦϯάʹ͸Kubernetes͕ར༻Ͱ
    ͖Δͱड़΂͍ͯΔ
    • Kubernetes: https://kubernetes.io/
    • Ұํɼݱࡏͷঢ়گͰ͸ɼKubernetesͱDockerͷ૊Έ߹ΘͤͳͲطଘͷΫϥε
    λϦϯάελοΫͰ࣮ݱ͕೉͍͠ཁ݅΋͋Δ
    • ϗεςΟϯά༻్ͷ৔߹ɼߴूੵੑ͕ٻΊΒΕΔͷͰɼίϯςφࣗ਎ͷঢ়ଶ
    ʹΑΓϦιʔεׂΓ౰ͯΛมߋ͢ΔͳͲɼࡉ͔͍ࣗݾ੍ޚ͕ٻΊΒΕΔ
    γεςϜཁ݅Λຬͨ͢Α͏ͳ֦ு͕؆୯ʹͰ͖ͳ͍఺

    View Slide

  16. 1. ඞཁɾෆཁͳػೳͷ૊Έ߹ΘͤΛར༻ऀ͕؆ܿʹهड़Ͱ͖Δ͜ͱ
    2. γεςϜཁ݅Λຬͨ͢Α͏ͳ֦ு͕؆୯ʹͰ͖Δ͜ͱ

    ϗεςΟϯά༻్Λ૝ఆ͢Δͱɼྫ͑͹:
    ᶃ ίϯςφͷىಈɾఀࢭͳͲͷϥΠϑαΠΫϧΠϕϯτɼίϯςφىಈޙҰ
    ఆظؒޙΛܖػͱ࣮ͯ͠ߦ͞ΕΔॲཧ͕هड़ՄೳͰ͋Δ͜ͱ
    ᶄ ֎෦ͷ HTTP API ͱͷ࿈ܞɼίϯςφػೳҎ֎ͷOSػೳͷ׆༻ͳͲ͕Մ
    ೳʹͳΔߴ͍֦ுੑ͕͋Δ͜ͱ

    ίϯςφʹ͓͚Δ՝୊Λղܾ͢Δʹ͸

    View Slide

  17. 1. ͸͡Ίʹ
    2. ίϯςφΛར༻ͨ͠Φʔτεέʔϧͷ՝୊
    3. ఏҊख๏: Haconiwa
    4. ຊख๏Λར༻ͨ͠ΞʔΩςΫνϟɾγεςϜͷྫ
    5. ·ͱΊ
    ໨࣍

    View Slide

  18. Haconiwa

    • චऀΒʹΑΔίϯςφϥϯλΠϜͷ

    ͍࣮ͪ૷ɼ2016೥ʹެ։
    • Φʔϓϯιʔειϑτ΢ΣΞͰ͋Δ

    View Slide

  19. • ඞཁɾෆཁͳػೳͷ૊Έ߹ΘͤΛར༻ऀ͕؆ܿʹهड़Ͱ͖Δ͔:
    • ૊Έ߹ΘͤΛϥϯλΠϜͷػೳͱͯ͠αϙʔτ͠ɼޙड़͢Δmrubyͱ͍͏

    ૊ΈࠐΈ಺෦ݴޠ(DSL)Λར༻͠هड़ੑߴ͘ॻ͚Δ
    • ϥΠϑαΠΫϧΠϕϯτɼίϯςφىಈޙҰఆظؒޙΛܖػͱͨ͠ॲཧ:
    • DSLͰ༷ʑͳछྨͷϑοΫॲཧΛαϙʔτ͍ͯ͠Δ
    • ֎෦ͷ HTTP API ͱͷ࿈ܞ࣮૷ͳͲߴ͍֦ுੑ:
    • DSLͰͷϓϩάϥϛϯάɼ֎෦ϥΠϒϥϦͷຒΊࠐΈ͕Մೳ
    ՝୊ʹରͯ͠ͷHaconiwa

    View Slide

  20. Haconiwaͷ
    ৄࡉͳػೳ

    View Slide

  21. • Linux͸ίϯςφͷ࡞੒ʢචऀ͸ϓϩηεΛίϯςφԽ͢Δͱදݱ͢ΔʣΛෳ
    ਺ͷػೳɾγεςϜίʔϧͷ૊Έ߹ΘͤͰ࣮ݱ͢ΔɽͦΕΒͷػೳ͸෼ྨͰ͖ɼ
    ·ͨHaconiwaʹ͓͍ͯ͸ࣗ༝ʹ૊Έ߹Θ͕ͤՄೳͰ͋Δ
    1. OSϦιʔεͷ෼཭ػೳ: chrootγεςϜίʔϧɼLinux Namespace
    2. OSϦιʔεͷ੍ݶػೳ: cgroupsɼrlimitγεςϜίʔϧ
    3. εʔύϢʔβݖݶͷ෼ׂ: Linux Capability
    4. γεςϜίʔϧͷϑΟϧλػߏ: seccomp
    3.1. ίϯςφԾ૝Խػೳ΁ͷରԠ

    View Slide

  22. ରԠػೳͷਤදʢ࣮ݱ͢ΔγεςϜίʔϧ౳΋ܝࣔʣ

    ෼ྨ ໊শ ৄࡉ
    04Ϧιʔεͷִ཭ DISPPU

    ͋ΔαϒσΟϨΫτϦʹల։ͨ͠04ͷϑΝΠϧγε
    ςϜʹೖΓɼผͷ04ͷΑ͏ʹݟͤΔ
    04Ϧιʔεͷִ཭
    -JOVY/BNFTQBDF

    TFUOT
    VOTIBSF


    ຊདྷ04ͰάϩʔόϧͳϦιʔεʢϗετ໊ɼ/*$ͳ
    Ͳʣʹ໊લۭؒΛ࡞ΓɺผͷϦιʔεΛ࣋ͨͤΔ
    04Ϧιʔεͷ੍ݶ
    DHSPVQT

    DHSPVQGTΛར༻

    ೚ҙͷϓϩηεΛάϧʔϐϯά͠$16ɼϝϞϦɼॴ
    ଐϓϩηε਺ͳͲΛ੍ݶ͋Δ͍͸ܭଌ͢Δ
    04Ϧιʔεͷ੍ݶ SMJNJU
    QSMJNJU

    جຊతʹϓϩηεπϦʔ୯ҐͰ$16ɼϝϞϦɼϑΝ
    Πϧهड़ࢠ਺ͳͲΛ੍ݶ͢Δ
    ݖݶ෼ׂ
    -JOVY$BQBCJMJUZ
    QSDUM
    MJCDBQ


    εʔύϢʔβͷ࣋ͭಛݖΛز͔ͭʹ෼ׂ͠ɼҰ෦Λ෇
    ༩͋Δ͍͸ണୣ͢Δ
    γεςϜίʔϧ
    ϑΟϧλ
    TFDDPNQ
    TFDDPNQ
    MJCTFDDPNQ

    γεςϜίʔϧͱͦͷҾ਺ͷ৚݅͝ͱʹɼͦͷݺͼग़
    ͠Λ੍ݶɾڐՄ͢Δ

    View Slide

  23. • ͪ͜Β΋දʹҰཡ͢Δ
    3.2. ϑοΫػߏ΁ͷରԠ

    ໊শ ৄࡉ
    ϥΠϑαΠΫϧϑοΫ
    ىಈɼGPSL੒ޭɼఀࢭɼࣦഊͱ͍ͬͨίϯςφͷϥΠϑαΠΫϧʹ
    ؔΘΔΠϕϯτ͝ͱʹ೚ҙͷॲཧΛ࣮ߦͰ͖Δ
    λΠϜΞ΢τϑοΫ
    ىಈ੒ޭޙɺίϯςφຊମͷॲཧͱ͸ඇಉظͷܗͰɼҰఆ࣌ؒܦա
    ޙʹ೚ҙͷॲཧΛ࣮ߦͰ͖ΔɽΠϯλʔόϧͷҰճ͚ͩͷܗ
    ΠϯλʔόϧϑοΫ
    ىಈ੒ޭޙɺίϯςφຊମͷॲཧͱ͸ඇಉظͷܗͰɼҰఆ࣌ؒͷΠ
    ϯλʔόϧΛऔͬͯ೚ҙͷॲཧΛఆظ࣮ߦͰ͖Δ
    γάφϧϋϯυϥ
    ίϯςφΛ؅ཧ͢ΔϓϩηεʢεʔύʔόΠβʣʹ೚ҙͷλΠϛϯ
    άͰಛఆͷγάφϧΛૹ෇͢Δͱɺ೚ҙͷॲཧΛ࣮ߦͰ͖Δ

    View Slide

  24. • ଞͷίϯςφϥϯλΠϜͰ͸ϥΠϑαΠΫϧΠϕϯτΛϕʔεͱͨ͠ϑοΫػ
    ߏΛαϙʔτ͍ͯ͠Δ
    • ྫ: Docker(ϥΠϑαΠΫϧΠϕϯτΛ؂ࢹ͢ΔHTTP APIΛ༻ҙ)ɼLXC(ઃఆ
    ϑΝΠϧͰ೚ҙͷίϚϯυΛ࣮ߦࢦఆՄೳ)
    • ҰํͰɼλΠϜΞ΢τ΍ΠϯλʔόϧϑοΫʹؔͯ͠͸ݱࡏHaconiwaͷΈ͕
    ίϯςφϥϯλΠϜ૊ΈࠐΈͰαϙʔτ͢Δ
    • ͜ͷϑοΫ͸ɼޙड़ͷFastContainerͷΑ͏ͳίϯςφͷੜଘظؒΛࢦఆ͢
    Δػೳͷ࣮ݱͱ૬ੑ͕ྑ͍
    ิ଍: ϑοΫػߏʹ͍ͭͯͷଞ࣮૷ͱͷൺֱ

    View Slide

  25. • Haconiwa͸mrubyͱݺ͹ΕΔܰྔͳRubyͷ

    ࣮૷Λ૊ΈࠐΜͰ͍Δ
    • ίϯςφͷઃఆ΍ϑοΫॲཧΛ

    DSL(Domain Specific Language)Ͱهड़͠ɼ

    Haconiwaʹ૊ΈࠐΜͩmrubyͰධՁ͠ɼ൓өɾ࣮ߦՄೳͰ͋Δ
    3.3. εΫϦϓτݴޠmrubyͷ૊ΈࠐΈ

    View Slide

  26. • ͍ΘΏΔCRubyͱޓ׵ੑ͕͋Δจ๏
    • εΫϦϓτݴޠʹ׳Εͨ

    ར༻ऀͰ͋Ε͹ಡΈ΍͘͢

    ೃછΈ΍͍͢Ͱ͋Ζ͏ͱ

    ߟ͑ΒΕΔ
    DSL ͷྫ

    View Slide

  27. • mrubyʹ͸mrbgemsͱݺ͹ΕΔ֎෦ϥΠϒϥϦͷ࢓૊Έ͕͋Δ
    • Haconiwaʹ૊Έࠐ·ΕΔmrubyΛϏϧυ͢ΔࡍʹɼΠϯλʔωοτͳͲΛܦ
    ༝ͯ͠ಛఆͷػೳΛ࣮ݱͨ͠mrbgemsΛμ΢ϯϩʔυ͠ɼػೳίʔυΛ
    mrubyͦͷ΋ͷͱಉࠝ͢Δ͜ͱ͕Մೳͱͳ͍ͬͯΔ
    • ୯ମͷmrbgemͷ։ൃ΋Rubyݴޠ͋Δ͍͸CݴޠΛར༻͠൚༻తʹՄೳ
    • ࣮ࡍචऀΒ͸ɼઌड़ͨ͠ίϯςφؔ࿈ػೳͷར༻Λ୯ମͷgemʹ͍ͯ͠Δ
    ิ଍: mrubyͷΤίγεςϜΛར༻֦ͨ͠ுੑ

    View Slide

  28. • චऀΒʹΑΔʮmrubyΛར༻ͨܰ͠ྔίϯςφΫϥ΢υج൫ͷݚڀ։ൃΛհ͠
    ͨmrubyͷେن໛ɾߴෛՙςετʯ͕2017೥౓Ruby Association։ൃॿ੒(*)
    ʹ࠾୒͞Ε͍ͯΔ
    • Haconiwaͷ։ൃʹ͓͍ͯɼຊॿ੒ʹΑΔRubyΞιγΤʔγϣϯ͔Βͷϝϯ
    λʔʢ·ͭ΋ͱΏ͖ͻΖࢯʣͷΞυόΠε౳͕Ұॿʹͳͬͨ͜ͱΛ෇ه͢Δ
    ิ଍: RubyΞιγΤʔγϣϯΑΓͷॿ੒


    IUUQXXXSVCZPSKQKBOFXT

    View Slide

  29. 1. ͸͡Ίʹ
    2. ίϯςφΛར༻ͨ͠Φʔτεέʔϧͷ՝୊
    3. ఏҊख๏: Haconiwa
    4. ຊख๏Λར༻ͨ͠ΞʔΩςΫνϟɾγεςϜͷྫ
    5. ·ͱΊ
    ໨࣍

    View Slide

  30. • චऀΒ͸৽نʹίϯςφΛ؅ཧ͠ɺΫϥελϦϯά΍ΦʔέετϨʔγϣϯʹ
    ར༻͢ΔΞʔΩςΫνϟΛߟҊͨ͠ɽͦΕΛFastContainerͱݺͿ
    • FastContainerͷಛ௃:
    • ίϯςφΛɺඞཁʹͳΔ·Ͱىಈͤͣɼ·ͨෆཁʹͳͬͨΒഁغ͢Δ
    • ίϯςφͷىಈͷཻ౓͸ϦΫΤετ୯Ґ͝ͱͳͲॆ෼ʹਫ਼៛ʹ͢Δ
    • ίϯςφΛ॥؀ͤ͞Δ͜ͱͰɼγεςϜશମͷ߃ৗੑΛ࣮ݱ͢Δ
    • ϥΠϒϥϦ΍ΞϓϦέʔγϣϯͷࣗಈަ୅ɼϚΠάϨʔγϣϯͷ࣮ݱͳͲ
    FastContainer: ίϯςφ؅ཧΞʔΩςΫνϟ

    View Slide

  31. • FastContainerΛ࣮ݱ͢Δݱࡏͷ࣮૷(*)ʹ͸ɼHaconiwa͕࠾༻͞Ε͍ͯΔ
    • ౰࣮֘૷΁ͷ࠾୒ͷཧ༝͸:
    • ઃఆ૊Έ߹ΘͤՄೳੑʹΑΓɼػೳΛௐ੔͠ىಈΛܰྔʹͰ͖ͨ఺

    ʢαʔϏεͱߟ͑Δͱࡉ͔͘ूੵੑ੍͕ޚͰ͖ͨ఺΋ϝϦοτͰ͋ͬͨʣ
    • ֦ுੑɼ͜ͱλΠϜΞ΢τϑοΫػೳʹΑΓɼҰఆظؒͷఀࢭͱ͍͏
    FastContainerͷཁ݅Λ༰қʹ࣮ݱͰ͖ͨ఺
    FastContainerͱHaconiwa


    ϩϦϙοϓʂϚωʔδυΫϥ΢υ (.0ϖύϘ

    IUUQTNDMPMJQPQKQ

    View Slide

  32. • ϖύϘݚڀॴΑΓ࿦จ(*)ɾൃදࢿྉ(**)͕ग़͍ͯΔͨΊɼࢀরͯ͠΄͍͠
    FastContainer ʹؔ͢Δؔ࿈৘ใ


    [email protected]
    GBTUDPOUBJOFSTIJYJOHIVBOKJOHGBMTFCJBO
    IVBOJTV[BPLVTIJZJOHEFLJSVIFOHDIBOH
    YJOHXPDIJUVTJTVUFNVBLJUFLVUJZB

    IUUQTSBOEQFQBCPDPNBSUJDMF
    JPUNBUTVNPUPSZ

    View Slide

  33. 1. ͸͡Ίʹ
    2. ίϯςφΛར༻ͨ͠Φʔτεέʔϧͷ՝୊
    3. ఏҊख๏: Haconiwa
    4. ຊख๏Λར༻ͨ͠ΞʔΩςΫνϟɾγεςϜͷྫ
    5. ·ͱΊ
    ໨࣍

    View Slide

  34. • ΠϯλʔωοτɾWebϢʔβͷ֦େʹΑΓɺαʔϏεӡ༻ऀ͸༧ଌͰ͖ͳ͍
    ෛՙ޲্ͳͲʹରԠ͠ͳ͚Ε͹ͳΒͣɼΦʔτεέʔϧʹ஫໨͕ू·Δ
    • ͦͷج൫Ͱίϯςφ͕ීٴ͢Δ͕ɼϗεςΟϯάͰͷར༻ʹ՝୊
    • ՝୊Λड͚Haconiwa͕࣮ݱͨ͠ಛ௃:
    • ૊Έ߹ΘͤՄೳੑ: ίϯςφΛ࣮ݱ͢ΔػೳΛࣗ༝ʹ૊Έ߹ΘͤՄೳ
    • ֦ுੑ: ϑοΫͷ࣮ߦ΍ಛԽͨ͠ػೳͷ࣮૷͕༰қ
    • FastContainerͱ͍͏ΞʔΩςΫνϟͰར༻͠αʔϏεΠϯ͍ͯ͠Δ
    ·ͱΊ

    View Slide

  35. • ଞͷίϯςφϥϯλΠϜ͕αϙʔτ͢ΔҰ෦ػೳ͕ະ࣮૷
    • ۩ମతʹ͸Mandatory Access Control(SELinux/AppArmorଞ)ͱͷ࿈ܞͳͲ
    • ϑοΫػߏɼྫ֎ػߏͳͲΛΑΓ҆ఆͤ͞࢖͍΍͘͢͢Δ
    • ར༻ऀ਺͕·ͩগͳ͘ɼ৘ใ΋গͳ͍
    • ΤίγεςϜΛॆ࣮ͤ͞ΔɽυΩϡϝϯτ΋΋ͪΖΜͰ͋Δ͕ɼHaconiwa
    Λར༻ͨ͠ίϯςφ؅ཧΛ؆୯ʹମݧͰ͖ΔΑ͏ͳOSS΋ݕ౼͢Δ
    ՝୊ͱࠓޙͷHaconiwa

    View Slide

  36. • Haconiwa͸ݱࡏɼFastContainerΞʔΩςΫνϟͱͷซ༻ͷΈ͕ࣄྫͱͳͬͯ
    ͍Δɽ·ͨɼFastContainerͱ૊Έ߹ΘͤͰ౰ॳͷ՝୊ͷղܾΛࢼΈ͍ͯΔ
    • FastContainerͷ࣮ݱʹ࠷΋ద͍ͯ͠Δ͜ͱ͸ݴ͑ΔͩΖ͏
    • ࠓޙɼHaconiwaࣗ਎͕͍࣋ͬͯΔ 1)૊Έ߹ΘͤՄೳੑ 2)֦ுੑ ͦΕͧΕ͕
    ଞͷΞʔΩςΫνϟ΍ɼOSSͷॾπʔϧͱͷ࿈ܞͷ্Ͱ΋༗ޮͰ͋Δ͜ͱΛ࣮
    ূ͍͖͍ͯͨ͠
    • ͦͷͨΊʹ΋ଞͷπʔϧͱͷ࿈ܞੑΛߴΊΔ͜ͱΛߟ͍͑ͯΔ
    ΤίγεςϜʹؔ͢Δ՝୊ͷิ଍

    View Slide

  37. • ຊ࿦จ͸ɼڞஶऀͷ΄͔ҎԼͷํʑΑΓॿݴɾఏҊΛ͍͍͍ͨͩͯΔɽ
    • ۝भେֶ Ԭଜߞೋઌੜɼౢ٢ོ෉ઌੜɼּݪٛߊઌੜ
    • GMOϖύϘݚڀॴސ໰ ྗ෢݈ٕ࣍ज़࢜
    • ΫοΫύου ࡫ాߞҰ͞Μ
    • ຊ࿦จͷ಺༰͸ɼฏ੒29೥౓ ࠃཱ৘ใֶݚڀॴΫϥ΢υར׆༻࣮ূ࣮ݧʹ͓
    ͚Δ੒ՌͷҰ෦Λར༻͍ͯ͠Δ
    ँࣙ

    View Slide