デブサミ2019 2日目(02/15)メモ 11:05〜 CI/CDを使い倒して数段上のソフトウェア開発をしよう!

  • スライド https://speakerdeck.com/kimh/cdwoshi-idao-siteshu-duan-shang-falsesohutoueakai-fa-wosiyou

  • CI/CD戦国時代

  • 何故関心が高まっている?
    • 「ビシっと」答えられるという人はいなかった(受講者の中に)
  • CODEZINEの連載がキッカケ

    • 「CI/CD」でぐぐるとトップに出てくる
  • Circle CI Japan

    • 日本語サポート
      • 問い合わせがあまり来ない?
  • Hop-on!

    • 金さん個人運営
  • テスト

    • コンピュータにやらせよう
    • テストを自動実行するのがCI
    • テストの信頼性がない
      • し忘れ
      • テストが壊れている
        • 壊れを検知
        • 直さないとマージできない
          • 修正を強制する
      • 環境依存
    • 変更を検知
  • 使われない自動化は壊れていく(サイボウズ)

  • 環境依存

    • False Negative
    • コンテナを使う
    • LXCのコンテナでテストしていたのでCircleCIが有名になった
  • テストの新陳代謝を高める

  • Why Not

    • テストがない
    • テスト文化の布教に苦労している人はそこそこいる(受講者)

    • テストがなくてもCIを始める方法

      • 好みのツールを見つける
      • 様々なタスクを自動化する
      • 可視化

        • ステータスバッジ(yarnとかで使われてる)
        • ダッシュボード
        • メールやチャットで通知
      • CIをやってる感が出てくる

      • マージブロック

        • VCSの機能
        • CI通らないとマージできないようにする
      • テストを追加する
        • 頑張り過ぎない
  • CI/CDツールのメンテナンス

    • jenkinsおじさん問題
      • CI/CDツールのプロがプロジェクトに1人だけ
      • その人が抜けるとCI/CDが機能しなくなる
    • クラウド型がおすすめ
      • 導入しやすく、運用コストが低い。
  • CD

    • Dはデリバリー?デプロイメント?
      • デリバリーは人の医師が介在する
      • デプロイメントは全自動
        • デリバリーの進化系がデプロイメント
    • 広義のデリバリーの定義も存在する
      • ビジネスの価値を継続的に〜
    • デプロイは配置するだけ
    • リリースは配置してトラフィックを受ける状態にすること
  • リリース後の問題

    • フィードバックループ
      • 細かい単位でリリースする
      • フィードバックを早めに得る
      • CI無しでは回らない
        • No CI, No Feedback Loop
  • Why Not CD?

    • 技術的問題
      • 向いてないアーキ
    • 組織的問題

      • 誰か教えて!
      • エンジニアリング組織論の本を読むと良い?
    • 新システムにはまずCI/CDを導入しよう

      • 最初からクライマックス(家永さん)
  • CircleCI内の事例

    • AWS上にビルドマシン200台
      • 1人が半日張り付いて入れ替えが終わる
    • 新旧コードが混在
    • docker, kubenetes導入
    • マイクロサービス化
      • 1年かかった
  • Beyond CD

    • 完全に理解した?
    • 迅速なロールバック
      • git revert→CD→再リリース完了
    • 本番でのテスト
      • 環境差異
      • (本番以外では)テスト可能範囲が狭い
        • ビジネス要求、外部サービスとの結合、など
      • リリースしてみないとわからない
        • DevOpsとか
    • 高度なリリース手法
      • カナリー
        • 一部に適用する
      • BG deploy
    • 心理的安全性
    • CI/CD makes programming FUN!
  • 未来

    • 自動化することで進化してきた
      • 今何を手動でしているか?
        • 設定、モニタリング、デプロイ環境構築
    • first commitからクライマックスになる?
  • ユーザーコミュニティ