ここ数年の技術進歩はめまぐるしく、またそれに併せて私たち一般消費者のニーズも刻一刻と変化しています。そんな中、企業は技術の進歩に適応できるよう、よりスピーディーにシステムを開発・運用していく必要があると言えます。
そこで注目されているのが「DevOps(デブオプス)」です。これは、効率的に開発や運用を行うための体制のことで、多くの企業のエンジニアリング部門で採用が進んでいるものです。
本記事では、このDevOpsの詳細やメリット、および混同されやすいアジャイル開発との違いなどについて解説していきます。
DevOpsとは?
DevOpsという言葉は、開発を意味する「Development(デベロップメント)」と、運用を意味する「Operations(オペレーションズ)」を組み合わせた造語になります。その組み合わせのとおり、企業における開発担当者と運用担当者が積極的に連携して、スピーディーで柔軟にシステムを開発する手法の「概念」を示す言葉として誕生しました。
「概念」と記載したとおり、大きな枠組みとしての考え方を示したものとなるので、具体的なツールや特定の技術の活用などは決まっていません。もちろん大まかな流れとして、たとえば開発担当者が機能単位を最小化して小規模なテストサーバーに公開し、運用担当者のフィードバック等を受けながら改善を繰り返すなどの、システム開発サイクルの短縮化と高速化を実現するようなケーススタディは様々な企業から発信されています。
ですが、それらはあくまで一例としての話であり、それが即ちDevOpsである、というわけではない事は念頭におく必要があります。
注目されるようになった背景
DevOpsが注目されるようになった背景には、先述した開発担当者と運用担当者の役割の違いによる齟齬の発生が挙げられるでしょう。
開発担当者は、ユーザーの需要に対応する形で該当システムの機能を新規開発する役割を負っています。つまり、本番稼働するまでが開発担当者の領分であり、それ以降のシステム運用については関与することは基本的にありません。
一方で運用担当者は、本番稼働しているシステムを安定的に保守・稼働する役割を負っています。いかに安定した運用にするかがミッションとなるので、ユーザーからの新規要望に対する対応は遅れがちになる傾向があります。つまり、新たなシステムの開発担当者と既存のシステムを継続的に稼働させる運用担当者は、場合によっては相反する価値観をもつ可能性があるわけです。
2000年代初頭のクライアントサーバモデルのシステム開発であれば、このように役割を明確に分けたプロジェクトの進め方でも大きな問題にはならなかったわけですが、昨今の開発プロジェクトの多くはクラウドネイティブなものであり、サービス開発や既存システムの改善をより迅速に進めていくことが求められています。
開発担当者と運用担当者が対立し、システムの開発や運用が滞っている場合ではない。このような課題感から、DevOpsへの注目度が高まってきたと言えます。
DevOpsとアジャイル開発の違い
DevOpsを考える際に、「アジャイル開発」と混同されるケースが多く見受けられます。次は、このアジャイル開発とDevOpsの違いについて見ていきましょう。
アジャイル開発とは
アジャイル開発とは、システムをはじめとするソフトウェア開発の手法のひとつです。必要とされる機能単位でプロジェクトを分割し、小さなプロジェクトごとにチームを編成して要件定義から設計、開発、テストまでを一気通貫で行ってリリースする流れとなります。ウォーターフォールのような従来型開発手法と比べて、よりスピーディーに開発を完了させるための開発手法として重宝されており、こちらも多くの開発現場で採用されています。
◎アジャイル開発とは? ウォーターフォールモデルとの違いを解説
DevOpsとアジャイル開発の違い
では、DevOpsとアジャイル開発の違いは何かというと、アジャイル開発は開発モデルを表すのに対して、DevOpsはそれを実現するための組織体制的な概念となります。DevOpsはアジャイル開発という枠組みの中にある1つの開発手法であって、組織の協力体制に関する部分の話であると理解しましょう。
つまり、スピーディーで効率的な開発を実現するにあたっては、DevOpsで開発と運用の連携をとりながら、アジャイル開発で効率的に進めることが、理想的なエンジニアリング環境であると言えます。
DevOps導入によるメリット・デメリット
ここで改めて、DevOpsを導入することのメリットを見ていきましょう。
開発スピード向上
DevOpsを導入すると、前述したとおり、開発のスピードが向上します。具体的には、アジャイル開発の手法を用いることが多く、小さな機能単位でリリースをすることになるので、柔軟かつ迅速な開発が可能になります。昨今の社会における目まぐるしい変化への対応力が劇的に向上します。
生産性向上
2つ目のメリットは生産性の向上です。開発と運用の連携体制を構築することで、組織を横断する上で発生していた“無駄な作業”を減らし、より効率的で生産性の高いエンジニアリングを展開できます。
信頼性、安全性維持
一般的に開発スピードが高まると不具合も多くなると思われるでしょうが、DevOpsでは開発組織体制そのものを改善し、従来の手作業によるテスト工程を自動化することで、不具合を発見しやすいという特徴があります。もちろん、不具合の「発見」だけではなく、品質チェック機能をプロジェクトの上位フェーズにもってくることで、そもそも不具合が発生しないような仕組みの構築にも寄与するでしょう。結果として安全性が維持され、信頼性の向上につながることになります。
DevOpsのデメリット・注意点は?
3つメリットをあげましたが、もちろんDevOpsにはデメリットも存在します。DevOpsはあくまで概念を示したもので、決まり切ったフレームワークではありません。自由度が高い分、開発チームと運用チームが密に連携し、話し合い等を通してブラッシュアップさせていく姿勢が必要です。そのため、チームや部署間に壁がある場合、あるいは変化を受け入れにくい風土の場合は、プロジェクトが頓挫する可能性もあるでしょう。
全体の規模やスケジュールを厳密に管理し進行したり、多くの機能を一度に開発する大規模なプロジェクトには、従来のウォーターフォールが向いています。プロジェクト体制や組織体制を考慮し、自社に合う開発手法を検討しましょう。
DevOpsの最新動向
DevOpsに関連する動向は国内のみならず海外でも活発です。例えば2021年12月には、DevOpsライフサイクルに対応した機能をシングルアプリケーションで提供する米GitLab社が、オープンソース オブザーバビリティのOpstrace社を買収したことを発表し、DevOpsプラットフォームの拡大を進めていることで大きな話題となりました。
また近年では、DevOpsの概念に情報セキュリティの概念を加えた「DevSecOps」の考え方や、より運用とインフラ部門の連携に重きをおいた「SRE(Site Reliability Engineering)」という方法論も注目されており、アジャイル開発を推進する上での企業の選択肢は多様化しています。
これらは企業が置かれている状況によって取り組み方が変わるため、現在の状況を正確に見極めた上で柔軟に決めていくと良いでしょう。
DevOps導入には、変化に対応するマインドが大切
システム開発・運用をスムーズにして、生産性と信頼性を高めるために、DevOpsは非常に有効な手段です。企業のエンジニアリング部門に取り入れることで、組織全体として多くのメリットを享受できるでしょう。
そのためには、企業としての「変化に対するマインド」が重要です。技術の進歩に即座に適応できるような体制の構築はもちろん、変化を受け入れ継続的な改善プロセスを回すことで、クオリティの高いシステム開発ができるようになるでしょう。