1.DevOpsの定義

DevOpsという言葉はDevelopment and Operations の略語です。Development=開発担当とOperations=運用担当が密に連携してソフトウェア開発の価値を高めていきます。時に両者の立場の違いから開発担当と運用担当は対立することがありえます。
例えば、稼働中のWebサイトに開発担当は新機能を加えてユーザーに新しい価値を提供したいと考える一方で、運用担当は、新機能を現状のWebサイトに組み込むことは負担となるので避けたいと考えます。開発担当にとっては変化していくことが重要ですが、運用担当にとっては、変化しないことが重要であるので対立関係がおこります。
このような対立関係を可能な限り減らし、ユーザーにサービスを提供するまでの時間を短縮することがDevOpsの目的です。DevOpsを導入するなら、例えば、運用担当側から開発担当に、新機能のアイディアが提供できたり、開発担当側から運用担当に、実装する新機能の情報を早期に伝えることなどができたりするので効率化が図れます。

DevOps

上記の図のように、「計画(プラン)」→「開発(コーディング、ビルド)」→「テスト」→「リリース」→「デプロイ」→「運用」→「監視(モニター)」のサイクルを継続していく体制がDevOpsと言われています。

2.DevOpsとアジャイル開発の違い

まず、大きな括りとして、DevOpsは開発の仕組みであるのに対して、アジャイル開発は開発の手法です。DevOpsは開発がどうあるべきかというチームについての概念であり、アジャイル開発は開発をどのように進めるかという方法論です。
アジャイル開発は、「要件定義」→「設計」→「実装(開発)」→「テスト」→「リリース」のサイクルを1~2週間程度の短いスパンで繰り返し行う手法のことです。従来のウォーターフォールモデル型の開発と異なり、仕様変更や機能追加を行いやすい特徴があります。

DevOpsとアジャイル開発は違うものを指しますが、密接に関わりあっています。アジャイル開発を取り入れる現場では、開発したソフトウェアを運用に引き継ぐことが頻繁に起こるので、DevOpsの仕組みを取り入れて、開発と運用の連携をスムーズにすることが行われます。

3.DevOpsのメリットとデメリット

メリット

1 リリースのスピードが上がる
DevOpsを取り入れることで、開発が完了した機能を自動でデプロイする仕組みが構築されるため、リリースまで短納期で行うことができます。また、開発・運用が連携を図ることで、優先して行うべき作業を取捨選択でき、手戻りを減らすことができます。結果として、リリースのスピードを向上させることができます。

2 サービス品質の向上につながる
DevOpsを取り入れるならテストやリリース、特にデプロイ周りの作業を自動化することになります。手作業を減らすことでエラーの発生を抑え、サービス品質の向上につながります。

3 実験的リリースが可能になる
実験的な機能をリリースしたい場合もDevOpsは役に立ちます。開発と運用の連携が密にとれるため、実験的に一部のユーザーに機能を試してもらえるカナリアテストや、A/Bテストを行い、今後の戦略をたてることもできます。

デメリット

DevOpsはビジネスに生産性の向上をもたらすが、この仕組みを導入するためのコストがかかります。
例えば、開発側と運用側の連携がとれるように、各々の部門で使用されているツールやテクノロジーを連携させる必要があります。これは環境整備とメンテナンスのコストが新たにかかります。また、DevOpsでは反復する作業を自動化することが必要になるので、自動テストの作成を行わなければなりません。

4.DevOpsに必要な手法

DevOpsに欠かせない手法がCI/CDです。CI/CDとは「Continuous Integration/Continuous Delivery」のことで、継続的インテグレーション/継続的デリバリーという意味です。その目的は、開発やリリースにおいて発生する作業を統合的に自動化して、継続的な開発・リリースを実現することです。
CIは修正したコードを自動でビルド・テストします。テスト結果に問題なければ、リリース可能な状態にします。そしてCDはデプロイ、運用までの継続的な環境構築を指しています。

DevOps

CI/CDを導入するためのツールは様々なものがあります。初期費用が抑えられるクラウド型や運用上のカスタマイズがしやすいオンプレミス型がありますので開発現場に適したツールを採用することが重要です。

5.DevOps導入に必要なもの

DevOpsを導入する際に必要なものとして、組織の見直しと適切なツールによる自動化があげられます。
組織の見直しがなぜ必要かというと、最初に述べたように、開発チームと運用チームで価値観が異なるので、意見の相違があります。これらを解消するために、組織の見直しが必要になります。開発チームと運用チームが互いに信頼しあい、協力関係を築くことができるようにDevOpsの考え方を組織全体に浸透させることが求められます。
また、CI/CDを導入するための自動化ツールも欠かせません。段階的に現場に導入していき、開発作業とデリバリー作業を自動化していくことがアジャイル開発において重要です。そして、CI/CDの導入後もDevOpsが目指すリリースの高速化などを目的として、作業プロセスを評価改善していくことが求められます。

6.まとめ

DevOpsとは開発担当と運用担当が密に連携しあい、ソフトウェア開発の価値を高めていく仕組みのことです。特に、新機能のリリースの高速化はユーザーから常に求められているもので、これに応えるためにもDevOpsの導入を検討することは価値があります。
しかし、その導入には組織の見直しやツールの選定など様々な段階があります。株式会社GENZでは、ITのお困り事を中心に様々なご相談を受け付けております。お気軽に下記からお問い合わせください。

 

お問い合わせ