要約
開発者(Dev)と運用者(Ops)の協力体制をうたったキーワード。
主に構築やデプロイを安全かつ迅速にに行うことを主軸にしている。
発祥
DevOpsという言葉は、2009年の米国ITカンファレンスで Flickrのエンジニア発表されたプレゼンがきっかけで生まれた。
発表「開発者と運用者のコラボで一日に10回以上デプロイできるようになった件(Flickrで)」
10+ Deploys per Day: Dev and Ops Cooperation at Flickr
その後、ムーブメントにつながる。(アジャイルのブームが根底にある。)
発表内容
従来の対立構造からの変革
- Devの役割が“システムに新しい機能を追加する”
- Opsの役割は“システムの安定稼働”
そのため、利害が相反する。
しかし、ビジネス要求から来る変化に耐えるために、Devは、Opsが協力し合って、すすめるべき。
DevOpsを成り立たせるツール
- 自動化されたインフラストラクチャ: インフラの構築を自動化する。よく使われているツールにはAnsibleやChef、Dockerなどがある
- バージョン管理システムの共有: Gitなどの同じバージョン管理システムをDevとOpsで共有する
- ワンステップによるビルドとデプロイ: 手順書などを使い、手動でビルドやデプロイをするのではなく、ビルドやデプロイを自動化する。
- フィーチャーフラグ: アプリケーションの中に新たな機能(feature)を組み込んでおくが、その機能を有効にするかどうかは設定ファイル(=フラグ)によって決めるというテクニック。リリースのタイミングと機能の有効化のタイミングを分けることができる。一方でこのテクニックを使うと、機能を有効化するには設定ファイルを配置し、機能を無効化する際に設定ファイルを削除するだけで済み、機能を無効化にするためだけのリリースが不要になる。
- メトリクスの共有 : 取得したメトリクスの結果をダッシュボードでDevとOpsでお互いに共有する。
- IRCとインスタントメッセンジャーのBot: Slackなどのチャットツールに自動的にビルドやデプロイのログ、アラート内容を投稿する仕組みを作ることで情報をお互いに共有する
DevOpsであるべき組織文化
- お互いを尊重する
- お互いを信頼する
- 失敗に対して健全な態度を取る
- 相手を非難しない(Avoiding Blame)