「DevOps」というキーワードはここ数年、開発者の話題に挙がる言葉ですが、実は、その根底にある考え方は20年以上前からIT業界で広まっている「ITサービスマネジメント(ITSM)」や「ITIL」に通じるものです。
しかし、ITILは運用の話であると誤解されているため、開発者やプロジェクトマネージャーは深くは興味を持たないことが多いのが現状です。
実はDevOpsとITILは、目指しているものは同じです。
DevOpsに興味を持つ開発者であれば、ITILを知っておくことがDevOpsの本質理解に有用です。逆に言えば、ITILを採用している企業は、DevOpsの本質を誤解せずに理解し、活用できると期待できます(今回は前編)。
DevOpsとは
DevOpsという単語を聞いたことはあるが、結局何なのかよくわかっていない、という方も多いのではないでしょうか。それもそのはずで、DevOpsの正式な定義は実は、いまだ存在しません。参考までに、Wikipediaの説明を抜粋します。
ソフトウェア開発手法の一つ。開発(Development)と運用(Operation)を組み合わせたかばん語であり、開発担当者と運用担当者が連携して協力する開発手法をさす。ただし、2013年現時点では厳密な定義は存在しておらず、抽象的が概念に留まっている
DevOpsという単語は2009年のオライリー主催のイベント「Velocity 2009」において、Flickrのエンジニアにより始めて公の場で用いられた。このプレゼンテーションでは「開発と運用が協力することで、1日に10回以上のペースでリリースが可能になる」という発表とともにDevOpsという単語が用いられた
このように、DevOpsの厳密な定義は存在しませんが、その考え方に共鳴するエンジニアも多く、その言葉はIT業界で取り上げられ、今も興味の対象となっています。一方で、厳密な定義が存在しないために、誤解が生まれ、本来の考え方とは違う意味で使用されているのも実情です。
DevOpsについての誤解
開発手法ではない
ウォーターフォール開発、アジャイル開発のような「手法」というよりも「考え方」と理解した方がその本質を捉えやすく、また仕事に広く活用しやすいのです。そもそも、前記の通り、正式な定義も存在しません。
人でも役割でも役職でもない
「DevOpsエンジニア」という表現を使われることもあるようですが、そもそもDevOpsは人ではなく、開発チームと運用チームのコラボレーションを表しているので、間違いです。個人を称する際に「DevOpsエンジニア」という表現を使うということは、コラボレーションを理解できていない可能性があります。
ツールではない
ChefやPuppetその他のツールを使用することがDevOpsではありません。
つまりDevOpsとは
「より早く、より価値の高い製品やサービスを提供する」という共通の目的のために、開発担当者と運用担当者が密に連携して協力する、という文化の醸成と振舞いを指す表現と言えます。DevOpsを理解するためのポイントは
Dev(開発者)やOps(運用者)のみの観点から論じないこと
共通の目的である「より早くより価値の高い製品やサービスを提供する」という観点で考えること
(さらに言えば)市場やユーザーの観点で考え続けること
となります。なぜなら、開発するのも運用するのも、利用者があってこそであり、価値を認めて対価を支払う市場が存在するからこそであるからです。
実は、これに共通する考え方で20年以上前よりIT業界で採用されているものがあります。ITサービスマネジメント(IT Service Management:ITSM)という考え方です。そして、その代表的なものとしてITILが有名です。
日本では、これらは「(IT)運用の標準」という誤解のまま広まっていましたが、ここ数年でその誤解も改められ、本来の考え方が理解され始めています。