今さら聞けない「DevOPS」とは?

最近はやりのDevOps
最近では、脱ウォーターフォール型を掲げ、「DevOps」を推奨する話を耳にします。
そこで最近はやりの「DevOps」って何なの?って方に向けた情報をまとめてみました。
ウォーターフォール型でよくあるのが納期が近づけば近づくほど、安定した運用やバグの量が上がってくることです。
DevOpsは早期的かつ安定性を重視した運用フローを目指して生まれたプラクティスなので早期的に良いものを作ることができます。
はじめにお話しておきますと「現段階では、厳密なDevOpsの定義はありません」ので、そのことを踏まえておいてください。
DevOpsが生まれた経緯
DevOpsが生まれる発端は、継続的インテグレーション(CI)の需要が上がったことが要因となります。
継続的インテグレーション(CI)とは?
自動的にテストやビルドを繰り返しを行う手法です。
代表的なソフトに「Jenkins(ジェンキンス)」と言うものがあり、自動的にビルドを行いビルド結果を返すことが可能です。
また、JenkinsやRedmine(管理ソフト)、ChatOPS(チャットツール)などで連携されたものをCI環境と呼ぶ。
CI環境をちゃんと整える企業が運用チームの重要性を理解し始め、開発チームとの連携を重要視するようになりました。
そこで開発チームと運用チームで情報を共有するための概念としてDevOpsが誕生しました。
DevOpsの特徴
DevOpsは大きく「開発チーム(Development)」と「運用チーム(Operations)」の2つのチームを用意します。
ウォーターフォールに限らず、開発チームと運用チームを用意しているプロジェクト内で両者が衝突しています。
この衝突を「DevOpsの衝突」読んでおり、これにはそれぞれのカルチャーを理解していかなければなりません。
開発チームのカルチャー
開発チームは、「新しいものを取り入れる」ことや「より良いものに仕上げる」ことを重視して稼働しています。
しかし、デッドラインに追われ「バグを出す→修正」という流れを繰り返してしまいます。
運用チームのカルチャー
運用チームは、「安定的にシステムを稼働させ続ける」ことになります。
運用チームが一番嫌うことは、安定しているシステムへの修正や変更です。
両者のカルチャーを見ると、必然的に敵対しておりますね。
早くリリースしたい開発チームとなるべくリリースしたくない運用チームでは、目的が違うのです。
DevOpsを実現するためには
DevOpsに重要な5の要素を以下にまとめました。
- Cluture(文化)
- Lean(リーン)
- Automation(自動化)
- Measurement(計測)
- Sharing(共有)
これらの観点はCLAMSと呼ばれ、それぞれDevOpsの考え方が提唱されている。
リーン、自動化、測定についてはCI環境から生まれた要素になります。
DevOpsを実現するためには、カルチャーの変化と共有が最も重要になります。
カルチャーの変化と共有
開発チームと運用チームのカルチャーを「システムを完成させる事への実現」に持ってくる必要があります。
DevOpsとは、システム等の開発や導入を行うために、開発チームと運営チームが協力し連携をすることです。
いくら素晴らしいシステムで安定して稼働すことができても、実際にユーザに使ってもらい、満足してもらえなければ無意味なのです。
そのために、「なんのためのサービスを開発・運用しているのか」を前提として協力し、情報を共有していく必要があります。
その概念こそがDevOpsという運用ルールなのです。
お気軽にお書きください