$30 off During Our Annual Pro Sale. View Details »

インフラ自動化の落とし穴と宣言的アーキテクチャ

 インフラ自動化の落とし穴と宣言的アーキテクチャ

2020/07/14
Cybozu Tech Meetup #3

Yusuke Nojima

July 14, 2020
Tweet

More Decks by Yusuke Nojima

Other Decks in Technology

Transcript

  1. ΠϯϑϥࣗಈԽͷམͱ݀͠ͱ
    એݴతΞʔΩςΫνϟ
    $ZCP[V5FDI.FFUVQ
    ։ൃຊ෦ :BLVNPνʔϜ
    ໺ౡ ༟ี

    View Slide

  2. ࠓ೔࿩͢͜ͱ
    ΠϯϑϥࣗಈԽͷམͱ݀͠
    એݴతΞʔΩςΫνϟͱσϓϩΠύΠϓϥΠϯ

    View Slide

  3. ΠϯϑϥࣗಈԽͷམͱ݀͠

    View Slide

  4. DZCP[VDPN ͷΠϯϑϥ
    • ࠃ಺ͷΦϯϓϨ%$Ͱӡ༻
    • ෺ཧαʔόʔ 1,000 ୆Ҏ্
    • ΠϯϑϥͷͨΊͷ1ZUIPOίʔυ 100,000 ߦҎ্

    View Slide

  5. ࣗಈԽͷྲྀΕ
    ਓ͕खͰΦϖϨʔγϣϯ
    खॱॻ

    ΦϖϨʔγϣϯͷճ਺͕૿Ճ
    ࣗಈԽͷػӡ͕ߴ·Δ
    ࣗಈԽʂ
    खॱॻΛ 1ZUIPOεΫϦϓτʹ

    View Slide

  6. ࣗಈԽͷྫ
    • ΞϓϦέʔγϣϯͷΞοϓσʔτ
    • "1αʔόʔͷ੾Γ཭͠ɺϓϩάϥϜͷஔ͖׵͑ɺ%#ϚΠά
    ϨʔγϣϯɺόονͷҰ࣌ఀࢭɺϝλσʔλͷॻ͖׵͑ͳͲ
    ௕େͳखॱΛҰίϚϯυʹ
    • ͜ΕͰΦϖϨʔλʔ͸ΞοϓσʔτखॱͷৄࡉΛ஌Βͳͯ͘
    ΋ΞοϓσʔτͰ͖Δʜ͸ͣͩͬͨ

    View Slide

  7. ͱ͜Ζ͕ʜ
    ͑ͬɺ͜ͷίϚϯυଧͭલʹ
    αʔϏε"ΛࢭΊͳ͍ͱ͍͚ͳ͍ΜͰ͔͢ʁ
    ͋Εɺ͜ͷίϚϯυଧͬͨΒ
    উखʹόονॲཧ͕ࢭ·ͬͨΜͰ͚͢Ͳʁ
    ҙຯͷΘ͔Βͳ͍ΤϥʔΛు͍ͯ
    ࢭ·ͬͪΌͬͨΜͰ͕͢ʜ
    ͑ɺ͜ͷίϚϯυͱಉ࣮࣌ߦͰ͖ͳ͍ΜͰ͔͢ʁ

    View Slide

  8. ͜ͷίϚϯυΛ࣮ߦ͢Δͱ
    Կ͕ى͜Δ͔Θ͔Βͳ͍͔Β
    ࣄલʹԿ͕࣮ߦ͞ΕΔ͔ௐ΂͓͔ͯͳ͍ͱʜ
    ಉ࣮࣌ߦͰΤϥʔ͕ى͜Δͱ͍͚ͳ͍͔Βɺ
    ଞͷΦϖϨʔλʔ͕ͲΜͳίϚϯυΛ࣮ߦ͢Δͷ͔
    ͪΌΜͱฉ͍͓ͯ͜͏ʜ

    View Slide

  9. ΦϖϨʔγϣϯ
    ϓϥϯχϯά
    ΦϖϨʔγϣϯ࣮ࢪ
    ͲͷίϚϯυΛଧͭʁ
    લఏ৚݅͸ʁ

    View Slide

  10. ΦϖϨʔγϣϯ
    ϓϥϯχϯά
    ΦϖϨʔγϣϯ࣮ࢪ
    Ϝζ͗͢ʜ
    Πϯϑϥͷେن໛Խ

    ࣗಈԽʹΑΔฐ֐

    View Slide

  11. ݁ہͲ͏͢Δ΂͖ͩͬͨͷ͔ʁ
    ΦϖϨʔγϣϯ
    ϓϥϯχϯά
    ΦϖϨʔγϣϯ࣮ࢪ
    ͍··Ͱͷ
    ࣗಈԽ
    ໨ࢦ͢΂͖
    ࣗಈԽ

    View Slide


  12. ʜʜͲ͏΍Δͷʁ
    ͍Ζ͍Ζͱٞ࿦ɾݕ౼͢Δ΋̎೥͙ؒΒ͍ਐḿͤͣ

    View Slide

  13. ೥ɺ͜Μͳঢ়گʹసػ͕๚ΕΔʂʂ

    View Slide

  14. 64൛LJOUPOFͷ"84Ҡߦ

    View Slide

  15. :BLVNPϓϩδΣΫτ
    • 64൛LJOUPOFͷͨΊʹ"84্ͰΠϯϑϥΛθϩ͔Βߏங͢Δ
    ϓϩδΣΫτ͕ൃ଍
    • ΞϝϦΧͰചΔͳΒΞϝϦΧʹ%$͕ඞཁ
    • ΦϯϓϨ%$͡Όͳͯ͘"84Ͱ

    View Slide

  16. • ࠷ॳ͔ΒࣗಈԽΛલఏͱͨ͠ΞʔΩςΫνϟ
    • Πϯϑϥ͚ͩͰͳ͘ΞϓϦέʔγϣϯ LJOUPOF
    ʹ΋
    खΛՃ͑Δ
    • %FW0QTΛҙࣝͨ͠૊৫ߏ଄
    • %FW͔ͭ 0QTͳνʔϜɻนΛऔΓ෷͓͏
    શମ࠷దΛ໨ࢦͧ͢ʂʂ

    View Slide

  17. ࣗಈԽ໰୊΁ͷιϦϡʔγϣϯ
    • ΠϯϑϥࣗಈԽͷ໰୊ΛҰܸͰղܾ͢Δ୯ҰͷιϦϡʔγϣϯ͸ͳ͍
    • ࡉ͔͍໰୊ʹ෼ղͯ͠ݸผܸഁ
    • એݴతΞʔΩςΫνϟ
    • ϚωʔδυαʔϏεͷಋೖ
    • ϦϦʔεϓϩηεվળ
    • ૊৫ମ੍มߋ
    • ʜ
    ࠓ೔͸͜Εͷ࿩͕ϝΠϯ

    View Slide

  18. ద༻खॱʹ͍ͭͯߟ͑Δ

    View Slide

  19. l43&͸ɺ͓Αͦ ͷαʔϏεো֐͸ɺಈ࡞தͷγεςϜͷ
    มߋʹΑͬͯੜ͍ͯ͡Δ͜ͱΛൃݟ͠·ͨ͠z
    #FUTZ#FZFSଞʮαΠτϦϥΠΞϏϦςΟΤϯδχΞϦϯάʯ ΦϥΠϦʔɺ೥ɺQ

    View Slide

  20. ALB
    Aurora
    Aurora
    nginx
    slash-ap kintone-ap
    pod
    service
    EKS Cluster
    Elastic
    search
    kintone-ap
    (kintone 本体)
    kintone-ap
    (kintone 本体)
    ミドルウェア、
    管理サービス等
    いろいろ
    kintone-ap
    (kintone 本体)
    kintone-ap
    (kintone 本体)
    slash-ap
    (ユーザー管理)
    slash-ap
    (ユーザー管理)
    VPC
    nginx
    nginx

    View Slide

  21. ద༻खॱ
    • Πϯϑϥ͸ଟ਺ͷখ͞ͳαʔϏεʹΑͬͯߏ੒͞Ε͍ͯΔ
    • :BLVNPͷ৔߹͸ݸ͙Β͍
    • ͜Ε·Ͱ͸ɺαʔϏεΛมߋͨ͠ͱ͖ʹखಈͰద༻खॱΛ࡞͍ͬͯͨ
    • ʮϥΠϒϥϦΛมߋ͔ͨ͠ΒɺαʔϏε"ͱαʔϏε#Λߋ৽ͯ͠࠶ى
    ಈͯ͠ʜʯ
    • Өڹൣғͷ࿙ΕʹΑΔద༻ϛε͕ൃੜ͠΍͍͢

    View Slide

  22. ద༻खॱΛͳͤ͘ͳ͍͔ʁ

    View Slide

  23. ద༻खॱΛͳͤ͘ͳ͍͔ʁ
    ˠ ιʔείʔυͷΈ͕༩͑ΒΕͨͱ͖ʹ
    ࣗಈతʹͦΕΛσϓϩΠͰ͖Δ͔ʁ

    View Slide


  24. debian10

    corretto11
    service A service B service C

    shared-kernel
    ιʔείʔυؒͷґଘάϥϑ

    View Slide

  25. TIBSFELFSOFMΛมߋͨ͠৔߹͸ʁ

    debian10

    corretto11
    service A service B service C

    shared-kernel
    TFSWJDF#ͱ TFSWJDF$ΛσϓϩΠ

    View Slide


  26. debian10

    corretto11
    service A service B service C

    shared-kernel
    EFCJBOΛมߋͨ͠৔߹͸ʁ
    TFSWJDF" # $ΛσϓϩΠ

    View Slide

  27. ͑ͬ ͜Εμϝ͡Όͳ͍ʁ

    View Slide

  28. ᶃ ιʔείʔυ͕มԽ͍ͯ͠ͳͯ͘΋σϓϩΠ͕ඞཁͳ৔߹͸ͳ͍ͷʁ
    ᶄ σϓϩΠʹΑΔαʔϏεӨڹͱ͔ىಈॱং੍ޚͱ͔Ͳ͏͢Δͷʁ

    View Slide

  29. ᶃ ιʔείʔυ͕มԽ͍ͯ͠ͳͯ͘΋σϓϩΠ͕ඞཁͳ৔߹͸ͳ͍ͷʁ
    ᶄ σϓϩΠʹΑΔαʔϏεӨڹͱ͔ىಈॱং੍ޚͱ͔Ͳ͏͢Δͷʁ

    View Slide

  30. l࠶ݱੑz
    • ϏϧυͱσϓϩΠʹ࠶ݱੑΛ΋ͨͤΔ
    • ࠶ݱੑͱ͸
    • ιʔείʔυ͕ಉ͡Ͱ͋Ε͹੒Ռ෺͕ಉ͡ͱ͍͏ੑ࣭
    • ͢ͳΘͪɺιʔείʔυ͕มԽ͠ͳ͚Ε͹σϓϩΠෆཁ

    View Slide

  31. ࠶ݱੑͷ͋ΔϏϧυ
    ྫ͑͹ʜ
    • ґଘϥΠϒϥϦͷόʔδϣϯ͸શͯݻఆ͢Δ
    • ࠷ۙͷϏϧυπʔϧͳΒΘΓͱ؆୯
    • EPDLFS ͷϕʔεΠϝʔδ͸ෆมͳϥϕϧΛࢦఆ͢Δ
    • lMBUFTUz͸μϝ
    • ωοτϫʔΫӽ͠ͷϑΝΠϧμ΢ϯϩʔυʹ஫ҙ
    • ಉ͡63-ͰผͷϑΝΠϧ͕མͪͯ͜ͳ͍͔ʁ

    View Slide

  32. AP Server,
    Middlewares
    Network
    Database
    物理
    CloudFormation
    Kubernetes
    AWS なら
    気にしなくていい
    ࠶ݱੑͷ͋ΔσϓϩΠ
    Load Balancer
    Monitoring (Datadog),
    Alerts (PagerDuty)
    Terraform

    View Slide

  33. ᶃ ιʔείʔυ͕มԽ͍ͯ͠ͳͯ͘΋σϓϩΠ͕ඞཁͳ৔߹͸ͳ͍ͷʁ
    ᶄ σϓϩΠʹΑΔαʔϏεӨڹͱ͔ىಈॱং੍ޚͱ͔Ͳ͏͢Δͷʁ

    View Slide

  34. l͍ͭͰ΋σϓϩΠͯ͠Α͍z
    • શͯͷαʔϏεΛʮ͍ͭͰ΋σϓϩΠͰ͖Δʯঢ়ଶʹอͭ
    • σϓϩΠͰ͖ͳ͍ঢ়ଶʹͳΔͱͨ͠Βෆ۩߹ͱͯ͠ରॲ
    • ͦ΋ͦ΋"84Ͱ͸&$ΠϯελϯεͷಥવࢮʹରԠ͠ͳ͍
    ͱ͍͚ͳ͍ͷͰɺඞવతʹ͜ͷ৚͕݅ඞཁ
    ΦϯϓϨతࢥߟ͔Βͷ୤٫

    View Slide

  35. l͍ͭͰ΋σϓϩΠͯ͠Α͍zͷͨΊʹ
    • όονॲཧதʹσϓϩΠ͕૸Δͱ௨৴அʹΑΓΤϥʔʹͳΔ
    ˠద੾ʹϦτϥΠ͢Δ
    • ೋॏʹ૸ΔͱࠔΔॲཧ͕͋ͬͯ৑௕ԽͰ͖ͳ͍
    ˠ ෼ࢄϩοΫΛಋೖͯ͠৑௕Խ
    • ϩʔυόϥϯαͷ࠶ىಈͰϢʔβʔ͔ΒͷϦΫΤετ͕ΤϥʔʹͳΔ
    ˠ (SBDFGVM4IVUEPXO

    View Slide

  36. ʮ͍··ͰΦϖϨʔγϣϯͰղܾ͍ͯͨ͠໰୊Λ
    αʔϏεଆͰղܾ͢Δʯ
    ͱ͍͏ํ਑

    View Slide

  37. service A service B service C
    上位の管理サービス1
    上位の管理
    サービス2
    ΦϖϨʔλʔ
    ྫ֎ॲཧ ྫ֎ॲཧ ྫ֎ॲཧ
    ྫ֎ॲཧ ྫ֎ॲཧ
    ͍··Ͱ͸ྫ֎ॲཧΛΦϖϨʔλʹ౤͍͛ͯΔߏਤͩͬͨ

    View Slide

  38. service A service B service C
    上位の管理サービス1
    上位の管理
    サービス2
    ΦϖϨʔλʔ
    ྫ֎ॲཧ ྫ֎ॲཧ ྫ֎ॲཧ
    ྫ֎ॲཧ ྫ֎ॲཧ
    ͜Ε͔Β͸ྫ֎ॲཧ΋Ͱ͖Δ͚ͩԼҐͷαʔϏεͰؤுΔ
    ྫ֎ॲཧͷ࣮૷ʹ͸ϚΠΫϩαʔϏεຊ #VJMEJOH.JDSPTFSWJDFT
    ͷ஌ݟ͕͘͢͝ࢀߟʹͳͬͨ

    View Slide

  39. %FW0QTͱͷؔ܎
    • ΦϖϨʔγϣϯίετͱαʔϏε։ൃίετͷτϨʔυΦϑ
    • %FWͱ 0QT͕෼཭͍ͯ͠Δͱɺίετͷԡ͠෇͚߹͍ʹ
    ͳͬͯେม
    • :BLVNP ͸ %FW͔ͭ 0QTͳνʔϜͳͷͰ΍Γ΍͍͢
    • ΦϖϨʔγϣϯ΋͢Δ͠ɺαʔϏεଆͷ࣮૷΋͢Δ

    View Slide

  40. એݴతΞʔΩςΫνϟͱ
    σϓϩΠύΠϓϥΠϯ

    View Slide

  41. એݴతΞʔΩςΫνϟ
    "1αʔόʔ͕୆
    ͋Δ͜ͱ
    ཧ૝ͷঢ়ଶ ೖྗ

    BQ
    ࣮ࡍͷঢ়ଶ
    ࠩ෼
    "1αʔόʔ͕΋͏̍୆ඞཁ
    BQ

    View Slide

  42. खॱࢦ޲ͷΞʔΩςΫνϟͱ
    એݴతΞʔΩςΫνϟͷҧ͍
    • खॱࢦ޲
    • ΦϖϨʔγϣϯ ཧ૝ͱ࣮ࡍͷࠩ෼
    Λೖྗ͢Δ
    • ࠷ऴతʹͲ͏͍ͨ͠ͷ͔ΛγεςϜ͸஌Βͳ͍
    • એݴత
    • ཧ૝ͷঢ়ଶΛೖྗ
    • Ͳ͏͍͏ΦϖϨʔγϣϯΛ͢Δ͔͸γεςϜ͕ܾΊΔ

    View Slide

  43. σϓϩΠύΠϓϥΠϯ
    Πϯϑϥͷঢ়ଶΛ
    ιʔείʔυͰఆٛ
    (JUͰ؅ཧ

    ύΠϓϥΠϯ $*

    "84
    ཧ૝ͷঢ়ଶ ࣮ࡍͷঢ়ଶ

    View Slide

  44. yakumo Build Deploy Test
    dev 環境
    dev pipeline
    repository
    Deploy Test Deploy Test
    staging 環境 prod 環境
    staging pipeline prod pipeline
    1JQFMJOF0WFSWJFX

    View Slide

  45. yakumo Build Deploy Test
    dev 環境
    dev pipeline
    repository
    Deploy Test Deploy Test
    staging 環境 prod 環境
    staging pipeline prod pipeline
    1JQFMJOF0WFSWJFX

    View Slide

  46. #VJME
    ଟ਺ͷαʔϏεΛ
    ࠩ෼Ϗϧυ͢Δ

    View Slide

  47. #VJME
    • ࠩ෼Ϗϧυ
    • ͦͷαʔϏεͷιʔείʔυͷϋογϡΛऔΔ
    • ڞ௨ϥΠϒϥϦ΍ڞ௨%PDLFSΠϝʔδʹґଘ͍ͯ͠Δ৔߹͸ɺ
    ґଘ΋ͻͬ͘ΔΊͯϋογϡΛܭࢉ͢Δ
    • 4ʹࠓ·ͰϏϧυͨ͜͠ͱͷ͋ΔϋογϡΛશ෦ه࿥͓ͯ͘͠
    • 4ʹϋογϡ͕ͳ͍ 㱺 Ϗϧυ͠ͳ͍ͱ͍͚ͳ͍
    • ੜ੒͞ΕͨίϯςφΠϝʔδͷλάʹ͸ϋογϡ஋Λ෇͚Δ
    ʢσϓϩΠͰ࢖͏ʣ

    View Slide

  48. yakumo Build Deploy Test
    dev 環境
    dev pipeline
    repository
    Deploy Test Deploy Test
    staging 環境 prod 環境
    staging pipeline prod pipeline
    1JQFMJOF0WFSWJFX

    View Slide

  49. %FQMPZ
    • "84ͷϦιʔεͷσϓϩΠ
    • $MPVE'PSNBUJPO ͰσϓϩΠ͢Δ
    • $MPVE'PSNBUJPO͕ࣗಈతʹࠩ෼σϓϩΠΛߦ͏
    • :BLVNPͷ $MPVE'PSNBUJPOςϯϓϨʔτ͸̍ສߦҎ্
    • ৔߹ʹΑͬͯ͸ΧελϜϦιʔε΋࢖͏

    View Slide

  50. View Slide

  51. %FQMPZ
    • ϛυϧ΢ΣΞͷσϓϩΠ
    • ,VCFSOFUFT Λ࢖ͬͯσϓϩΠ
    • ίϯςφΠϝʔδͷλά͸Ϗϧυ࣌ͷϋογϡΛࢦఆ
    㱺 มߋ͕͋ͬͨίϯςφͷΈ͕σϓϩΠ͞ΕΔ
    • :BLVNPͷ ,VCFSOFUFT.BOJGFTU͸̍ສߦ͙Β͍

    View Slide

  52. yakumo Build Deploy Test
    dev 環境
    dev pipeline
    repository
    Deploy Test Deploy Test
    staging 環境 prod 環境
    staging pipeline prod pipeline
    1JQFMJOF0WFSWJFX

    View Slide

  53. 5FTU
    • &&ςετΛߦ͏
    • 4FMFOJVN ͕ಈ͘
    • 2"JO1SPEVDUJPO
    • ຊ൪؀ڥͰ΋ςετΛ࣮ߦ

    View Slide

  54. ·ͱΊ

    View Slide

  55. ·ͱΊ
    • ΠϯϑϥࣗಈԽͷམͱ݀͠
    • ϓϥϯχϯάͷίετΛݟམͱ͢ͱΦϖϨʔγϣϯ͕εέʔϧ͠ͳ͍
    • ΦϖϨʔγϣϯͷ໰୊ΛαʔϏεଆͰղܾ
    • .JDSPTFSWJDFT΍"84ͷ஌ݟ΋ॏཁ
    • %FW0QT
    • એݴతΞʔΩςΫνϟͱσϓϩΠύΠϓϥΠϯ
    • ຊ൪؀ڥͷঢ়ଶΛιʔείʔυͱಉظͤ͞Δ

    View Slide