Share
Embed
Transcript
38 slides
-
nghialv Developer Productivity Team, CyberAgent Sep 03, 2021 PipeCD @
CyberAgent CI/CD Conference 2021 by CloudNative Days -
ࣗݾհ - ৬ྺ @CyberAgent • PipeCDΛ։ൃɾӡ༻ - DPࣨ • Work
fl ow Automation SystemΛ։ൃɾӡ༻ - OSSS • Feature Flags SystemΛ։ൃɾӡ༻ - AbemaTV • Prometheus & GrafanaͰMonitoring SystemΛߏஙɾӡ༻ - AbemaTV • DeploymentπʔϧΛ։ൃɾӡ༻ - AbemaTV • Microservicesɾج൫पΓ - AbemaTV -
ϓϩμΫτͷߏ ABEMA AWA WinTicket Game AI Studio ... • ଟ͘ͷϓϩμΫτ͕ଘࡏ͍ͯ͠Δ
• ֤ϓϩμΫτͰࣗʹϑΟοτ͢Δٕज़ελοΫΛࣗ༝ʹબΔ Group • ֤ϓϩμΫτͷΤϯδχΞνʔϜ͕ҟͳΔ͕ɺࣾҠಈͷ߹Մೳ -
CDͷ՝ Multi Cloud Product • σϦόϦͷख़͕ߴ͘ͳ͍νʔϜ͕ଘࡏ • खಈϦϦʔεͷνΣοΫϦετ͕େม • Canary,
BlueGreenͳͲͷ҆શରࡦ͕ͳ͍ • ཧ༝ࣗͰCDͷߏஙͱӡ༻͕େมͱϦιʔε͕ͳ͍ • ౷ҰੑʢҰ؏ੑʣ͕͘ͳ͍ͬͯΔ • ࣾελϯμʔυΛཱ͢Δ͜ͱ͕͘͠ͳΔ • ࣾͷϕετϓϥΫςΟεͷීٴ͕େม • ཧίετ͕ߴ͍ • Developer ExperienceʹӨڹͯ͠͠·͏ • Onboardingίετ͕͔͔Δ ٕज़ελοΫ͕ಉ͡Ͱ ϓϩμΫτຖʹCDγεςϜɾϓϩηε͕ҟͳΔ ಉ͡ϓϩμΫτͰ ෳCDγεςϜɾϓϩηε͕ଘࡏ͢Δ Product A Product B CD System X CD System Y CD System X for GCP services CD System Y for AWS Services CD System Z for Infra -
ࣾ౷ҰͳCDγεςϜΛݕ౼ Delivery Infrastructure Product Team࠷େͳσϦόϦύϑΥʔϚ ϯεΛग़ͤͳ͕Βɺࣗʹ߹͏ٕज़ελοΫ ͱσϦόϦઓུΛબͿϑϦʔμϜ͕͋Δ Platform TeamॊೈͳDelivery InfrastructureΛఏڙͱ
CDͷϕετϓϥΫςΟεΛීٴ Platform Team & Product Teamͷ྆ํʹϝϦοτΛग़ͤΔ Standards/Consistency vs Freedomͷྑ͍όϥϯεΛऔΕΔ Ͳ͏͢Εɺ -
Product Team Automation Visibility / Accessibility Control / Flexibility
νʔϜʹϑΟοτٕज़ελοΫɾσϦόϦख๏Λࣗ༝ʹબΕΔͷ͔ νʔϜͷݖݶΛదʹཧͰ͖Δͷ͔ ϦϦʔεϓϩηεͷதʹɺਓؒͷखಈλεΫ͕Ͳ͜·ͰݮͰ͖Δͷ͔ ϦϦʔεதޙܧଓతʹΛݕͰ͖Δͷ͔ ։ൃऀेͳϑΟʔυόοΫΛΊʹఏڙͰ͖Δͷ͔ ͕͋Δ࣌ʹݪҼؚΉঢ়ଶΛͪΌΜͱݟ͑Δͷ͔ ཧऀνʔϜͷσϦόϦʔύϑΥʔϚϯεΛͪΌΜͱݟͤΔͷ͔ -
PipeCD 🤍 OSS Thanks to the contributors of PipeCD! https://github.com/pipe-cd/pipe
https://pipecd.dev https://pipecd.dev/docs ~1700 pull requests -
PipeCD 🤍 GitOps • GitOpsΛ࠾༻ • GitʹશͯͷCon fi gurationΛอଘ •
શͯͷΦϖϨʔγϣϯ͕Git Pull Requestܦ༝Λߦ͑Δ • Πϯϑϥ͔ΒΞϓϦέʔγϣϯ·Ͱ౷ҰͳGitOps • Kubernetes • Terraform • CloudRun • AWS Lambda • ECS Fargate • ECS -
PipeCDͲͷΑ͏ʹզʑͷ՝Λղܾ͢Δ͔ Automation Visibility / Accessibility Control / Flexibility Management
Security Platform Team Product Team -
Product B Platform Team - Management • ӡ༻ίετ͕͍ • શͯγϯάϧͳγεςϜͷΈ͕ඞཁ
• Control-planeͷΞʔΩςΫνϟ͕؆୯ • શͯͷίϯϙʔωϯτ͕εςʔτϨε • ετϨʔδϚωʔδυαʔϏεΛར༻͢Δ͜ͱ͕Մೳ • ϓϩμΫτଆγϯάϧόΠφϦͷPiped AgentΛ ΠϯετʔϧͷΈͰɺશͯͷCDͷػೳΛར༻Ͱ͖Δ • ϓϩμΫτͷεέʔϥϏϦςΟ • ৽نͷϓϩμΫτͷՃ͕୯౬ • ͲͷڥͰಈ͚Δઃܭ • ωοτϫʔΫ੍ݶͷPrivate Cloud͔ΒPublic Cloud·Ͱ • খنνʔϜ͔ΒେنνʔϜ·Ͱ Piped Control Plane Firewall Friendly Outbout Requests Only Product A Piped Piped Piped -
Platform Team - Security • ϓϩμΫτνʔϜͷΫϨσϯγϟϧ֎ʹҰग़ͳ͍ઃܭ • Control-planeʹอଘɾཧ͠ͳ͍ • GitOpsͰͷSecretཧͷϕετϓϥΫςΟεͱͯ͠ͷbuilt-inػೳΛؚΉ
• Piped Agent͕ΞτόϯυϦΫΤετͷΈΛߦ͏ͷͰɺެ։ϙʔτͳͲඞཁ͕ͳ͍ -
Product Team - Visibility / Accessibility • UIͰσϓϩΠϝϯτͷঢ়ଶɾϓϩηεͷ֬ೝ͕Մೳ • ΞϓϦέʔγϣϯͷঢ়ଶΛϦΞϧλΠϜతʹՄࢹԽ
• SlackͳͲΠϕϯτΞϥʔτͳͲΛ௨ • InsightsͰσϦόϦύϑΥʔϚϯεΛՄࢹԽ • PlanPreviewͰPRͷ࣌ͰૣظϑΟʔυόοΫΛఏڙ • ͲΜͳ࣌ʹ୯ҰͳΠϯλϑΣʔεɾ୯Ұͳϓϩηε https://pipecd.dev/docs/user-guide/triggering-a-deployment -
Product Team - Visibility / Accessibility https://pipecd.dev/docs/user-guide/application-live-state • UIͰσϓϩΠϝϯτͷঢ়ଶɾϓϩηεͷ֬ೝ͕Մೳ •
ΞϓϦέʔγϣϯͷঢ়ଶΛϦΞϧλΠϜతʹՄࢹԽ • SlackͳͲΠϕϯτΞϥʔτͳͲΛ௨ • InsightsͰσϦόϦύϑΥʔϚϯεΛՄࢹԽ • PlanPreviewͰPRͷ࣌ͰૣظϑΟʔυόοΫΛఏڙ • ͲΜͳ࣌ʹ୯ҰͳΠϯλϑΣʔεɾ୯Ұͳϓϩηε -
Product Team - Visibility / Accessibility https://pipecd.dev/docs/user-guide/plan-preview • UIͰσϓϩΠϝϯτͷঢ়ଶɾϓϩηεͷ֬ೝ͕Մೳ •
ΞϓϦέʔγϣϯͷঢ়ଶΛϦΞϧλΠϜతʹՄࢹԽ • SlackͳͲΠϕϯτΞϥʔτͳͲΛ௨ • InsightsͰσϦόϦύϑΥʔϚϯεΛՄࢹԽ • PlanPreviewͰPRͷ࣌ͰૣظϑΟʔυόοΫΛఏڙ • ͲΜͳ࣌ʹ୯ҰͳΠϯλϑΣʔεɾ୯Ұͳϓϩηε Git di ff is enought? No. e.g. using remote Helm chart, Kustomize package, Terraform module... Reviewer needs more early feedback to merge PR with con fi dence Better to see dry-run result, terraform plan, deployment policy... on the PR then Git di ff is just showing the change of version number -
Product Team - Visibility / Accessibility Terraform Deployment CloudRun Deployment
• UIͰσϓϩΠϝϯτͷঢ়ଶɾϓϩηεͷ֬ೝ͕Մೳ • ΞϓϦέʔγϣϯͷঢ়ଶΛϦΞϧλΠϜతʹՄࢹԽ • SlackͳͲΠϕϯτΞϥʔτͳͲΛ௨ • InsightsͰσϦόϦύϑΥʔϚϯεΛՄࢹԽ • PlanPreviewͰPRͷ࣌ͰૣظϑΟʔυόοΫΛఏڙ • ͲΜͳ࣌ʹ୯ҰͳΠϯλϑΣʔεɾ୯Ұͳϓϩηε Scale In Scale Out Rollout New Image Update Con fi g Deploy Infra Deploy Serverless Rollback Deploy Kubernetes Constant process for all operations -
Product Team - Automation https://pipecd.dev/docs/user-guide/rolling-back-a-deployment • σϓϩΠͷΠϯύΫτΛࣗಈੳ • ϝτϦΫεɾϩάɾhttp •
աڈͷσʔλɾcanary-baselineͷൺֱ • σϓϩΠதʹ͕ൃੜ͢ΔͱࣗಈϩʔϧόοΫ • Gitͱ࣮ࡍͷঢ়ଶͷCon fi guration DriftΛࣗಈݕ • ৽ίϯςφΠϝʔδɾHelm Chart͕ग़Δͱ ࣗಈσϓϩΠͷEventWatcher https://pipecd.dev/docs/user-guide/con fi guration-drift-detection -
Product Team - Control / Flexibility • Piped AgentΛ͖ͳελΠϧͰΈ߹ΘͤΔ͜ͱ͕Մೳ •
1 Piped AgentͰશͯཧύλʔϯ • ڥຖʹઐ༻ͷPiped Agentύλʔϯ • ͖ͳॴʹΠϯετʔϧʢKubernetes podɺVMʹதɺFargateαʔϏε...ʣ • σϓϩΠઓུࣗ༝ʹΈ߹Θͤɾఆ͕ٛՄೳ • Quick Sync • Progressive Sync (Canary, BlueGreen...) • νʔϜʹ߹͏ϓϩόΠμʔΛબΒΕΔ • Cloud Provider (GCP, AWS, Azure, Private Cloud) • Analysis Provider (Prometheus, Datadog, Stackdriver...) https://github.com/pipe-cd/examples/ blob/master/kubernetes/canary/.pipe.yaml -
νʔϜͱγεςϜͷߏ • Platform Team • PipeCDΛ։ൃ • ࣾ༻PipeCD Control-planeΛӡ༻ •
֤Product Team • Piped AgentΛΠϯετʔϧ • ࣗʹ߹͏σϓϩΠϝϯτछྨΛ࠾༻ Control-Plane https://pipecd.dev/docs/operator-manual/piped/installation https://github.com/pipe-cd/examples -
ΞϓϦέʔγϣϯɾαʔϏε͕૿Ճத 0 175 350 525 700 2020/10 2020/12 2021/02 2021/04
2021/06 2021/8 665 Applications/Servicesʹୡ CyberAgentʹPipeCDͰӡ༻͍ͯ͠Δ Kubernetes, Terraform, Lambda, CloudRun, Fargate... ͷΞϓϦέʔγϣϯɾαʔϏε -
֤࣠Λ͞ΒʹڧԽ Automation Visibility / Accessibility Control / Flexibility Management
Security Platform Team Product Team -
Visibility / Accessiblity • InsightsͰσϦόϦʔύϑΥʔϚϯεΛՄࢹԽ • DeployසɺLead Time, ࣦഊ, MTTR...
• ApplicationͷϦιʔεͷঢ়ଶΛϦΞϧλΠϜతʹՄࢹԽ • Terraform, CloudRun, ECS • Deployment StageͷϩάΛվળ • EventϦετը໘ • Plan-PreviewʹͬͱFeedbackΛՃ • Kubernetes validating webhook, dry-run݁Ռ, Terraform sentinelͳͲͷdeployment policy ֎ͷϢʔβʔ͚ͷPlaygroundڥΛ४උதʂ https://play.pipecd.dev -
Control / Flexibility • ਂ͍ϨϕϧͷݖݶཧͰ͖ΔACL • Piped AgentʹPlug-in ArchitectureΛ࠾༻Ͱɺ ಠࣗͷσϓϩΠϝϯτϩδοΫΛຒΊࠐΊΔΑ͏ʹ
• Deployment ChainͰmulti-clusterͷΞϓϦέʔγϣϯ σϓϩΠͷॱ൪੍ޚ͕Ͱ͖ΔΑ͏ʹ -
Deployment Chain Application X Region A Region B Region C
ᶃ ᶄ ᶅ Application X Cluster A Cluster B Cluster C ᶃ ᶄ ᶅ Application X - Dev Env Application X - Stg Env Application X - Prod Env Application Infra Application X Application Y ޭͳΒ࣍ʹਐΉ ޭͳΒ࣍ʹਐΉ