Open14

『The DevOps ハンドブック 理論・原則・実践のすべて』読書メモ

Yunosuke YamadaYunosuke Yamada

DevOpsの原則

  • フローの原則:左から右へのフロー(全体)を高速化する
  • フィードバックの原則:(全てのステージで)右から左へのフィードバックを返す
  • 継続的な学習と実践の原則:生産的な文化を作る
Yunosuke YamadaYunosuke Yamada

これらの原則のプラクティスとしては「技術」以外の部分もある
継続的な学習と実践の原則は「文化」の話
フローの原則では作業の可視化、WIP制限などの「プロセス」のプラクティスがある

Yunosuke YamadaYunosuke Yamada

フロー改善の技術的実践

デプロイパイプラインの構築
CDのことでない

  • 環境をオンデマンドで作成できるようにする
    • VMイメージのコピー、IaC、Docker、クラウド
  • 全てをバージョン管理する
  • 修理より再構築の方が簡単なインフラ
    • イミュータブルなインフラ
  • 本番に近い環境での動作確認も「完成」の条件に含める

上記を使って、本番環境に近い環境を使って開発、動作確認を行い、変更が全てコミットされるプロセスを作る

Yunosuke YamadaYunosuke Yamada

自動テスト

  • 継続なビルド、テスト、インテグレーション
  • 高速で信頼性の高い自動テストをコミットごとに実行する
    • 第1ステージは10分以内
  • パイプラインが失敗したら修正されるまでコミットを禁止する
Yunosuke YamadaYunosuke Yamada

継続的インテグレーション

  • トランクベースの開発
    • 最低1日1回はマージする
Yunosuke YamadaYunosuke Yamada

自動化とローリスクリリース

  • デプロイの自動化
    • パイプラインへの統合
  • リリースとデプロイの分離
    • デプロイは単に配置すること、リリースは新機能を利用可能な状態にすること
    • ブルーグリーンやカナリア、ダークローンチを実施することで分離できる
Yunosuke YamadaYunosuke Yamada

ローリスクのアーキテクチャ

  • モノリスからマイクロサービスへ
  • 絞め殺しパターンで少しずつマイグレートする
Yunosuke YamadaYunosuke Yamada

フィードバックの技術的実践

Yunosuke YamadaYunosuke Yamada

遠隔測定データを作る
テレメトリデータのこと

  • 一元的な遠隔測定インフラを作り、データを集約する
  • アプリにログ作成機能を追加する
  • 問題解決に遠隔測定データを利用する
  • 指標を簡単に追加できるようにする
  • 遠隔測定データにセルフサービスでアクセスできるようにする
Yunosuke YamadaYunosuke Yamada

遠隔測定データを分析して問題を予測する

  • 統計手法を用いて問題を検出する
  • アラートを送る
Yunosuke YamadaYunosuke Yamada

フィードバックループを実現して安全にデプロイできるようにする

  • デプロイ時に積極的にモニタリングする
  • 開発と運用でオンコールを共有する
  • 本番サービスを開発に管理させる
    • 初期や脆弱になった場合
Yunosuke YamadaYunosuke Yamada

レビューと調整プロセス

  • ピアレビュー
  • デプロイのサイズを減らす
  • ペアプロ