「DevOps」という言葉は、一部の人にとってはなじみがなく、多くの人にとっては使い古され、少なからずの人々にとっては困惑の種となっているが、現在ホットな話題となっているのは間違いない。本記事ではDevOpsという言葉の持つ意味について考察する。
DevOpsという言葉を聞いたことがある人も多いだろうが、その意味を定義できる人は少ない。そもそも、DevOpsとは一体何なのだろうか?
Wikipediaによると、DevOpsは「『Development』(開発)と『Operations』(運用)を組み合わせたかばん語」であり、「ソフトウェア開発者とその他のITプロフェッショナルが協力しあって、コミュニケーションやコラボレーション、インテグレーション、オートメーション、評価に力点を置くソフトウェア開発手法」と記されている。
これでぴんと来ないのであれば、「DevOpsは、CAMSという言葉を通じて理解することもできる。そして、CAMSとは『Culture, Automation, Measurements and Sharing』(文化と自動化、評価、共有)の頭文字から作り出された頭字語だ」という説明ではどうだろうか。
この説明は、独立系ITコンサルタントであるPatrick Debois氏の厚意で紹介するものだ。同氏はDevOpsという言葉が生まれた当初から同分野のリーダーとして活躍してきている人物だ。
これでもまだ難しいだろうか?Debois氏も2014年に開催されたセミナーで指摘していたように、この難しさがDevOps最大の魅力の1つだと考えている人もいる。また、このセミナーでは「Keep DevOps Weird」(DevOpsを不可解なままにしておけ)と大きくプリントされたTシャツが最も人気を集めていた。
理解しがたい考え方の周りには、その理解しがたい複雑さから生み出されるのか、ユーザーがそうあって欲しいと望んでいるのかは不明だが、常にある種の神秘的な雰囲気が醸し出される。しかしDevOpsの複雑さは実際のところ、2つの考え方が混じり合ったがゆえに生み出されたものでしかない。
ソフトウェア開発というものは、開発者とそのプロフェッショナルな相棒、すなわちコードにまつわるあれこれによって築き上げられた巨大なコミュニティーによってしっかりと把握されている。すべてはコードなのだ。コードの記述、コードの実装、コードのテスト、コードの書き直し、コーディングのストレス、などなど。
一方、運用というものは、コードを実行するシステムの面倒を見ることに尽きる。ソフトウェアがどれだけのプロセッサ能力を必要としているのかや、ソフトウェアをセキュアにする方法、効率よく実行させる方法、連続稼働させ続ける方法を見極めるのは運用スタッフなのだ。
このように立ち位置の異なる2種類の人々が同じシステムの面倒を見ているものの、その異なった立ち位置ゆえに問題が引き起こされる。開発者は、自らがソフトウェアの創造主であり、運用スタッフはソフトウェアを破壊しようとする人々だと捉えがちになる。そしてののしり合いにまで発展するわけだ。
少し大げさな形容に感じたかもしれないが、筆者はこれが多くの人々の認識している状況だと考えている。
そしてこういった状況に際して今、DevOpsという概念が提唱された。2種類の人々はお互いに会社のことを思い、手に手を取って、あらゆる面で協力しあっていくための新たな方法を学ぶ必要に迫られている。