GitHub X CircleCIで実現するDevOps: CircleCI 資料

9996db3588c75fb4f2b582fa4021cfdb?s=47 Kim, Hirokuni
January 29, 2019
600

GitHub X CircleCIで実現するDevOps: CircleCI 資料

共同セミナー:GitHub X CircleCIで実現するDevOpsでCircleCIから発表した資料です。

https://peatix.com/event/582857

9996db3588c75fb4f2b582fa4021cfdb?s=128

Kim, Hirokuni

January 29, 2019
Tweet

Transcript

  1. 1 CI/CDとは何か? なぜ今必要なのか?

  2. 2 CI/CD 戦国時代 Google GCP Cloud Build Microsoft Azure Pipelines

    AWS CodeBuild
  3. 3 自己紹介: Kim, Hirokuni (金 洋国) - 元CircleCI 開発者 -

    CircleCI Japan Tech Lead
  4. 4 自己紹介 CodeZineで記事を書かせていただきました

  5. 5 CI/CD概要

  6. 6 CI/CDとは - CI (Continuous Integration / 継続的インテグレーション) - CD

    (Continuous Delivery / 継続的デリバリ)
  7. 7 継続的インテグレーション - What? 全ての開発者が共有リポジトリにコミットを積み重ね、 全てのコミットをトリガーにしてビルドとテストを繰り返すこと。 これによりテストに失敗した場合に素早く修正することが可能となる。 - Why? チームの生産性・効率・満足度を上げるため。

    品質を上げ、スピードを上げ、より安定した製品を生み出すため。
  8. 8 CIでできること • テスト実行 • コードのビルド • 静的コード解析 • 脆弱性チェック

    • テストサマリー
  9. 9 CIが解決する問題 • 全てのコミットに対してCIする ◦ 早い段階でバグを発見できる ◦ 設定で制御可能 • 静的解析などでの標準化

    ◦ コードの品質UP • テスト失敗したコードのマージブロック ◦ masterブランチの安全保証
  10. 10 継続的デリバリー/デプロイメント - What? 継続的インテグレーションに加えて、本番環境またはテスト環境に資産が配備され ることを継続的デリバリーという。デプロイはあくまで人間が手動で行う。この作業 をさらに自動化することを継続的デプロイメントという。 - Why? 成果物を素早く顧客に提供し、より早くフィードバックを得るため。

    日々変化する市場・顧客の状況に素早く対応するため。      
  11. 11 継続的デリバリー (CD) vs 継続デプロイメント(CD) - 継続デプロイメントはデプロイの自動化までするのに対し、継続デリバリーはデプロ イに人間の手が入る - ただし、広義ではEnd

    To Endの自動化を継続的デリバリーと呼ぶこともある。     
  12. モダンソフトウェアデリバリの3つの柱

  13. モダンソフトウェアデリバリの3つの柱 本番環境

  14. モダンソフトウェアデリバリの3つの柱 本番環境

  15. 15 様々な問題点 • ヒューマンエラー • デプロイ作業の属人化 • エンジニア工数 • ロールバック

  16. モダンソフトウェアデリバリの3つの柱 Continuous Delivery 本番環境

  17. 17 CI/CDによる改善 • 常に同じ処理をCI/CDが行う • コードによる作業の明文化 • 自動で行われる • 迅速なロールバック

    • ヒューマンエラー • デプロイ作業の属人化 • エンジニア工数 • 遅いロールバック
  18. 18 Puppet: State of DevOps Report 2018 Puppet社が30,000人に対する調査結果を公開(内、6-7%が日本) 業績が上がった上位11%を「高」、下位10%を「低」、それ以外を「中」で分類 デプロイパターンの再利用

    業績(低) 業績(中) 業績(高) いつも 2% 14% 46% ほとんど 7% 44% 47% ときどき 34% 33% 6% たまに 40% 8% 1% 一度もない 18% 1% - テストパターンの再利用 業績(低) 業績(中) 業績(高) いつも <1% 10% 44% ほとんど 6% 38% 48% ときどき 32% 39% 7% たまに 40% 11% <1% 一度もない 21% 2% - 業績の良い企業は、 44倍テストパターンを再利用し、 23倍デプロイパターンを再利用している https://puppet.com/resources/whitepaper/state-of-devops-report
  19. 19 CircleCIの最新機能紹介

  20. 20 CircleCIの主な特徴 - ワークフロー - Dockerサポート - 多言語サポート - .circleci/config.ymlでテスト環境を統一

    - SSHデバッグ - Orbs
  21. 21 ワークフロー 柔軟なパイプラインを構築が可能

  22. 22 ワークフローのタイプ • スケジューリング: ナイトリービルドのように決まった時刻に実行 • マニュアル承認: ワークフローの一部で自動実行を中断し、手動による承認によって再開 • ブランチ指定:

    特定のブランチへのコミットによって実行 • タグ指定: Gitのタグによって実行
  23. 23 Dockerサポート - CircleCIはネイティブでDockerをサポートしています。 - VMによるCIと比べて非常に高速にビルド環境を構築することが可能です。 - ただし、Dockerの知識がなくても使いはじめることができます。 https://circleci.com/docs/2.0/circleci-images/

  24. 24 多言語サポート • Android • Clojure • Elixir • Go

    (Golang) • JRuby • Node.js • OpenJDK (Java) • PHP • Python • Ruby • Rust CircleCIでは、下記の言語をサポートした公式Dockerイメージをご提供 https://circleci.com/docs/2.0/circleci-images/
  25. 25 .circleci/config.ymlでテスト環境を統一 https://circleci.com/docs/2.0/sample-config/ Dockerイメージを指定 コードの取得やテスト内容を ステップとして記述 個々のジョブ定義 ジョブを組み合わせたワークフロー定義 ・連続実行 ・ファンアウト・ファンイン

    ・スケジューリング ・ブランチ別 ・タグ別 ...等
  26. 26 SSHデバッグ ビルドに失敗した場合など、SSHデバッグをOnにして再実行することで、 ビルド終了後2時間、もしくはSSHセッションが終わって10分間までは コンテナを起動した状態で維持します https://circleci.com/docs/2.0/ssh-access-jobs/

  27. 27 デプロイ https://circleci.com/docs/2.0/deployment-integrations/ • AWS • Azure • Capistrano •

    Cloud Foundry • Firebase • Google Cloud • Heroku • NPM • SSH 下記のクラウド・プラットフォームへのデプロイをサポート
  28. 28 Orbs: CircleCIの新しいエコシステム https://circleci.com/docs/2.0/deployment-integrations/ Before After https://circleci.com/orbs/registry/ • 他の開発者のOrbsの利用 •

    誰でもOrbsを登録できる • 将来はプライベートOrbs
  29. 29 CircleCI Japanの紹介

  30. CircleCI • ソフトウェア開発者をターゲットに、より良いコードをより早くデリバリす るためのサービスを提供 • 2011年に米国サンフランシスコで創業 • 世界中に170名以上の従業員 • 2018年1月にシリーズC($31M)を調達。合計で$59.5M(≒66億円)

    REPRESENTATIVE CUSTOMERS
  31. 31 グローバルで100,000社以上にご利用頂いています

  32. 32 2018/19 CI/CD動向 古株のCI/CDプレイヤーの買収: - Wercker: Oracle - Travis CI:

    Idera - CodeShip: Cloud Bees 大手からの新しいプレイヤーの参入 - GCP Cloud Build: Google - AWS CloudBuild: Amazon/AWS - Azure Pipelines: Microsoft
  33. 33 2018.06.11 CircleCI Japan発足 @CircleCIJapan https://www.faceboo k.com/groups/218073 5222207131/

  34. 34 日本語サポート https://support.circleci.com/hc/ja

  35. 35 日本語ドキュメント https://circleci.com/docs/ja/2.0

  36. 36 その他日本語での情報

  37. 37 ユーザーコミュニティー @CircleCIJapan https://www.facebook.com/grou ps/2180735222207131/

  38. Thank you. 38 Optional Name