Slide 1

Slide 1 text

1 なぜ今CI/CDがアジャイル組織に必要 とされるのか? Kim, Hirokuni (CircleCI SRE/Japan Tech Lead) #agilejapan #circlecijpanan

Slide 2

Slide 2 text

2 CircleCIについて ● 世界最大規模のクラウド CI/CD サービス ● より良いコードをより速く、簡単にリリースすることを可能に ● 2011年設立、サンフランシスコ本社 ● 220人以上の社員、5大陸に在籍(米国と東京にオフィス) ● 18年1月 3,100万ドルのシリーズCを実施、合計5,950万ドルを調達 Representative Customers

Slide 3

Slide 3 text

3 サークルシーアイ チョットデキル 左: CEO Jim Rose 右: CTO Rob Zubber

Slide 4

Slide 4 text

4 海外初オフィスとなるCircleCI Japan

Slide 5

Slide 5 text

5 自己紹介 Kim, Hirokuni (金 洋国) - CircleCI SRE - CircleCI Japan設立 - CircleCI Japan Tech Lead Twitter: https://twitter.com/kimhirokuni

Slide 6

Slide 6 text

6 宣伝 (個人) 電動キックボードを公道で体験できるサービス Hop-on! を運営 ● みなとみらい・渋谷で体験できます ● 続きは https://hop-on.jp で!

Slide 7

Slide 7 text

7 アジャイルとは? ● 0/1な定義ではなく属性の度合い ○ 自律的 ○ フラット ○ 変化に対する柔軟性 ○ 失敗から学ぶ姿勢

Slide 8

Slide 8 text

8 アジャイルとは? ● 0/1な定義ではなく属性の度合い ○ 自律的 ○ フラット ○ 変化に対する柔軟性 ○ 失敗から学ぶ姿勢

Slide 9

Slide 9 text

9 自分が考えるアジャイルなチームとは? 失敗を推奨しそこから 学ぶ仕組みが存在する

Slide 10

Slide 10 text

10 自分が考えるアジャイルなチームとは? 失敗を推奨しそこから 学ぶ仕組みが存在する CI/CDがどのように貢献するか <- 今日のテーマ

Slide 11

Slide 11 text

11 CI/CDとは何か?

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

13 CI/CDとは何か? 2つの開発手法から構成される ● Continuous Integration (継続的インテグレーション) ● Continuous Deployment (継続的デプロイメント)

Slide 14

Slide 14 text

14 CIとはテストを自動で実行する仕組み 開発者のコード変更に対して ● 常に ● 同じ環境で テストを実行してくれる

Slide 15

Slide 15 text

15 CIの流れ 2. VCSからCircleCIへ通知 1. コードをプッシュ 3. CircleCIでテスト実行 4. テスト結果通知

Slide 16

Slide 16 text

16 CIの流れ 2. VCSからCircleCIへ通知 1. コードをプッシュ 3. CircleCIでテスト実行 4. テスト結果通知

Slide 17

Slide 17 text

17 CIの流れ 2. VCSからCircleCIへ通知 1. コードをプッシュ 3. CircleCIでテスト実行 4. テスト結果通知

Slide 18

Slide 18 text

18 CIの流れ 2. VCSからCircleCIへ通知 1. コードをプッシュ 3. CircleCIでテスト実行 4. テスト結果通知

Slide 19

Slide 19 text

19 なぜCIが重要か? ● テストがあるけど実行し忘れた ● 昔書いたテストが壊れていて動かない ● テスト結果が環境依存 CIがないと色々問題が CIがないとき CIがあるとき

Slide 20

Slide 20 text

20 なぜCIが重要か? ● テストがあるけど実行し忘れた ● 昔書いたテストが壊れていて動かない ● テスト結果が環境依存 CIでさくっと解決! ● 常に自動で実行される ● テストが壊れた時点で通知がくる ● まっさらな環境でテストを実行 CIがないとき CIがあるとき

Slide 21

Slide 21 text

21 CIがある開発フロー コードをPush

Slide 22

Slide 22 text

22 CIがある開発フロー コードをPush CIでテスト

Slide 23

Slide 23 text

23 CIがある開発フロー コードをPush CIでテスト masterへマージ

Slide 24

Slide 24 text

24 CIがある開発フロー コードをPush CIでテスト masterへマージ 自動

Slide 25

Slide 25 text

25 CIがある開発フロー コードをPush CIで自動テスト masterへマージ 自動 デプロイ 手動

Slide 26

Slide 26 text

26 CD (継続的デプロイメント)とは? 開発者のコード変更に対して ● CIを実行後 ● 自動で デプロイしてくれる

Slide 27

Slide 27 text

27 なぜCDが重要か? ● 毎回のデプロイ作業が大変 ● 間違った環境にデプロイ (ヒューマンエラー) CDがないと色々な問題が

Slide 28

Slide 28 text

28 アジャイルとCI/CDの関係

Slide 29

Slide 29 text

29 CI/CDまでの歴史 アジャル DevOps CI/CD 時間

Slide 30

Slide 30 text

30 アジャイル ● 顧客と対話 ● コミュニケーションの重要性 ● 変化への対応

Slide 31

Slide 31 text

31 CI/CDまでの歴史 アジャル DevOps 時間

Slide 32

Slide 32 text

32 DevOps ● 開発 (Dev)と運用 (Ops)の協調 ● 作業の自動化

Slide 33

Slide 33 text

33 アジャイルとDevOps アジャイル: 開発チームと顧客との積極的な協力 DevOps: 開発 (Dev) と 運用 (Ops) の協調

Slide 34

Slide 34 text

34 CI/CDまでの歴史 アジャル DevOps CI/CD 時間

Slide 35

Slide 35 text

35 CI/CD ● DevOpsのアイデアを実現するためのツール ● テスト・デプロイを自動化

Slide 36

Slide 36 text

36 抽象度のピラミッド図 アジャイル DevOPs CI/CD 抽象度 高い 低い

Slide 37

Slide 37 text

37 CircleCIのチーム紹介

Slide 38

Slide 38 text

38 グローバルチーム ● アジア ● ヨーロッパ ● 北アメリカ

Slide 39

Slide 39 text

39 ボーイング方式 ● ワーキング・トュギャザー ● 時差の有効活用 ● 継続的なペアリング ● 無理のないアラート対応 ● 障害時対応

Slide 40

Slide 40 text

40 リモートチーム成功の秘訣 Over Communication ● 質問・疑問があればなんでもSlackに ● SlackよりZoomを ● Slackでメンションをためらわない

Slide 41

Slide 41 text

41 開発手法: 独自のKANBAN方式 (1) KANBANとは? ● ご存知TOYOTAの工場での生産手法が起源 ● 仕事を細分化 ● プロセスの視覚化 ● 開発者は Ready For Devな作業をプルしていく

Slide 42

Slide 42 text

42 開発手法: 独自のKANBAN方式 (2) 分散チームに合うようにカスタマイズ ● ミーティングの数や種類 ● Story Point ● WIP Limitの有無

Slide 43

Slide 43 text

43 チーム構成 Eng. Manager: チーム全体の管理。コードは書かない Tech Lead: 設計や重要な技術的決定に責任を持つ Team Lead: Eng. Managerへの一歩手前 Engineering Manager Team Lead Tech Lead Developers 1チーム7人から10人の構成

Slide 44

Slide 44 text

44 Competency Matrix

Slide 45

Slide 45 text

45 エンジニア組織の原則 ● 全てのエンジニアがマネジャーのキャリアパスを目指す わけではない ● 若手エンジニアでもリードできる ● エンジニアによって成長過程や強みはそれぞれ ● エンジニアは成長していく ● コードを書く力は求められる技術のほんの一部 Competency Matrixはここに公開されています

Slide 46

Slide 46 text

46 エンジニアチームの重要原則: アイデアを常にテストする ● 早くMVPを作る ● ユーザーからのフィードバックを得る ● 修正を常に本番環境へ反映させる

Slide 47

Slide 47 text

47 CI/CDで失敗から学ぶチームを作る

Slide 48

Slide 48 text

48 Thinking Time ⏰ Q: 失敗から学ぶチームはどうすれば作れるか?

Slide 49

Slide 49 text

49 Thinking Time ⏰ Q: 失敗から学ぶチームはどうすれば作れるか? A: 失敗のコストを下げる

Slide 50

Slide 50 text

50 失敗のコストが下がると少なくなるもの ● 責任の追求 ● 対応のミーティング ● 無駄なチェックリスト ● etc.

Slide 51

Slide 51 text

51 開発での失敗あるある 1 手戻りの問題 ● 2ヶ月仕様定義 ● 4ヶ月実装 ● リリース後大きな仕様の間違いが発覚

Slide 52

Slide 52 text

52 開発での失敗あるある 2 QAの問題 ● テスト環境で1週間テスト ● 本番と構成が違っていてバグを見逃す

Slide 53

Slide 53 text

53 なぜこのような問題が起こるのか? テスト可能部分 外部サービス ビジネス要求 仕様 トラフィック・負荷 テスト可能部分 外部サービス ビジネス要求 仕様 トラフィック・負荷 テスト可能領域はとても小さい

Slide 54

Slide 54 text

54 我々の重大な気づき 結局リリースしてみないとわからない!

Slide 55

Slide 55 text

55 シフト・レフト ライト 本番環境でテスト ● CDで常に本番環境へデプロイする ● 実際にユーザーに使ってもらう ● 問題・失敗を見つける ● 修正 ● CDでもう一度デプロイ

Slide 56

Slide 56 text

56 シフト・レフト ライト 設計・デザイン 開発 リリース テスト 時間 設計・デザイン 開発 リリース テスト 設計・デザイン 開発 リリース テスト フィードバック フィードバック

Slide 57

Slide 57 text

57 でも本番環境でテストってほんとに大丈夫?

Slide 58

Slide 58 text

58 本番環境でテストするための技術 ● カナリーリリース ● フィーチャーフラグ ● ブルー・グリーンデプロイメント

Slide 59

Slide 59 text

59 フィードバックループ ● 問題の早期発見 ● 素早いフィードバック ● カイゼン

Slide 60

Slide 60 text

60 CDなしだとだとループが回らない ● リリースの許可が必要 ● ヒューマンエラー フィードバックループが回 らない

Slide 61

Slide 61 text

61 CDなくしてフィードバックループなし No CD, No Feedback Loop

Slide 62

Slide 62 text

62 結論: CDを活用して失敗から学ぶチームを作ろう ● 早く失敗できる ● 失敗のコストが下がる ● フィードバックループが回る CDをうまく活用すると、、、

Slide 63

Slide 63 text

63 前半のスライド 失敗を推奨しそこから 学ぶ仕組みが存在する

Slide 64

Slide 64 text

64 前半のスライド 失敗を推奨しそこから ↑ CDで本番環境でテスト 学ぶ仕組みが存在する

Slide 65

Slide 65 text

65 前半のスライド 失敗を推奨しそこから ↑ CDで本番環境でテスト 学ぶ仕組みが存在する ↑ フィードバックループ

Slide 66

Slide 66 text

66 Japan to APAC! : 多数のポジションを日本で採用中! circleci.com/careers Senior Full Stack Software Engineer Senior Site Reliability Engineer Account Executive Customer Success Manager Japan Marketing Manager Solutions Engineer Sales Development Representative Tokyo, Japan グローバルプラットフォームを作るディ ベロッパーの採用 日本とAPACを担当するメンバーの採 用

Slide 67

Slide 67 text

Thank you. 67 Optional Name