2020/07/14 Cybozu Tech Meetup #3
ΠϯϑϥࣗಈԽͷམͱ݀͠ͱએݴతΞʔΩςΫνϟ$ZCP[V5FDI.FFUVQ։ൃຊ෦ :BLVNPνʔϜౡ ༟ี
View Slide
ࠓ͢͜ͱ ΠϯϑϥࣗಈԽͷམͱ݀͠ એݴతΞʔΩςΫνϟͱσϓϩΠύΠϓϥΠϯ
ΠϯϑϥࣗಈԽͷམͱ݀͠
DZCP[VDPN ͷΠϯϑϥ• ࠃͷΦϯϓϨ%$Ͱӡ༻• ཧαʔόʔ 1,000 Ҏ্• ΠϯϑϥͷͨΊͷ1ZUIPOίʔυ 100,000 ߦҎ্
ࣗಈԽͷྲྀΕਓ͕खͰΦϖϨʔγϣϯखॱॻΦϖϨʔγϣϯͷճ͕૿ՃࣗಈԽͷػӡ͕ߴ·ΔࣗಈԽʂखॱॻΛ 1ZUIPOεΫϦϓτʹ
ࣗಈԽͷྫ• ΞϓϦέʔγϣϯͷΞοϓσʔτ• "1αʔόʔͷΓ͠ɺϓϩάϥϜͷஔ͖͑ɺ%#ϚΠάϨʔγϣϯɺόονͷҰ࣌ఀࢭɺϝλσʔλͷॻ͖͑ͳͲେͳखॱΛҰίϚϯυʹ• ͜ΕͰΦϖϨʔλʔΞοϓσʔτखॱͷৄࡉΛΒͳͯ͘ΞοϓσʔτͰ͖Δʜͣͩͬͨ
ͱ͜Ζ͕ʜ͑ͬɺ͜ͷίϚϯυଧͭલʹαʔϏε"ΛࢭΊͳ͍ͱ͍͚ͳ͍ΜͰ͔͢ʁ͋Εɺ͜ͷίϚϯυଧͬͨΒউखʹόονॲཧ͕ࢭ·ͬͨΜͰ͚͢ͲʁҙຯͷΘ͔Βͳ͍ΤϥʔΛు͍ͯࢭ·ͬͪΌͬͨΜͰ͕͢ʜ͑ɺ͜ͷίϚϯυͱಉ࣮࣌ߦͰ͖ͳ͍ΜͰ͔͢ʁ
͜ͷίϚϯυΛ࣮ߦ͢ΔͱԿ͕ى͜Δ͔Θ͔Βͳ͍͔ΒࣄલʹԿ͕࣮ߦ͞ΕΔ͔ௐ͓͔ͯͳ͍ͱʜಉ࣮࣌ߦͰΤϥʔ͕ى͜Δͱ͍͚ͳ͍͔ΒɺଞͷΦϖϨʔλʔ͕ͲΜͳίϚϯυΛ࣮ߦ͢Δͷ͔ͪΌΜͱฉ͍͓ͯ͜͏ʜ
ΦϖϨʔγϣϯϓϥϯχϯάΦϖϨʔγϣϯ࣮ࢪͲͷίϚϯυΛଧͭʁલఏ݅ʁ
ΦϖϨʔγϣϯϓϥϯχϯάΦϖϨʔγϣϯ࣮ࢪϜζ͗͢ʜΠϯϑϥͷେنԽࣗಈԽʹΑΔฐ
݁ہͲ͏͢Δ͖ͩͬͨͷ͔ʁΦϖϨʔγϣϯϓϥϯχϯάΦϖϨʔγϣϯ࣮ࢪ͍··ͰͷࣗಈԽࢦ͖ࣗ͢ಈԽ
ʜʜͲ͏Δͷʁ͍Ζ͍Ζͱٞɾݕ౼͢Δ͙̎ؒΒ͍ਐḿͤͣ
ɺ͜Μͳঢ়گʹసػ͕๚ΕΔʂʂ
64൛LJOUPOFͷ"84Ҡߦ
:BLVNPϓϩδΣΫτ• 64൛LJOUPOFͷͨΊʹ"84্ͰΠϯϑϥΛθϩ͔Βߏங͢ΔϓϩδΣΫτ͕ൃ• ΞϝϦΧͰചΔͳΒΞϝϦΧʹ%$͕ඞཁ• ΦϯϓϨ%$͡Όͳͯ͘"84Ͱ
• ࠷ॳ͔ΒࣗಈԽΛલఏͱͨ͠ΞʔΩςΫνϟ• Πϯϑϥ͚ͩͰͳ͘ΞϓϦέʔγϣϯ LJOUPOFʹखΛՃ͑Δ• %FW0QTΛҙࣝͨ͠৫ߏ• %FW͔ͭ 0QTͳνʔϜɻนΛऔΓ͓͏શମ࠷దΛࢦͧ͢ʂʂ
ࣗಈԽͷιϦϡʔγϣϯ• ΠϯϑϥࣗಈԽͷΛҰܸͰղܾ͢Δ୯ҰͷιϦϡʔγϣϯͳ͍• ࡉ͔͍ʹղͯ͠ݸผܸഁ• એݴతΞʔΩςΫνϟ• ϚωʔδυαʔϏεͷಋೖ• ϦϦʔεϓϩηεվળ• ৫ମ੍มߋ• ʜࠓ͜Εͷ͕ϝΠϯ
ద༻खॱʹ͍ͭͯߟ͑Δ
l43&ɺ͓Αͦ ͷαʔϏεোɺಈ࡞தͷγεςϜͷมߋʹΑͬͯੜ͍ͯ͡Δ͜ͱΛൃݟ͠·ͨ͠z#FUTZ#FZFSଞʮαΠτϦϥΠΞϏϦςΟΤϯδχΞϦϯάʯ ΦϥΠϦʔɺɺQ
ALBAuroraAuroranginxslash-ap kintone-appodserviceEKS ClusterElasticsearchkintone-ap(kintone 本体)kintone-ap(kintone 本体)ミドルウェア、管理サービス等いろいろkintone-ap(kintone 本体)kintone-ap(kintone 本体)slash-ap(ユーザー管理)slash-ap(ユーザー管理)VPCnginxnginx
ద༻खॱ• Πϯϑϥଟͷখ͞ͳαʔϏεʹΑͬͯߏ͞Ε͍ͯΔ• :BLVNPͷ߹ݸ͙Β͍• ͜Ε·ͰɺαʔϏεΛมߋͨ͠ͱ͖ʹखಈͰద༻खॱΛ࡞͍ͬͯͨ• ʮϥΠϒϥϦΛมߋ͔ͨ͠ΒɺαʔϏε"ͱαʔϏε#Λߋ৽ͯ͠࠶ىಈͯ͠ʜʯ• Өڹൣғͷ࿙ΕʹΑΔద༻ϛε͕ൃੜ͍͢͠
ద༻खॱΛͳͤ͘ͳ͍͔ʁ
ద༻खॱΛͳͤ͘ͳ͍͔ʁˠ ιʔείʔυͷΈ͕༩͑ΒΕͨͱ͖ʹࣗಈతʹͦΕΛσϓϩΠͰ͖Δ͔ʁ
debian10corretto11service A service B service Cshared-kernelιʔείʔυؒͷґଘάϥϑ
TIBSFELFSOFMΛมߋͨ͠߹ʁdebian10corretto11service A service B service Cshared-kernelTFSWJDF#ͱ TFSWJDF$ΛσϓϩΠ
debian10corretto11service A service B service Cshared-kernelEFCJBOΛมߋͨ͠߹ʁTFSWJDF" # $ΛσϓϩΠ
͑ͬ ͜Εμϝ͡Όͳ͍ʁ
ᶃ ιʔείʔυ͕มԽ͍ͯ͠ͳͯ͘σϓϩΠ͕ඞཁͳ߹ͳ͍ͷʁᶄ σϓϩΠʹΑΔαʔϏεӨڹͱ͔ىಈॱং੍ޚͱ͔Ͳ͏͢Δͷʁ
l࠶ݱੑz• ϏϧυͱσϓϩΠʹ࠶ݱੑΛͨͤΔ• ࠶ݱੑͱ• ιʔείʔυ͕ಉ͡Ͱ͋ΕՌ͕ಉ͡ͱ͍͏ੑ࣭• ͢ͳΘͪɺιʔείʔυ͕มԽ͠ͳ͚ΕσϓϩΠෆཁ
࠶ݱੑͷ͋ΔϏϧυྫ͑ʜ• ґଘϥΠϒϥϦͷόʔδϣϯશͯݻఆ͢Δ• ࠷ۙͷϏϧυπʔϧͳΒΘΓͱ؆୯• EPDLFS ͷϕʔεΠϝʔδෆมͳϥϕϧΛࢦఆ͢Δ• lMBUFTUzμϝ• ωοτϫʔΫӽ͠ͷϑΝΠϧμϯϩʔυʹҙ• ಉ͡63-ͰผͷϑΝΠϧ͕མͪͯ͜ͳ͍͔ʁ
AP Server,MiddlewaresNetworkDatabase物理CloudFormationKubernetesAWS なら気にしなくていい࠶ݱੑͷ͋ΔσϓϩΠLoad BalancerMonitoring (Datadog),Alerts (PagerDuty)Terraform
l͍ͭͰσϓϩΠͯ͠Α͍z• શͯͷαʔϏεΛʮ͍ͭͰσϓϩΠͰ͖Δʯঢ়ଶʹอͭ• σϓϩΠͰ͖ͳ͍ঢ়ଶʹͳΔͱͨ͠Βෆ۩߹ͱͯ͠ରॲ• ͦͦ"84Ͱ&$ΠϯελϯεͷಥવࢮʹରԠ͠ͳ͍ͱ͍͚ͳ͍ͷͰɺඞવతʹ͜ͷ͕݅ඞཁΦϯϓϨతࢥߟ͔Βͷ٫
l͍ͭͰσϓϩΠͯ͠Α͍zͷͨΊʹ• όονॲཧதʹσϓϩΠ͕Δͱ௨৴அʹΑΓΤϥʔʹͳΔˠదʹϦτϥΠ͢Δ• ೋॏʹΔͱࠔΔॲཧ͕͋ͬͯԽͰ͖ͳ͍ˠ ࢄϩοΫΛಋೖͯ͠Խ• ϩʔυόϥϯαͷ࠶ىಈͰϢʔβʔ͔ΒͷϦΫΤετ͕ΤϥʔʹͳΔˠ (SBDFGVM4IVUEPXO
ʮ͍··ͰΦϖϨʔγϣϯͰղܾ͍ͯͨ͠ΛαʔϏεଆͰղܾ͢Δʯͱ͍͏ํ
service A service B service C上位の管理サービス1上位の管理サービス2ΦϖϨʔλʔྫ֎ॲཧ ྫ֎ॲཧ ྫ֎ॲཧྫ֎ॲཧ ྫ֎ॲཧ͍··Ͱྫ֎ॲཧΛΦϖϨʔλʹ͍͛ͯΔߏਤͩͬͨ
service A service B service C上位の管理サービス1上位の管理サービス2ΦϖϨʔλʔྫ֎ॲཧ ྫ֎ॲཧ ྫ֎ॲཧྫ֎ॲཧ ྫ֎ॲཧ͜Ε͔Βྫ֎ॲཧͰ͖Δ͚ͩԼҐͷαʔϏεͰؤுΔྫ֎ॲཧͷ࣮ʹϚΠΫϩαʔϏεຊ #VJMEJOH.JDSPTFSWJDFTͷݟ͕͘͢͝ࢀߟʹͳͬͨ
%FW0QTͱͷؔ• ΦϖϨʔγϣϯίετͱαʔϏε։ൃίετͷτϨʔυΦϑ• %FWͱ 0QT͕͍ͯ͠Δͱɺίετͷԡ͚͠߹͍ʹͳͬͯେม• :BLVNP %FW͔ͭ 0QTͳνʔϜͳͷͰΓ͍͢• ΦϖϨʔγϣϯ͢Δ͠ɺαʔϏεଆͷ࣮͢Δ
એݴతΞʔΩςΫνϟͱσϓϩΠύΠϓϥΠϯ
એݴతΞʔΩςΫνϟ"1αʔόʔ͕͋Δ͜ͱཧͷঢ়ଶ ೖྗBQ࣮ࡍͷঢ়ଶࠩ"1αʔόʔ͕͏̍ඞཁBQ
खॱࢦͷΞʔΩςΫνϟͱએݴతΞʔΩςΫνϟͷҧ͍• खॱࢦ• ΦϖϨʔγϣϯ ཧͱ࣮ࡍͷࠩΛೖྗ͢Δ• ࠷ऴతʹͲ͏͍ͨ͠ͷ͔ΛγεςϜΒͳ͍• એݴత• ཧͷঢ়ଶΛೖྗ• Ͳ͏͍͏ΦϖϨʔγϣϯΛ͢Δ͔γεςϜ͕ܾΊΔ
σϓϩΠύΠϓϥΠϯΠϯϑϥͷঢ়ଶΛιʔείʔυͰఆٛ(JUͰཧύΠϓϥΠϯ $*"84ཧͷঢ়ଶ ࣮ࡍͷঢ়ଶ
yakumo Build Deploy Testdev 環境dev pipelinerepositoryDeploy Test Deploy Teststaging 環境 prod 環境staging pipeline prod pipeline1JQFMJOF0WFSWJFX
#VJMEଟͷαʔϏεΛࠩϏϧυ͢Δ
#VJME• ࠩϏϧυ• ͦͷαʔϏεͷιʔείʔυͷϋογϡΛऔΔ• ڞ௨ϥΠϒϥϦڞ௨%PDLFSΠϝʔδʹґଘ͍ͯ͠Δ߹ɺґଘͻͬ͘ΔΊͯϋογϡΛܭࢉ͢Δ• 4ʹࠓ·ͰϏϧυͨ͜͠ͱͷ͋ΔϋογϡΛશ෦ه͓ͯ͘͠• 4ʹϋογϡ͕ͳ͍ 㱺 Ϗϧυ͠ͳ͍ͱ͍͚ͳ͍• ੜ͞ΕͨίϯςφΠϝʔδͷλάʹϋογϡΛ͚ΔʢσϓϩΠͰ͏ʣ
%FQMPZ• "84ͷϦιʔεͷσϓϩΠ• $MPVE'PSNBUJPO ͰσϓϩΠ͢Δ• $MPVE'PSNBUJPO͕ࣗಈతʹࠩσϓϩΠΛߦ͏• :BLVNPͷ $MPVE'PSNBUJPOςϯϓϨʔτ̍ສߦҎ্• ߹ʹΑͬͯΧελϜϦιʔε͏
%FQMPZ• ϛυϧΣΞͷσϓϩΠ• ,VCFSOFUFT ΛͬͯσϓϩΠ• ίϯςφΠϝʔδͷλάϏϧυ࣌ͷϋογϡΛࢦఆ㱺 มߋ͕͋ͬͨίϯςφͷΈ͕σϓϩΠ͞ΕΔ• :BLVNPͷ ,VCFSOFUFT.BOJGFTU̍ສߦ͙Β͍
5FTU• &&ςετΛߦ͏• 4FMFOJVN ͕ಈ͘• 2"JO1SPEVDUJPO• ຊ൪ڥͰςετΛ࣮ߦ
·ͱΊ
·ͱΊ• ΠϯϑϥࣗಈԽͷམͱ݀͠• ϓϥϯχϯάͷίετΛݟམͱ͢ͱΦϖϨʔγϣϯ͕εέʔϧ͠ͳ͍• ΦϖϨʔγϣϯͷΛαʔϏεଆͰղܾ• .JDSPTFSWJDFT"84ͷݟॏཁ• %FW0QT• એݴతΞʔΩςΫνϟͱσϓϩΠύΠϓϥΠϯ• ຊ൪ڥͷঢ়ଶΛιʔείʔυͱಉظͤ͞Δ