CircleCIを使って「完全サーバーレス運用」を実現した話
CircleCIΛͬͯʮશαʔόʔϨεӡ༻ʯΛ࣮ݱͨ͠2019/03/05 CircleCI Meetup @decoch
View Slide
ࣗݾհ• ໊લ : Ӭߊ࢙ @decoch• ձࣾ : גࣜձࣾϏζϦʔν• ৬छ : Engineer(Backend, SmartPhoneApp)• ݴޠ : Golang, Ruby, Kotlin, Swift• CI/CD͜͜ͰΓ࢝Ίͨ•
એ• CircleCIͷϋοΧιϯͰOrbΛ࡞Γ·ͨ͠• https://github.com/decoch/line-orb• https://github.com/decoch/chatwork-orb
ͪͳΈʹ• https://tech.bizreach.co.jp/posts/254/circleci/
Agenda• എܠ• ԿΛͨ͠ͷ͔• CircleCIΛͬͯΈͯ• ·ͱΊ• Q&A
എܠ
എܠ• BizHintͰ Ruby on Rails Λͬͯ։ൃ• EC2 ͰࣗͨͪͰ੬ऑੑͷύονΛͯɺόʔδϣϯΞοϓΛ͢Δඞཁ͕͋Δ• CIڥͱͯ͠JenkinsαʔόʔΛཱ͍ͯͯΔ
എܠ• ৽نαʔϏεΛ GCP ͷ App Engine ΛͬͨαʔόʔϨεͳΞϓϦέʔγϣϯΛ։ൃ• ৽نαʔϏεͷβϦϦʔεʹࡍ͠ɺCIڥΛඋ͢Δඞཁ͕͋Δ• CIπʔϧͷΫϥυαʔϏεͳ͍͔ௐࠪ
ԿΛͬͨͷ͔
ͦͦશαʔόʔϨεͱComputeEngineAmazon EC2App EngineCloudFunctionsAWSLambda• ※νʔϜͷߟ͑
࣮ࡍͷߏApp EngineCloudDatastoreCloudFunctionsCloudPub/SubCloudBigtable
ԿΛͬͨͷ͔• αʔόʔཧΛͤͣʹαʔϏεΛӡ༻͍ͨ͠• GCPͷϑϧϚωʔδυͳαʔϏεΛར༻• CI/CDCircleCIΛར༻
࣮ࡍʹӡ༻ͯ͠Έͯ• ΠϯϑϥઐͷΤϯδχΞͳ͠Ͱӡ༻͕Ͱ͖͍ͯΔ• αʔόʔͷઃఆ͕গͳ͘ૉૣ͘αʔϏεΛϦϦʔεͰ͖ͨ
CircleCIΛͬͯΈͯ
CircleCIΛͬͯΑ͔ͬͨ• ؆୯ʹCIڥΛߏஙͰ͖Δ• ઃఆϑΝΠϧΛGitཧͰ͖Δ• ڞ༗ͷઃఆΛOrbͰڞ༗Ͱ͖Δ
؆୯ʹCIڥΛߏஙͰ͖Δ1. .circleci/config.yml ͷઃఆϑΝΠϧΛ࡞2. config.yml ʹઃఆΛهड़3. GitHubʹϓογϡ4. CircleCIͰϏϧυΛ։࢝
ઃఆϑΝΠϧΛGitཧͰ͖Δ• .circleci/config.yml ʹઃఆΛهड़͢Δ• αʔόʔαΠυΤϯδχΞ͕ؾܰʹઃఆมߋΛͰ͖Δ• ΠϯϑϥઐͷΤϯδχΞͳ͠ͰαʔϏεͷӡ༻͕Ͱ͖͍ͯΔ
ڞ༗ͷઃఆΛOrbͰڞ༗Ͱ͖Δ
վળ• 2.1ϦϦʔεʹϦϦʔεͨ͠ͷͰɺσϓϩΠίϚϯυͷOrbԽ͕Ͱ͖͍ͯͳ͍• ձࣾશମͰಋೖ͍ͯ͠ͳ͍ͷͰɺΠϯελϯε͕গͳ͘Ωϡʔ͕ཷ·Γ͕ͪ• CircleCIͷyamlͷઃఆ͕ؾܰʹςετͰ͖ͣ࠷ॳखؒऔͬͨ
·ͱΊ
·ͱΊ• αʔόʔϨεͰӡ༻͢Δ͜ͱͰӡ༻ίετΛԼ͛Δ͜ͱ͕Ͱ͖ͨ• ӡ༻ίετݮ͚ͩͰͳ͘ɺαʔϏεͷ্্ཱ͕ͪ͛Δ• ࡉ͔͍νϡʔχϯά͕ඞཁʹͳͬͨΒࣗલͰӡ༻͢ΔΑ͏ʹͳΔ͔
Q&A