Azure Managed Service Column <Azure運用コラム>

DevOpsとは?導入するメリットとAzureを活用した環境構築方法を解説

Category: 入門編

2021.06.14

はじめに

昨今、DevOps という言葉をよく耳にするようになったと思いますが、漠然としたイメージしか掴んでいない人も多いかもしれません。DevOps とはどのようなものでしょうか。

DevOps とは、開発プロセスとツールを活用して開発と運用が相互に協力して開発することで、システムやサービスを迅速かつ確実にユーザーに届ける取り組みを指します。

本記事では、DevOps を全く知aらない人向けに、DevOps の定義やメリット、アジャイル開発との関連や、Microsoft Azure を活用したDevOps 環境構築方法について解説します。

1. DevOps とは

一般的なDevOpsの定義とプロセスについて解説します。

DevOps の定義

DevOps とは、開発( Development )と運用( Operations )を組み合わせた言葉で、人(開発チーム・運用チーム)とプロセスとテクノロジーを結び付けて、ビジネスが継続的な価値を提供するための取り組みを示す概念です。

DevOps の目的

DevOps の目的は、迅速な IT の開発と継続的なサービス提供の実現により、ユーザーのビジネス価値を高めることです。 従来、システムの開発を担う開発チームと、システムをサービスと捉え継続的なサービス提供を担う運用チームは、明確な役割分担によりサイロ化されたことで、システムに対する考え方や仕事の目的にギャップが生じていました。そのため対立構造が生まれ、運用フェーズへの引継ぎがスムーズに進まないといった弊害もありました。

DevOps の導入により、開発チームと運用チームの協力体制を作ることでこのギャップを埋め、迅速かつ運用性・信頼性の高いシステム開発の実現と、それによるユーザーのビジネス価値を高めることを目指しています。

DevOps の具体的なプロセス

DevOps の考え方では、厳密な開発プロセスの定義はありませんが、一般的には大きく下記の 4 つのプロセスに集約されます。

  • 計画( PLAN )
  • 開発( DEVELOP )
  • 配信( DELIVER )
  • 運用( OPERATE )

計画( PLAN )

計画( PLAN )とは、開発するシステム・サービスの要件・機能の定義を行い、プロジェクトの進捗管理やタスク管理の方法などを検討し、そのためのツール類の選定を行うプロセスです。

開発( DEVELOP )

開発( DEVELOP )とは、計画に従ってコードの作成など開発作業を行うプロセスです。
作成したコードのレビュー、マージ、ビルド、開発環境でのテストを頻繁(1日に数回程度)かつ自動的に実施することで、コードの不具合を迅速に発見・修正し、短期間で品質の高いアプリケーションを開発します。この繰り返しを継続的インテグレーション( Continuous Integration・CI )と呼びます。

配信( DELIVER )

配信( DELIVER )とは、開発が一通り終わった後に、開発したアプリケーションを実際に動作させる本番環境へデプロイを行うプロセスです。
継続的インテグレーションを拡張して、本番環境へのビルドとデプロイといったリリースプロセス全体を自動化し、コードの変更・修正などを迅速かつ安全に本番環境へ反映させることを継続的デリバリー( Continuous Delivery・CD )と呼びます。

運用( OPERATE )

運用( OPERATE )とは、本番環境へ配信したアプリケーションと、アプリケーションが動作するサーバーやネットワークなどのインフラが継続的に動作しサービスを提供できるように、運用者が監視と保守作業、及びトラブルシューティングを行うプロセスです。
また、提供するサービスに対するユーザーからの要望・意見などを開発チームへフィードバックし、継続的な改善を行います。

2. DevOps を取り入れるメリット

開発に DevOps を取り入れるメリットはどのようなものがあるのでしょうか。
具体的なメリットとして下記が考えられます。

  • 俊敏性の向上
  • 信頼性と安定性の維持
  • 生産性の向上

俊敏性の向上

DevOps の開発プロセスでは、作成・修正したコードのテストと本番環境へのデプロイを自動的に繰り返します。これにより、ウォーターフォール開発の欠点である変更要求への弱さを克服することができ、より柔軟かつ迅速な開発が可能となります。
DevOps の導入により、企業はビジネス判断によるサービスの変更やリリースを素早く行うことでサービスの市場投入までの時間を短縮し、目まぐるしく移り変わる市場への適応力や競争力の向上を図ることができます。

信頼性と安定性の維持

DevOps では小規模な開発を繰り返すことでバグや不具合を発見しやすいという特徴があります。また、従来人間が手作業で行ってきたビルドやデプロイ作業などを自動化することよりヒューマンエラーを防止し、作業の信頼性を高めると共にシステムの安定稼働を維持することができます。

生産性の向上

DevOps では、開発チームと運用チームの垣根を排除し、相互に連携して効率的な情報のやり取りを行うことでコミュニケーションロスを防止し、無駄な作業の削減を可能とします。
また、進捗やタスク管理、品質管理などにツールを活用することで煩雑な管理作業から解放されることも、無駄な作業の削減とヒューマンエラーの排除に役立ちます。

3. DevOps とアジャイルの関係

よくDevOps と混同されやすい言葉に「アジャイル開発」があります。
ここでは、DevOps の理解を深めるために、DevOps とアジャイル開発の違いについて解説します。

アジャイル開発とは

アジャイルは「俊敏」を意味し、ユーザーにとってのビジネス価値を重視する開発手法です。従来のウォーターフォール開発は、開発の初期にシステムの要件と仕様を確定させてから開発を行うため、途中での要件変更や仕様変更に弱く、ユーザーにとっては柔軟性が低く、市場の変化に応じた柔軟なビジネスを展開しにくい開発手法でした。

それに対して、アジャイルは、小規模で短い開発サイクルをいくつも回して、ユーザーの状況に応じてスムーズに仕様変更を行いながらシステムやアプリケーションを完成させる、柔軟性が高い開発手法です。アジャイルにより、ユーザーは開発中の市場変化に応じた柔軟な仕様変更・仕様追加が可能となり、ビジネス方針の変更に俊敏に対応できるようになります。

アジャイルと比較した DevOps とは

DevOps とは、開発チームと運用チームの協力体制を作り、ツールとプロセスを活用して迅速かつ効率的な開発と運用を実現することを指しています。 「迅速かつ効率的な開発によりユーザーのビジネス価値を高める」という意味では、アジャイルと目的が一致しており、一見大きな違いはないように見えます。

しかし、アジャイルが具体的な開発手法を指すことに対して、DevOps はあくまで開発・運用の協力関係を構築することに重点を置いています。この相互協力体制により、迅速かつ安定的な開発と運用を実現すること目指していると言えます。このことから、DevOps とはアジャイル開発を実現する手段のひとつであるとも言えます。

4. DevOps 実現のための環境構築方法

DevOps を実現するために、具体的にどのような環境を構築する必要があるのでしょうか。開発と運用が相互に連携し、効率的かつ安定的な作業を行うために様々なツールを組み合わせて DevOps のための環境を構築します。

DevOps のための環境に必要な機能

DevOps を実現するために必要となる機能・ツールには、一般的に下記のようなものがあります。

  • 仮想化ツール
  • 構成管理ツール
  • CI/CD ツール
  • 監視ツール
  • コミュニケーションツール
  • テスト自動化ツール
  • バージョン管理ツール

仮想化ツール

仮想化ツールとは、OS の上に仮想的な OS を構築し、独立した OS として動作させるためのツールです。仮想 OS 上でアプリケーションの開発環境や、構成管理や CI/CD ツールの動作環境などを構築します。代表的な仮想化ツールに VMware や Docker などがあります。

構成管理ツール

構成管理ツールとは、アプリケーションが動作するサーバーやミドルウェア、データベースなどの IT インフラ環境を管理するためのツールです。構成管理ツールにより IT インフラをコード化して管理することで、アプリケーションの開発・テストを行う環境を迅速に準備することが可能となります。代表的な構成管理ツールに Ansible などがあります。

CI/CD ツール

CI/CD ツールとは、継続的インテグレーション( CI )と継続的デリバリー( CD )を提供するツールです。アプリケーションのビルド、開発環境へのデプロイとテストを自動化し、品質を保ちながら迅速な開発をサポートします。CI ツールを拡張して本番環境へのデプロイまでを自動化するのが CD ツールです。CI/CD ツールに Jenkins や CircleCI などがあります。

監視ツール

監視ツールとは、本番環境のアプリケーションや、サーバーやネットワークなどの IT インフラの状態とパフォーマンスの監視やログ収集を行うツールです。運用チームは、日々監視を行い、インシデントが発生した場合は直ちにエラーを確認して必要なログを解析し、開発チームへ修正を依頼する必要があります。代表的な監視ツールに New Relic や Splunk などがあります。

コミュニケーションツール

コミュニケーションツールとは、チャット機能や Web 会議などのコミュニケーションを提供するツールです。開発と運用が一体となって開発・運用を進める DevOps には円滑なコミュニケーションが必要です。代表的なコミュニケーションツールに ChatWork や Teams、Slack などがあります。

テスト自動化ツール

テスト自動化ツールとは、開発したアプリケーションのテストを自動化するツールです。テストの全てを自動化することはできませんが、単体テストから結合テストで自動化可能な範囲をツールに任せることで開発の省力化が可能です。代表的なテスト自動化ツールにSeleniumなどがあります。

バージョン管理ツール

バージョン管理とは、ソースコードや成果物のバージョン管理を行うツールです。構成管理ツールや CI/CD ツールを利用するためには、ソースコードと成果物がバージョン管理されていることが前提です。代表的なバージョン管理ツールに git、subversion などがあります。

DevOps のための環境をクラウドで作るメリット

DevOps のための環境を構成するツールは効率よく開発・運用を行うために必要なものですが、全てオンプレミスで用意するにはスキルと多くの工数が必要です。
この問題を解決するために、DevOpsのための環境をクラウドで構築する方法があります。DevOps のための環境をクラウドで作るメリットは下記の通りです。

  • クラウドによる俊敏性の向上
  • Kubernetes や PaaS との統合による連携の容易さ
  • サーバーレスによるインフラの隠蔽化

クラウドの特徴のひとつである俊敏性(調達スピードの速さ)を活かして、DevOps のための環境に必要なサーバー、ネットワークを瞬時に構築でき、構成管理ツール、CI/CD ツール、バージョン管理ツールなどのツール類がサーバーレスで提供されているため、インフラを意識せずにツール類の導入が可能となるメリットがあります。
また、Kubernetes などの仮想化ツールと統合することでスムーズなアプリケーション動作環境の準備・払い出しが可能になります。

クラウドによる DevOps のための環境構築方法

DevOps のための環境をクラウドで構築する方法の例として、マイクロソフト社が提供しているクラウドである、Microsoft Azure を利用した環境構築方法があります。
Azure DevOps ソリューションを導入することで、迅速かつ効率的に DevOps を実現するための環境やツール類を利用することが可能です。

5. Azure の DevOps ソリューションとは

Azure DevOps ソリューションとはどのようなものでしょうか。ここでは、Azure DevOps の概要と、Azure DevOps を構成するサービスについて紹介します。

Azure DevOps とは

Azure DevOps とは、DevOps を実現するために必要なツールが揃っているオールインワンの DevOps プラットフォームです。Azure DevOps は、プロジェクト管理、継続的インテグレーション&デリバリーなど、DevOps のためのサービス群を提供しており、アプリケーション開発の計画・開発・配信・運用のプロセスを Azure上 で実現することが可能です。

Azure DevOps を構成するサービス

Azure DevOps を構成するサービスは下記の通りです。

  • Azure Pipeline( CI/CD /テスト自動化ツール)
  • Azure Boards(進捗管理ツール)
  • Azure Repos(バージョン管理ツール)
  • Azure Test Plans(手動テスト管理ツール)
  • Azure Artifacts(パッケージ管理ツール)
これらのサービスの全て、もしくは一部を利用することで、Azure 上で DevOps のための環境を構築することができます。

Azure Pipeline

Azure Pipeline とは、Azure 上でアプリケーションのビルド、デプロイ、テストを自動化する継続的インテグレーション&デリバリー( CI/CD )の機能を提供するツールです。数多くの言語に対応し、KubernetesDocker などのコンテナとも連携可能です。

Azure Boards

Azure Boards とは、かんばんボード、バックログ、チームのダッシュボード、カスタム レポートなどを利用してメンバーのタスクの見える化、進捗管理を行うツールです。

Azure Repos

Azure Repos とは、ソースコードと成果物の共有とバージョン管理を行うツールです。Git ベースのリポジトリを提供しており、任意のGitとの接続・連携も可能です。

Azure Test Plans

Azure Test Plans とは、アプリケーションの手動でのテストを管理・支援するためのツールです。Azure Pipeline が自動テストを支援することに対して、Azure Test Plans では手動テストを実施する上でのテスト計画・テストケース・テスト結果などを管理する機能を提供します。

Azure Artifacts

Azure Artifacts は、アプリケーションを配布・公開するために、ソースコードやライブラリをまとめたパッケージを管理するツールです。Azure のクラウド上で簡単にパッケージを管理でき、範囲を絞って配布・公開することも可能です。

Azure DevOps と App Service で作る統合的な CI/CD 環境

Azure DevOps は単体のプラットフォームとして利用しても DevOps のための環境を構築できますが、Azure App Service と連携して利用することで継続的インテグレーション&デリバリー環境( CI/CD 環境)とデプロイ先の環境を簡単に作成することができます。

Azure App Service とは、Web アプリケーションの実行環境を、インフラの設定を意識することなく簡単に作成できる Azure のサービスです。Azure Pipeline と連携させることにより、Web アプリケーションのビルド、デプロイ、テストを、アプリケーションの実行環境を含めて自動で生成できるようになります。

また、さらに Azure Repos を連携させることでバージョン管理も同時に行い、Azure Test Plans や Azure Boards を組み合わせて、手動テストの管理やタスク・進捗管理と連動した統合的なDevOpsを実現することも可能です。

6. まとめ

DevOps とは、本来「ユーザーのビジネス価値を高める」という開発と運用の共通目的があるにも関わらず、役割分担により対立構造が発生しやすい状況を打破するために開発と運用の協力体制を築き上げる取り組みです。開発と運用がお互いに信頼・尊重し、問題発生時は解決策を一緒に考える協力体制により、迅速かつ安定的な開発と運用を目指すものです。

DevOps は体制論とプロセスに重点が置かれていますが、そこにクラウドを組み合わせることで、より俊敏性が高くシンプルな仕組みでDevOpsを実現可能です。Azure DevOpsを利用して、より高いビジネス価値を提供できる開発を目指してみてはいかがでしょうか。

Azure 設計・構築を相談する

Azure構築サービス

Azure 構築サービス

お客様のご要件をヒアリングし、Microsoft Azure DevOps の導入をサポートいたします。

Free

資料ダウンロード

課題解決に役立つ詳しいサービス資料はこちら

資料ダウンロード
  • Azure導入支援・構築・運用サービス総合カタログ

    Microsoft Azure サービスの導入検討・PoC、設計、構築、運用までを一貫してご支援いたします。
    Azure導入・運用時のよくあるお悩み、お悩みを解決するためのアールワークスのご支援内容・方法、ご支援例などをご確認いただけます。

Azure導入個別相談会(無料)

Tag: DevOps

関連記事

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php