Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

3 自己紹介: Kim, Hirokuni (金 洋国) - 元CircleCI 開発者 - CircleCI Japan Tech Lead

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

5 CI/CD概要

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

8 CIでできること ● テスト実行 ● コードのビルド ● 静的コード解析 ● 脆弱性チェック ● テストサマリー

Slide 9

Slide 9 text

9 CIが解決する問題 ● 全てのコミットに対してCIする ○ 早い段階でバグを発見できる ○ 設定で制御可能 ● 静的解析などでの標準化 ○ コードの品質UP ● テスト失敗したコードのマージブロック ○ masterブランチの安全保証

Slide 10

Slide 10 text

10 継続的デリバリー/デプロイメント - What? 継続的インテグレーションに加えて、本番環境またはテスト環境に資産が配備され ることを継続的デリバリーという。デプロイはあくまで人間が手動で行う。この作業 をさらに自動化することを継続的デプロイメントという。 - Why? 成果物を素早く顧客に提供し、より早くフィードバックを得るため。 日々変化する市場・顧客の状況に素早く対応するため。      

Slide 11

Slide 11 text

11 継続的デリバリー (CD) vs 継続デプロイメント(CD) - 継続デプロイメントはデプロイの自動化までするのに対し、継続デリバリーはデプロ イに人間の手が入る - ただし、広義ではEnd To Endの自動化を継続的デリバリーと呼ぶこともある。     

Slide 12

Slide 12 text

モダンソフトウェアデリバリの3つの柱

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

17 CI/CDによる改善 ● 常に同じ処理をCI/CDが行う ● コードによる作業の明文化 ● 自動で行われる ● 迅速なロールバック ● ヒューマンエラー ● デプロイ作業の属人化 ● エンジニア工数 ● 遅いロールバック

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

19 CircleCIの最新機能紹介

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

21 ワークフロー 柔軟なパイプラインを構築が可能

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

23 Dockerサポート - CircleCIはネイティブでDockerをサポートしています。 - VMによるCIと比べて非常に高速にビルド環境を構築することが可能です。 - ただし、Dockerの知識がなくても使いはじめることができます。 https://circleci.com/docs/2.0/circleci-images/

Slide 24

Slide 24 text

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/

Slide 25

Slide 25 text

25 .circleci/config.ymlでテスト環境を統一 https://circleci.com/docs/2.0/sample-config/ Dockerイメージを指定 コードの取得やテスト内容を ステップとして記述 個々のジョブ定義 ジョブを組み合わせたワークフロー定義 ・連続実行 ・ファンアウト・ファンイン ・スケジューリング ・ブランチ別 ・タグ別 ...等

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

27 デプロイ https://circleci.com/docs/2.0/deployment-integrations/ ● AWS ● Azure ● Capistrano ● Cloud Foundry ● Firebase ● Google Cloud ● Heroku ● NPM ● SSH 下記のクラウド・プラットフォームへのデプロイをサポート

Slide 28

Slide 28 text

28 Orbs: CircleCIの新しいエコシステム https://circleci.com/docs/2.0/deployment-integrations/ Before After https://circleci.com/orbs/registry/ ● 他の開発者のOrbsの利用 ● 誰でもOrbsを登録できる ● 将来はプライベートOrbs

Slide 29

Slide 29 text

29 CircleCI Japanの紹介

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

33 2018.06.11 CircleCI Japan発足 @CircleCIJapan https://www.faceboo k.com/groups/218073 5222207131/

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

36 その他日本語での情報

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

Thank you. 38 Optional Name