この度、10月1日〜3日に開催される「DX総合EXPO」に出展することが決まりました!前回6月にも出展したDX総合EXPO、会場は東京...
DevOpsによるサービス提供とは?概要やメリット、アジャイル開発との違いを解説
アプリケーションを用いたサービス提供を行う場合、初期のリリースから継続的に機能追加や改善のためのリリースを繰り返すことが一般的です。特にサブスクリプション形式でサービスを提供する場合は、継続的に価値を提供することでユーザーを繋ぎとめるという意味合いもあるため、ビジネスモデル上でも重要なポイントとなります。
サービスを運用しながら機能追加や修正のリリースを継続的に行う場合に起こる問題が、運用と開発の並立です。安定したサービス提供を行いたい運用の立場と、新たな機能などをリリースしたい開発側の立場は時にぶつかることもあります。この問題を解決するためのアプローチとして考えられたのが、開発と運用を同じチームで行うことによりスムーズな開発を実現するDevOpsです。
本記事では、DevOpsについて、概要、登場した背景、メリットやツールについて紹介します。
目次
DevOpsとは
DevOpsはソフトウェアの開発手法の一つです。開発(Development)と運用(Operations)を組み合わせた造語であり、開発担当者と運用担当者が連携して開発を行うという概念を指しています。
従来のシステム開発および運用では、開発担当者と運用担当者の間で認識のずれが生じ、ロスが発生することがありました。そこで近年では、開発と運用が協力し、柔軟かつスピーディーに開発を行うDevOpsという考え方が取り入れられるケースが増えています。
DevOpsの背景
DevOpsが生まれた背景として、システム開発における課題や環境の変化が挙げられます。
従来のITシステム運用の課題
従来のシステム開発では、開発担当者と運用担当者が別々な場合も多く存在していました。ソフトウェアにより顧客にメリットをもたらすという大きな目標は開発担当者も運用担当者も同じですが、目の前の業務に対する目標というレベルでは認識が異なることもあります。
例えば、運用担当者は安定稼働中のソフトウェアに対しできる限り手を加えたくないと考えていることは珍しくありません。一方の開発者は可能な限り新たな機能を加えていきたいと考えており、安定稼働を目指す運用担当者との直近での作業方針は異なることになります。
開発担当者と運用担当者が意識を合わせることで、齟齬を無くしてスムーズに開発と運用を行いたいということがDevOps登場の一つの背景です。
Webサービスとしてのソフトウェア提供とアジャイル型の開発
ソフトウェアの提供形態としてWebサービスやSaaSなどが増加したことも、DevOpsが必要とされた要因の一つです。
WebサービスやSaaSでは、利用者はソフトウェアを所有する必要が無く、サービス提供者から必要な分だけ借りて利用できる点が大きなメリットとなります。それに伴う環境のメンテナンスも不要となり、ネットワークさえあれば場所と時間を選ばずに利用できる点も魅力的です。
パッケージ製品としての提供からWebサービスとしての提供という変化は、契約形態にも変化をもたらしました。パッケージの買い切り型の契約ではなく、Webサービスのサブスクリプション形式が急速に拡大することとなりました。サブスクリプションでのサービスの提供の場合には、サービス提供者は常に利用者に新たな機能や機能の改善という価値を提供し続けることが求められます。そのため、サービスの運用を行いながら並行して開発を行い、継続的なアプリケーションのリリースを行うことが求められます。
そこで生まれたのがアジャイルなどの開発方式です。初期のリリース後サービスの運用を続けながら、開発単位を小さく区切って機能追加や改善などのリリースを繰り返してサービスの品質を高めることができるこの方式は、Webサービスというソフトウェアの提供形態に非常に親和性の高いメリットがあります。
そして、アジャイルでの開発を行う場合には開発と運用の間で綿密にコミュニケーションを行い意思疎通をすることが求められます。これはDevOpsの概念ともよくマッチしており、DevOpsの浸透にも大きく寄与することとなりました。
サービス更新サイクルの加速
Webサービスとしてのソフトウェア提供が広く普及すると、サービスを更新するリリースの頻度が高まります。他のサービス提供者との競合が起こるため、新たな価値の提供を目的としてリリースサイクルが加速していきました。ミスなくリリースを成功させ続けるためには、サービスの運用を続けながら開発を行うDevOpsを適用した管理が重要視されています。
DevOpsとアジャイル型開発の違い
DevOpsは、開発と運用が協力体制を作るという「考え方、概念」です。一方のアジャイルは、サービスを運用しながら小さなサイクルでの開発を繰り返す「開発手法」にあたります。
対立する関係にはなく、概念と手法という違いといえます。
DevOpsとAIOpsの違い
近年聞かれるようになったDevOpsと類似する言葉にAIOpsがあります。
AIOpsは、AIを用いて開発と運用のための反復的なタスクを自動化することを指します。AIOpsを取り入れることで、運用における人的作業を減少させることができます。また、反復タスクについては業務の効率化を図ることが可能です。
AIOpsについては下記の記事で詳しく紹介していますのでぜひご参照ください。
➡「AIOps(エーアイオプス)とは?導入方法や事例紹介を徹底解説」
DevOpsのメリット
開発現場にとってDevOpsを導入するメリットとして、下記が挙げられます。
情報の共有により開発・運営ともに円滑な業務につながる
開発、運営の各チームの間で情報を共有することで、お互いに円滑に業務を行うことにつながります。
開発は運営のスケジュールを知ることで、リリースまでを含んだスムーズな開発予定を立てることができます。また、運営に寄せられるユーザーからの声を参考にすることで、ユーザーの要望に沿った機能を作ることにもつながります。
運営も開発の求める技術の導入背景を知ることで、その必要性をより深く把握できるでしょう。
また、単なるスケジュールだけでなく、課題も共有することで一方のチームの知見も得て解決に向かえる点もメリットです。
開発サイクルの高速化の実現
顧客にサブスクリプション契約を継続してもらうためには、機能追加や修正に向けて開発とリリースを繰り返すことが求められます。また、アプリケーションに不具合があれば早期に対処し、リリースまでを行う必要もあります。このためWebサービスの提供では、開発とリリースを短いスパンで実現することが求められます。
DevOpsでは、開発とリリースに関わる運営が連携していることで、開発からリリースまでの一連のサイクルを高速化することができます。
ツールの活用による生産性・信頼性・拡張性・セキュリティの向上
今日ではDevOpsを実現するためのツールが多く出揃っています。開発からリリース、運用までを含めた業務において、DevOpsに向けたツールを共有することで生産性や信頼性、拡張性などを求めることもできます。
また、開発時点から運用視点を取り入れ、セキュリティ性能の向上を図ることにもつながります。
DevOpsにおける重要な要素 CIとCD
DevOpsという考え方において、取り入れられることの多い手法にCI/CDがあります。
- 継続的インテグレーション(CI)
- 継続的デリバリー、デプロイ(CD)
DevOpsにおける、高速な開発とリリースのサイクル実現に欠かせない存在です。
CI
CIはContinuous Integrationの略であり、継続的に開発とリリースを行うためにソースコードを共有リポジトリで管理し、頻繁に取り込むための手法です。
一般的にアプリケーション開発では、Gitなどのツールを用いてソースコードの管理を行います。ここに開発したソースコードを取り込む際に、マージおよびビルド、テストの実施を自動化することがCIにあたります。
CD
CDはContinuous Delivery & Deploymentの略です。CIで自動的なテストを行った後、テスト環境へのデプロイおよび高度なテストの自動化を実現することがContinuous Deliveryにあたります。Continuous Deploymentの場合には、さらに稼働環境へのデプロイまでの自動化を含みます。
DevOpsのツール紹介
DevOpsの実現に向けて利用されることの多いツールを紹介します。DevOpsを実現するツールといっても、その全体を一つのツールで行うのではなく、CI/CDや個々の管理などをツールで自動化し、それを組み合わせて実現することとなります。
ソース・資産管理
プログラムのソースコードやモジュールを管理するためのツールです。
代表的なツールとして、Git、Github、GitLab、Bitbucket、TortoiseSVNなどが挙げられます。
構成管理
ハードウェアやソフトウェアなどのITシステムを構成する要素を管理するツールです。
代表的なツールとして、Ansible、chef、Puppetなどが挙げられます。
リリース管理
アプリケーションの開発からリリースまでが安全かつ正確に行われるよう管理するツールです。
代表的なツールとして、Jenkins、Redmineなどがあります。
仮想化・コンテナ化
DevOpsでは複数の仮想環境やコンテナを利用して開発やテストを行います。これらの目的で、仮想環境やコンテナを作成するためのツールです。
代表的なツールには、VirtualBox、VMware vSpehe、Hyper-V、Dockerなどが挙げられます。
オーケストレーション
オーケストレーションとは、ITシステムやアカウントの設定、管理、調整を自動化することを指します。特にDevOpsではコンテナ管理の自動化をコンテナオーケストレーションとして利用する機会が多くあります。
代表的なツールとして、Ansible、Kubernetesなどがあります。
監視
アプリケーションやインフラが正常に稼働しているかを監視するツールです。
代表的なツールには、AppDynamics、Nagios、Zabbixなどが挙げられます。
ログ管理
アプリケーションやインフラのログの管理を行うツールです。ログを収集し分析する機能までを含む場合もあります。
代表的なツールとして、Splunk、SolarWindsが挙げられます。
まとめ
DevOpsとは、開発と運用が緊密にコミュニケーションを行い、継続的なサービス提供をスムーズに行うという考え方です。Webサービスというソフトウェア提供形式の普及により広く重要視されるようになりました。DevOpsは開発と運用業務の円滑化、開発とリリースのサイクルの高速化を可能にするため、うまく取り入れていきましょう。
おすすめイベント・セミナー 一覧へ
9月25日(水)に「【生成AI vs 生成AI】脅威にも対策にもなるって本当?」のセミナーを開催いたします。 生成AI あなたはこの言...
2024年9月10日(火)に、簡単にパワポを作成できる「パワポ生成AI」についてのセミナーを開催いたします。 8月9日に開催した同様の...