はじめに
DevOpsについて調査したので、備忘録としてアップします。
ご意見・ご指摘などはどしどし、コメントにお願いします。
DevOpsとは?
まず、DevOpsという言葉は、開発 (Development) と運用 (Operations) を組み合わせた言葉です。
どういう意味かについては明確な定義は現在ありませんが、私は以下のような定義で捉えています。
「開発チーム(Development)と運用チーム(Operations)が協力しあってシステムを開発・運用することでビジネスの価値を高めかつ迅速にその価値をエンドユーザーに提供し続けるための様々な取り組みを示す概念」
簡単に言うと、ビジネスやサービスの価値を向上するために、組織の枠組みを取り外していろいろ取り組んでみましょう。というイメージですね。
DevOps誕生
2009年にオライリー主催のイベント「Velocity 2009」にて、当時Flickrに所属していたJohn Allspaw氏とPaul Hammond氏のプレゼンより誕生しました。
内容は下記のリンクより。
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
このプレゼンのなかで開発者と運用者の役割の違いによる対立を下記のように表現した。
開発者の役割が"システムに新しい機能を追加する"である一方、運用者の役割は"システムの安定稼働"である。そのため、開発者は新機能追加のための変更をしたい、運用者はシステムの安定稼働のため変更したくない、という対立構造ができてしまった。
両者ともに目的は「システムによってビジネスの価値を高めること」のはずなのに、手段の違いにより対立し、目的の達成に悪影響を出してしまうということがあります。
そこで、両氏はこの問題解決のために取り組んだことを組織文化とツールの観点から提示しました。
DevOpsの観点とプロセス
組織文化
- お互いを尊重する(Respect)
- お互いを信頼する(Trust)
- 失敗に対して健全な態度を取る(Healthy attitude about failure)
- 相手を非難しない(Avoiding Blame)
ツール
- 自動化されたインフラストラクチャ(Automated infrastructure)
- バージョン管理システムの共有(Shared version control)
- ワンステップによるビルドとデプロイ(One step build and deploy)
- フィーチャーフラグ(Feature flags)
- メトリクスの共有(Shared metrics)
- IRCとインスタントメッセンジャーのBot(IRC and IM robots)
プロセス
- プラン(PLAN)
- ビルド(BUILD)
- 継続的インテグレーション(CONTINUOUS INTEGRATION)
- デプロイ(DEPLOY)
- OPERATE(オペレーション)
- 継続的フィードバック(CONTINUOUS FEEDBACK)
#まとめ・感想
システムの開発と運用が双方の立場を超えて、サービス・ビジネスの利益を最大化させようというのが本質なのだろうと思いました。
しかし、これはなかなか難しいものであるとも同時に感じました。特に大規模システムなどでは、関係者が複数社にまたがり人もお金も大きくなるものでこれをするとえらいことになりそうとも感じました。
これからのシステム開発では大きな一つをつくるのではなく、小さいシステムが重なりあって大きなシステムになる未来であるならば、小さいシステムそれぞれでこの考え方を適用し、開発運用を行うことができるのかもしれません。