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

インフラのCI/CDはGitHub Actionsに任せた

mihyon
June 21, 2022

インフラのCI/CDはGitHub Actionsに任せた

サービスのインフラ構築のCI/CDのツールとして色々試しましたが、GitHub Actionsで落ち着いたこの頃です。開発環境と本番環境で異なるパラメータの管理もGitHubで管理出来て楽々です。本発表資料では、GitHub Actionsを使ってインフラのCI/CDを実現する方法を初心者向けに紹介します。

mihyon

June 21, 2022
Tweet

Other Decks in Technology

Transcript

  1. 自己紹介 • Name: 平野美賢 (Mihyon Lee Hirano) • Company: 株式会社クオリティア

    • Role: SRE/Ops • Title: IT Specialist Leader • Likes: 宝塚歌劇、高校野球 • Language: Shell, Python 最近は Yaml 職人 • Twitter: @mihyon
  2. 目次 • GitHub Actions をCI/CDに導入するまで • GitHub Actions の採用 •

    CI/CDへの道のり • 完成したCI/CD • 今後の課題 • 公開資料
  3. 当初のTEAM構成 • 2017年に新サービスの企画や研究開発を目的に発足 • Product Owner かつ Tech Lead 1名

    • Full Stack Engineer 1名 • 自然言語処理専門 Data Scientist 1名 • Frontend Engineer 1名 • SRE/Ops, Scrum Master/Management 1名(私) • 5名の少人数チームでやや開発より
  4. 開発体制 • 開発方式 - Agile, Scrum - DevOps, CI/CD ・インフラ

    - AWS - Microsoft Azure - Vultr, さくら etc • 12 factor app 準拠 https://12factor.net/ja/
  5. 問題点・要件① • インフラを手動で触りたくない。Infra as a Code したい。 • プログラマはインフラを一度作ったら忘れてしまう。 •

    パラメータをExcelで管理したくない(重要) • これらを解決するために、AWS CodePipeline、CodeDeployなど使ってみたが、限界を感じ る(Multi Cloudに使えない等)
  6. GitHub Actionsの登場と採用 • その時、GitHub Actionsがリリース (2019年) • GitHub Actions :

    “開発ワークフローをリポジトリの中で自動化し、カスタマイズし、実行” するもの • https://docs.github.com/ja/actions • すでにGitHubを使っているので、導入しやい • 説明聞いたら使いやすそう • 無料
  7. 問題点・要件①はすぐ解決 • インフラを手動で触りたくない。Infra as a Code したい。 ✅ • プログラマはインフラを一度作ったら忘れてしまう。

    ✅ • パラメータをExcelで管理したくない(重要) ✅ • これらを解決するために、AWS CodePipeline、CodeDeployなど使ってみたが、限界を感じ る(Multi Cloudに使えない等) ✅
  8. hoge-infra CI/CD 1 merge to main Unit Test Build Etc...

    S3 Store Package Version Parameters Change Package Version Development Environment (Staging) hoge-infra/ vpc.cf.yaml vpc.cf. yaml hoge-infra-params/ vpc/packages/develop.yaml 続く
  9. hoge-infra CI/CD 2 S3 Store Package Version Parameters Version Development

    Environment (Staging) Package Version Parameters Change Package Version Production Environment hoge-infra-params/ vpc/packages/prod.yaml hoge-infra-params/ vpc/packages/develop.yaml 前のページ から続く
  10. Deploy parameters to develop merge to main Unit Test Build

    Etc... S3 Change Parameters Store Package Version Parameters Change Package Version Development Environment (Staging) hoge-infra-params/ ec2/parameters/develop.yaml
  11. Deploy parameters to prod merge to main Unit Test Build

    Etc... S3 Change Parameters Store Package Version Parameters Change Package Version Production Environment hoge-infra-params/ ec2/parameters/prod.yaml
  12. CI and Deploy to Develop merge to main Unit Test

    Build Etc... S3 Change Parameters Store Package Version Parameters Docker-Compose etc... Change Package Version Development Environment (Staging) インフラの ソースコード インフラの パラメータ (開発環境)
  13. Deploy to Prod S3 ECR Registry rs Store Store Package

    Version Parameters Docker-Compose etc... Version Development Environment (Staging) Change Parameters Package Version Parameters Docker-Compose etc... Change Package Version Production Environment インフラの パラメータ (本番環境)
  14. AZ #A AZ #C AZ #A AZ #C AZ #B

    AZ #C Azure Tokyo Canary Release Develop Prod #2 (Servers) Servers Servers Tokyo Servers Servers Singapore Servers Servers San Francisco Prod #1 (Servers) Servers Servers Tokyo AZ #A AZ #C Servers Servers Singapore AZ #A AZ #C Servers Servers Frankfurt AZ #A AZ #C Release 1 Release 2 Release 3 Release 4 Approve Approve Approve Approve GitHub Actions Push