Introduction
DevOpsとは、システム開発の現場において、開発チームと運用チームの連携をスムーズに進めるための仕組みや概念のことです。システム開発は開発して終わりではなく、運用フェーズを成功させることで、ユーザーに適切なシステムが届きます。しかし、開発チームと運用チームの連携がうまくいかず、問題が発生することも多いかもしれません。
この記事では、DevOpsとは何か、メリットや注意点、CI/CDの仕組みなどについて解説します。
目次
DevOpsとは?
DevOpsとは、システムなどの開発チームと運用チームがお互いに作業をしやすくするための仕組みです。システム開発の現場では、しばしば開発チームと運用チームの意見が対立し、問題が発生する傾向にあります。そのような問題を解決するために、DevOpsは誕生しました。
ここでは、DevOpsについて、詳細や誕生の経緯などを詳しく解説します。
▼あわせて読みたい▼
DevOps(デブオプス)って何だ?Dev(開発)とOps(運用)以外の人たちは何をする?のページへ
「開発」と「運用」を組みあわせた言葉
DevOps(デブオプス)とは、Development and Operationsの略語です。Developmentは開発、Operationは運用を意味し、2つの言葉を組みあわせたものになります。
システムは開発して終わりではなく、完成したら運用フェーズに入ります。利用環境を整えてユーザーが利用しはじめたら、システムメンテナンス、設定変更、機能追加、不具合改修、障害対応などが必要です。そのため、開発と運用は決して切り離せないものといえます。
しかし、開発チームと運用チームは、それぞれ立場や考え方、仕事内容が異なるため、対立が生まれることもあるでしょう。
開発チームは、新機能を開発することによって報酬を得ます。ただし、運用中のシステムを開発チームが変えるわけにはいかないので、開発した機能のリリースは、運用側にお願いすることになります。
一方で、運用チームとしては新機能を組み込むための作業を計画し実施することが、かなりの工数負担になります。工数分の報酬が得られないこともありますし、作業を間違ってトラブルを起こすと大問題となります。結果、新機能をつくりたい開発チームと、現状維持で過ごしたい運用チームとの間で対立が生まれ、顧客の望むシステムが実現できないことにつながりかねません。
そこで、システム開発時に開発と運用をつなぐ仕組みであるDevOpsを活用すれば、お互いが仕事をしやすいシステムを開発できるのです。
DevOpsが誕生した経緯
システム開発時に、運用フェーズまで考えて開発を行うことは非常に重要です。
従来のウォーターフォール開発では、最初に要件や仕様を固めてから、開発、テスト、リリースまでを長期間かけて行います。開発スケジュールを立てやすいメリットはあるものの、一度決まった仕様を後で変えることがむずかしくなります。そのため、仕様変更や機能追加など、運用フェーズの意見を開発内容にとり入れにくいことがデメリットでした。
そこで生まれたのが、小さい単位で開発の流れを繰り返す、アジャイル開発という手法です。
ウォーターフォール開発は、半年や1年といった長期間で開発を行うことが多いですが、アジャイル開発なら1週から2週で開発の1サイクルが終わります。短いスパンの開発サイクルを繰り返すため、頻繁に機能や仕様の見直しをすることが可能になります。
もう一つ忘れてはならないのが、クラウドコンピューティングです。
アジャイル開発でソフトウェア開発のスピードアップができたとしても、それをリリースするのに時間がかかっては意味がありません。クラウドを活用することで運用中の環境に影響なくリリース準備を進めることができるようになります。また運用チームの作業効率化も期待できるでしょう。
DevOpsはアジャイル開発とクラウドコンピューティングを用いて、迅速で継続的にリリースできる開発の仕組み・概念です。DevOpsを導入することで、システムをリリースするまでのスピードが向上します。さらに、万が一リリース後に大きな問題が発生したときには、元のバージョンに戻して運用を継続することも容易にできます。
DevOpsが重要視されている背景
DevOpsが重要視されているのは、顧客満足度の向上や、ビジネスにおける競争力の強化が求められているためです。
スピーディーにユーザーの意見をとり入れ、品質の高いシステムをリリースしつづけることで、顧客満足度の向上につながります。また無駄な作業を省き、生産性を向上できれば、開発現場の働き方改善につながるでしょう。その結果、ビジネスの競争力が強化されていきます。
DevOpsとアジャイル開発の違いとは?
DevOpsとアジャイル開発は深い関係がありますが、2つの違いは何なのでしょうか?アジャイル開発とは何か、DevOpsとアジャイル開発の違いは何かについて解説します。
アジャイル開発とは?
アジャイル開発とは、短いスパンで開発を繰り返す開発手法のことです。アジャイル開発では、要件定義、設計、開発、テスト、フィードバックという流れを短期間で繰り返します。
従来のウォーターフォール開発の場合には、最初にシステム全体の仕様を決めてからリリースまで、通常半年や1年の長期間をかけて行います。しかしその場合、途中で仕様変更や機能追加が生じた場合に、後戻りしにくいことがデメリットです。
一方、アジャイル開発は、1週や2週の短いスパンで開発を繰り返します。仕様変更や機能追加を次の開発サイクルで行えばよいため、ユーザーの意見などもとり入れやすいのが大きなメリットです。
アジャイル開発との違い
アジャイル開発は、短期間で開発サイクルを繰り返すというシステム開発の手法のひとつです。ただし、アジャイル開発は開発チームの手法として考えられてきたものです。
一方、クラウドコンピューティングは、運用チームの効率化に大きなポテンシャルをもっていますが、インフラとして使う以上の効果があまり引き出せてきませんでした。
DevOpsは、開発チームと運用チームの連携をスムーズに行うための仕組みです。開発チームがアジャイル開発をとり入れて1週や2週のスパンで機能を提供したとしたら、それを運用チームが引きとってクラウド上ですばやくデプロイ、リリース、運用するという仕組みが必要です。
ここまでくると、もう開発チームだの運用チームだのいっている状況ではなくなるでしょう。開発と運用が一体化したDevOpsチームとして、仕組みの整備改善やシステム提供スピードのさらなる向上を目指すことになります。
DevOpsを導入するメリット
DevOpsを導入すると、どのようなメリットがあるのかを解説します。
リリースのスピードが向上する
アジャイル開発によって1週や2週のサイクルで作成した機能を、同じサイクルですぐにリリースできるようになります。各サイクルの時点で優先して行うべき作業を取捨選択して、もっとも必要な、効果の高い機能を短納期でリリースするように調整することができます。
開発運用を通した効率化ができる
開発チームだけ、運用チームだけの最適化ではなく、開発、リリース、運用をすべて見渡した効率化ができるようになります。特にクラウドを用いたデプロイまわりの作業は、開発と運用の双方のノウハウがあってこそ、自動化できるプロセスとなります。
実験的リリースが可能になる
顧客のビジネスが複雑化している昨今、ときには実験的な機能をリリースしたいこともあるでしょう。このときに開発と運用が一体化していることで、カナリアリリースやA/Bテストなどの手法で機能を評価しながら、次の作戦を考えたり、問題があったらすぐにとり下げたりすることができます。
DevOpsのデメリット・注意点
DevOpsはメリットが多い仕組みですが、一方でデメリットや使う際の注意点もあります。ここでは、DevOpsのデメリット、注意点について解説します。
DevOpsが向いていない開発プロジェクトもある
DevOpsはメリットが多い仕組みですが、一方でデメリットや使う際の注意点もあります。ここでは、DevOpsのデメリット、注意点について解説します。
DevOpsが向いていない開発プロジェクトもある
ウォーターフォール開発は、半年や1年といった開発期間、その後につづく運用期間に渡って、一切の要求変更がないという条件で最適化された開発手法です。もしこの条件に合致するのであれば、ウォーターフォール開発の方が少ない工数で開発することができます。
また、DevOpsやアジャイル開発はメンバーが自律的に臨機応変に動くことを前提とした手法であるため、メンバー構成上の理由で運用が困難な場合もあるかもしれません。
さまざまな自動化にとり組む必要がある
DevOpsでは反復して実行するものはすべて自動化を検討します。単体テスト、統合、統合テスト、デプロイ、リリースなどの作業を自動化するほか、バックログ管理、インシデント管理、チケット管理といった管理作業もツールを活用して効率化を考える必要があります。
もし、既存資産が自動テストに対応していない状態であれば、自動テストをつくる作業が必要となります。これが完了するまでは、開発工数のある程度の部分が自動テストの作成に割かれることになるでしょう。
DevOpsになればよいというものではない
アジャイル開発とクラウドの導入は、DevOpsには必須のことですが、これだけで十分というわけではありません。本当にリリースのスピードを向上するためには、開発と運用を通した見直し改善が必須になるでしょう。
また、既存のアプリケーションやインフラは、必ずしも機能追加が容易になるように設計されているわけではなく、動けばよいという構造になっていることも多くあります。こういった既存資産をリファクタリングして、機能追加のスピードがあげられるように設計を改善していく作業も必要です。
DevOpsに必要な「CI/CD」について
CI/CDとは「Continuous Integration/Continuous Delivery」のことで、継続的インテグレーション/継続的デリバリーという意味です。
CIは、コード①修正、②ビルド、③テストまでの継続的な開発の仕組みで、CDは④デプロイ、⑤運用までの継続的な環境構築の仕組みを指しています。この2つの仕組みを利用し、それぞれの領域の作業を自動化することで、継続的に高品質な作業を行うことが可能です。
短い開発スパンを何度も回すDevOpsを利用した開発プロジェクトでは、CI/CDの仕組みが必要不可欠です。ここでは、CI/CDのプロセスについて簡単にご説明します。
①コード修正
開発環境において、機能追加や仕様変更などのコード修正を行います。同時に自動化されたテストコードを作成し、確認後にコードとテストコードの双方をバージョン管理ツールに反映します。
②ビルド
修正されたコードをコンパイルし、動作環境を構築するのがビルド作業です。テスト用の環境に、修正後のコードが反映された環境がビルドされます。
③テスト
修正されたコードが反映されたテスト環境を使って、動作確認やテストが行われます。仕様どおりに動作するか、ほかの部分に影響がないかなどをテストします。
④デプロイ
テストが完了したオブジェクトを本番環境に設定する作業が、デプロイです。デプロイ後に、問題なく動作するかを確認します。
⑤運用
本番環境に修正されたオブジェクトがデプロイされたら、運用を開始します。
DevOpsを導入する流れ
DevOpsを導入するために、必要な流れをご説明します。
①プロジェクトチームを構築する
DevOpsの導入に限らず、新しい仕組みを導入する際には、専門のプロジェクトチームを構築する必要があります。DevOpsの知識が豊富で、導入するプロジェクトのことをよく知っている人材を登用するのがよいでしょう。
②組織にDevOpsの考え方を浸透させる
DevOpsを導入したら、自動的に開発チームと運用チームが連携できるわけではありません。両チームが協力できる関係を整えるために、以下のような考え方を徹底する必要があります。
・Respect:互いに尊敬しあう
・Trust:互いに信頼しあう
・Healthy attitude about failure:相手の失敗を責めない
・Avoiding Blame:相手の落ち度を責めず、同じ失敗を起こさないための議論を進める
③CI/CDを導入する
上記でご説明したとおり、短い開発スパンを繰り返すアジャイル開発を進めるためには、CI/CDの導入が必要です。段階的に現場に導入していき、開発作業とデリバリー作業を自動化します。
④継続的に評価改善する
DevOpsは、CI/CDを導入したところで終わりではありません。ここからはリリースのスピード向上など、チームの目標に向かって作業プロセスを評価改善していくことが必要です。
一説によると、DevOpsがうまく機能しているプロジェクトでは、工数の2~3割を改善とリファクタリングに当てているということです。DevOps成功の鍵は評価改善にあるといっても過言ではないでしょう。
まとめ
この記事では、DevOpsとは何か、メリットや注意点、CI/CDの仕組みなどについて解説しました。
開発チームと運用チームの連携がうまくいかないと、せっかく高品質なシステムを構築しても、ユーザーに悪影響をおよぼすことがあります。その結果、システム全体の品質が下がってしまいます。
運用の面でうまくいかないことが多い、開発と運用の作業がかみあわないとお悩みの場合には、DevOpsの導入を検討してみてください。
ご相談はこちらから
>>お問い合わせページへ
>>料金についてページへ
監修
永井 敏隆
大手IT会社にて、17年間ソフトウェア製品の開発に従事し、ソフトウェアエンジニアリングを深耕。SE支援部門に移り、システム開発の標準化を担当し、IPAのITスペシャリスト委員として活動。また100を超えるお客様の現場の支援を通して、品質向上活動の様々な側面を経験。その後、人材育成に従事し、4年に渡り開発者を技術とマインドの両面から指導。2019年、ヒンシツ大学の講師としてSHIFTに参画。
担当講座
・コンポーネントテスト講座
・テスト自動化実践講座
・DevOpsテスト入門講座
・テスト戦略講座
・設計品質ワークショップ
など多数
――――――――――
ヒンシツ大学とは、ソフトウェアの品質保証サービスを主力事業とする株式会社SHIFTが展開する教育専門機関です。
SHIFTが事業運営において培ったノウハウを言語化・体系化し、講座として提供しており、品質に対する意識の向上、さらには実践的な方法論の習得など、講座を通して、お客様の品質課題の解決を支援しています。
https://service.shiftinc.jp/softwaretest/hinshitsu-univ/
https://www.hinshitsu-univ.jp/
――――――――――