支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • DevOpsとは?詳しく解説します

DevOpsの概要について

ここでは、DevOpsについて説明させていただきます。 DevOpsとは開発 (Development) と運用 (Operations) を組み合わせた言葉であり、 開発チームと運用チームが協力しあうことで開発の速度を向上させ、よりビジネスの価値を高めるという手法や考え方となります。 DevOpsについては様々な考え方があり、厳密な定義は専門家でも異なりますがメリットについては共通しております。 2008年のアジャイルカンファレンスにおいて、アンドリュー・クレイ・シェーファーとパトリック・デボイス が「アジャイル・インフラストラクチャ」について議論して、 その後DevOpsという用語は2009年ベルギーで初めて開催された「DevOpsDays」から世界中に普及されたとなっております。 近年になりDevOpsが大きく注目を集めているのには理由があります。 ソフトウェア開発とインターネットは人々の暮らしを大きく変化させてきました。 それは単にビジネスや人々の暮らしを便利にするツールではなく、社会の根幹を担う役割として存在しているインフラ基盤とも言えるでしょう。 時代の変化と共にテクノロジーが変化したように、ITの世界も大きく変化しようとしております。 その代表的な例がクラウドサービスです。 DevOpsとクラウドサービスを利用することで、ユーザーはより快適なサービスを簡単に教授することが可能となります。 ビジネスが多様化しアプリケーションやサービスの開発速度や品質が求められる市場において、 DevOpsとクラウドサービスを活用することが主流になることは間違いありません。 従来の開発における考え方では解決できない課題もDevOpsによる様々な工程をオートメーションする手法や 拡張性により解決する可能性が高まります。 DevOpsの開発工程はDevOpsツールチェーンと呼ばれる各作業によって分担されており、それらを繰り返すことで成立します。 DevOpsツールチェーンは計画、コーディング、ビルド、テスト、導入、運用、監視から構成されております。 また、それぞれのカテゴリーにおいて、自動化を行うなど有効なツールが存在します。 DevOpsはアジャイルに近しい考え方や概念を持ち、DevOpsとアジャイルは両者共にソフトウェア配信を高速化できる構造とフレームワークを提供することが可能です。 それらの違いは哲学やアプローチ、考え方は異なりますが両立しない概念ではありません。 DevOpsではソフトウェアの開発と配信のすべての段階に対応し、より迅速で信頼性の高いリリースを目指すことや、部門を超えたチームワークを育成する文化により、職場環境を向上させて、より効果的なチームを作り上げること、あるいはワークフローの自動化を行う機会を可能な限り見つけて、効率的な開発を行うことがポイントです。 一方でアジャイルでは使い慣れた計画ツールによって作業を追跡し、要件、タスク、進捗を整理しながら作業を行い一貫した開発周期を実践し顧客のニーズに応えていく形となります。 さらに詳しくDevOpsについて説明させていただきますので、参考にしてみてください。

DevOpsのメリット

DevOpsのメリットについてポイントを絞り紹介させていただきますので、参考にしてみてください。

スピード

DevOpsのメリットの一点目がスピード感のある開発を行うことが可能であるということです。 現在の変化の激しいビジネス市場において、ソフトウェア開発や サービスを市場に投下するまでのスピードは非常に重要になってきます。 DevOpsの特徴であるマイクロサービスと継続的デリバリーによって、チームにサービスの所有権が与えられ、 より効率的な開発や運用、リリースを実現することが可能となります。

顧客満足度

DevOpsのメリットの二点目が顧客満足度となります。 スピード感のあるサービス開発により顧客の満足度を高めることが 可能です。 各チームがサービスに対する所有権が与えられることで顧客に対する満足度を高めることや エンドカスタマーのニーズや、そのニーズを満たす方法を考慮した開発などにより 従来の開発よりも顧客満足度を高めることができる点が DevOpsのメリットと言えるでしょう。

拡張性

DevOpsのメリットの三点目が拡張性となります。 DevOpsでは扱うサービスやユーザーの規模に応じたインフラストラクチャと開発のプロセスの運用と、管理を実行します。 また、それらの拡張性は複雑なシステムや変化するシステムを効率的に管理し リスクを軽減しサービスを運用することを可能とします。

セキュリティ

DevOpsのメリットの四点目がセキュリティとなります。 自動化されたコンプライアンスポリシーや制御、および設定管理などの 最新のテクノロジーを導入することで DevOpsではセキュリティを担保しながら開発を行うことが可能となります。

生産性

DevOpsのメリット五点目が生産性となります。 開発チームと運用チームは緊密に共同で作業し、共通の文化や考え方において 開発を行うことで生産性を上げ効率的に開発に取り組むことが可能となります。 無駄な作業や非効率な作業を廃し、チームとして高いパフォーマンスを実現することができます。

CALMSについて

DevOpsと関連性の深い言葉として CALMSを紹介させていただきます。 CALMSはDevOpsプロセスを採用する企業の能力を評価するフレームワークであり、 Culture、Lean、Automation、Measurement、Sharingの頭文字をとった言葉です。 CALMSを理解することによりDevOpsの文化や本質的な理解を深めることが できますので、是非参考にしてみてください。

Culture(文化)

CALMSの一点目であるCultureについて説明させていただきます。 DevOpsを理解するうえで非常に重要なことが、その文化です。 DevOpsは開発チームと運用チームの協力によって成立するということが その本質にあります。 仮にプロジェクトに優秀なエンジニアを投入して開発を行い、便利な自動化ツールを導入したとしても、 この文化についての共通認識がないとチームとしてのパフォーマンスは下がってしまい DevOpsプロセスを導入する意味がありません。 DevOpsが成功する場合はその文化を持っており、オープンやコミュニケーションや 頻繁なコミュニケーションがチームにおいて実行されております。これらが 高品質なサービスを実現し、顧客の満足度を高めるということがDevOpsの本質的な理解の 一つと言えるでしょう。

Lean(無駄がない)

CALMSの二点目であるLeanについて説明させていただきます。 DevOpsプロセスにおいて重要な点が無駄がなく効率的に開発を行うことです。 また、継続的な改善と失敗を受け入れるという概念も非常に重要になってきます。 また、実験的な考え方や挑戦などを受けているという考え方とも類似しております。 多くのプロジェクトにおいて失敗は必ずありますが、 チームとしてそれらを受け入れ、吸収し改善を実行することが重要です。 DevOpsプロセスにおいては失敗そのものが責められる文化はなく、 それよりも失敗の個所を特定し改善するというプロセスを重視します。

Automation(自動化)

CALMSの三点目である Automationについて説明させていただきます。 DevOpsプロセスにおいて反復的な手作業を排除し、反復可能なプロセスを生み出し、信頼性の高いシステムを構築するという過程が非常に重要となります。 そのため継続的インテグレーションおよび継続的デリバリーが非常に重要なキーワードとなってきます。 継続的デリバリーではコード変更が発生した際に自動的に構築、テスト、および実稼働環境へのリリース準備が実行されるという特徴をもつ開発手法の一つです。 継続的インテグレーションを拡張した継続的デリバリーによりコード変更が、ビルド段階の後にテスト環境や本番環境にデプロイされます。 継続的デリバリーを適切に実装することで標準化されたテストプロセスに合格し、 デプロイ準備の整ったビルドの成果物を常に確認し作業を行うことが可能となります。

Measurement(計測)

CALMSの四点目である Measurementについて説明させていただきます。 DevOpsプロセスにおいて継続的な改善をしっかりと計測し分析することは非常に 大切です。開発から展開までの速度やバグ頻度、システム障害後の回復や、ユーザー数 などサービスに関わるあらゆる数字を把握し計測し改善を実行していくことが 重要となります。 また、このような計測データを多くの部署と共有し分析を行うことで より顧客満足をを高めることが可能になります。

Sharing(共有)

CALMSの五点目である Sharingについて説明させていただきます。 開発チームと運用チームの共有や連携はDevOpsプロセスにおいて必須の概念です。 チーム間の連携を高めることはDevOpsにおける最も重要な概念の一つです。

DevOpsの三つの原則

DevOpsの三つの原則について説明させていただきます。 ジーン・キムが提唱している内容であり、DevOpsについての理解を深めますので参考にしてみてください。

システムおよびチームにおける体系的な思考

DevOpsの三つの原則の一点目がシステムにおける体系的な思考となります。 DevOpsではチームや部門でなく、システム全体のパフォーマンスを重視するという考え方です。 ジーン・キムによると「業務または部署の特定の縦割りではなく、システム全体のパフォーマンスを強調します。DevOps は部署の枠を越えて全体的な価値を顧客に明示します」 という説明になっています。これについてもう少し掘り下げて説明させていただきます。 開発チームはビルドして、それを運用チームに引き渡すということがDevOpsの業務フローとなります。 三つの原則の一点目である第一の道とは、特定の部署の目標達成を目指す思考ではなく、顧客視点でシステム全体を考える思考へと変化しなくてはいけないという点を指します。 チームによって体系的思考ができるようになると、既知の不具合を検知する速度が上がり、他チームへの負荷を下げ顧客へのサービスの価値が強化されるという考え方となります。

フィードバック

DevOpsの三つの原則の二点目がフィードバックとなります。 DevOpsでは関係しているすべてのチームのフィードバックと理解の向上に重点を置いており、 フィードバックループを短縮、増幅し、知識を必要な場所に伝えることで生産性の向上を行います。 ジーン・キムによると「プロセス向上イニシアチブの目標の多くが、フィードバックループの短縮と強化であることから、継続的に必要な修正が発生することがあります」 という説明になっています。 コミュニケーションの障害はプロジェクトに大きなリスクを発生されることは周知の通りですが、 DevOpsでは開発、運用、サポートおよび顧客間のフィードバックを向上させ、すべてのチームが全体の目標に与える影響を明確に理解できるようになります。 チーム間に明瞭性とコミュニケーションを生むことで障壁をなくし、生産性を高めることが可能です。 また、フィードバックループを行うことで円滑なコミュニケ―ションを実現できます。

継続的な実験と学習

DevOpsの三つの原則の三点目が 継続的な実験と学習となります。 DevOpsでは実験と実践および学習が非常に重要であり失敗は歓迎しませんが、 失敗が起きた際に回復できるという安心な環境も非常に重要ということになります。 ジーン・キムによると「2つのことを同時に促進する文化を創造します。1つは、リスクを承知で成功や失敗から学習する継続的な実験です。 そしてもう1つは、反復と実践は熟達のための必要条件であるということを理解することです」という説明になっています

DevOpsツールチェーン

DevOpsツールチェーンについて説明させていただきます。 DevOpsツールチェーンはDevOpsにおいてシステム開発ライフサイクル全体にわたるソフトウェアアプリケーションの配信、開発、および管理を支援するツールのセットまたは組み合わせのことを指します。ソフトウェア配信とインフラストラクチャの変更のプロセスを自動化するためその実装は各カテゴリーで行われます。 それぞれについて説明させていただきます。

計画

DevOpsツールチェーンの一点目が計画となります。 生産指標、オブジェクト、フィードバック、要件 ビジネス指標、リリース計画、タイミング、ビジネスケース セキュリティポリシーと要件などが行われます。

コーディング

DevOpsツールチェーンの二点目がコーディングとなります。 ソフトウェアの設計と構成、 コードの品質とパフォーマンスを含むコーディング、 ソフトウェアのビルドとビルドのパフォーマンスなどが行われます。

ビルド

DevOpsツールチェーンの三点目がビルドとなります。 ソフトウェアのビルドとバージョンを管理します。 チームは自動化されたツールを使用して、将来の本番環境へのリリースに向けてコードをコンパイルし、パッケージ化します。

テスト

DevOpsツールチェーンの四点目がテストとなります。 テストを実施し品質を確保します。

導入

DevOpsツールチェーンの五点目が導入となります。 本番環境への製品リリースの管理、調整、スケジュール設定、自動化を支援するツールが使用されます。

運用

DevOpsツールチェーンの六点目が運用となります。

監視

DevOpsツールチェーンの七点目が監視となります。 ITインフラストラクチャのパフォーマンス、 エンドユーザーの反応と経験、生産メトリクスと統計を行います。

AWSとDevOps

AWSとDevOpsについて説明させていただきます。 AWSはAmazon.comにより提供されているクラウドコンピューティングサービスであり、クラウド分野において世界トップシェアを誇るサービスとしても有名です。 AWSではDevOpsを積極的に推奨しそのためのサービスを複数提供しております。 すでに本文で説明したようにDevOpsとクラウドサービスは非常に相性が良いため、多くのクラウドベンダーが積極的にサービスをリリースしております。 AWSを利用するメリットと提供しているサービスについていくつか紹介させていただくと、まずメリットの一点が迅速にサービスを開始することが可能という点となります。 Amazonのアカウントを保有しているユーザーであれば特別な手続きが必要なく、簡単にサービスを利用することが可能です。 これによりビジネスにおいて非常に重要なポイントであるサービスの立ち上げの速度と市場への投入という点を担保することができます。
メリットの二点めがフルマネージドサービスであるということです。 そのためユーザーはサーバの管理や障害対応などの心配なく開発に集中することができるというメリットがあります。 世界最高水準のAWSの環境やサービスを安心して利用することができます。 また、拡張性が高いということも大きなポイントになります。 AWSを利用することで単一のインスタンスを管理したり、数千単位までスケーリングすることが可能です。 現在の急激に変化するビジネスにおいて柔軟に拡張することはサービス提供側としては非常に柔軟なポイントであることは間違いなく、それにより無駄なコストを削減することにも繋がります。 AWSではプロビジョニング、設定、スケーリングを単純化し、柔軟なコンピューティングリソースを行うことが実現できるというメリットがあります。オートメーションを使用して構築の高速化と効率化を達成することが可能である点も 忘れてはいけません。AWSで提供されているサービスを利用することでデプロイ、開発とテストのワークフロー、コンテナ管理、設定管理などの、手動で実行するタスクやプロセスを自動化できます。

次にDevOpsに関連するAWSの具体的なサービスを紹介させていただきます。
「AWS CodeStar」ではアプリケーションを迅速に開発および構築してデプロイできます。AWS CodeStar は統合されたユーザーインターフェイスを備えているため、ソフトウェア開発アクティビティを1つの場所で簡単に管理できます。AWSでの開発を数分で開始できる、ソフトウェアデリバリーを1つの場所で管理できる、チーム全体でセキュアに作業できる、さまざまなプロジェクトテンプレートから選択可能できるなどというメリットがあります。
「AWS CodeBuild」ではソースコードをコンパイルし、テストを実行し、デプロイ可能なソフトウェアパッケージを作成できる完全マネージド型のビルドサービスを提供しております。DevOpsにおいて必要不可欠である継続的インテグレーションと継続的デリバリーを実現することや、完全マネージド型ビルドサービスであり拡張であること、従量課金制であることなどがその特徴となります。
「AWS CodeDeploy」ではAmazon EC2、AWS Fargate、AWS Lambda、オンプレミスで実行されるサーバーなど、さまざまなコンピューティングサービスへのソフトウェアのデプロイを自動化する、フルマネージド型のサービスを提供しており、DevOpsにおいて必要な自動デプロイを可能としミスが起こりやすい手動操作を不要とします。 また、アプリケーションのデプロイ時のダウンタイムを回避し、アプリケーションの複雑なアップデート処理にも対応します。
「AWS CodeDeploy」では、デプロイのニーズに応じてスケールすることが可能です。
「AWS Lambda」では、サーバーレスでイベント駆動型のコンピューティングサービスを提供しサーバーのプロビジョニングや管理をすることなく、 あらゆるタイプのアプリケーションやバックエンドサービスのコードを実行することができます。 大規模なデータ処理、インタラクティブなウェブおよびモバイルバックエンドの実行、強力な機械学習インサイトを実現、イベント駆動型アプリケーションの作成することが できる点がその特徴となります。「AWS Lambda」ではコードをアップロードするだけで高可用性を実現しながらコードを実行し、スケールする処理を実行します。「AWS Lambda」では1秒に数十万イベントまで、あらゆる規模のコード実行リクエストに自動的に対応します。
「AWS OpsWorks」ではChef や Puppet のマネージド型インスタンスを利用できるようになる構成管理サービスであり、DevOpsによって必要なオートメーションプラットフォームを提供します。

AWS Certified DevOps Engineer - Professionalについて

DevOpsに関する資格として最も関連性の深い資格を紹介させていただきます。 AWS Certified DevOps Engineer - ProfessionalはDevOpsエンジニアを対象とした資格であり 、DevOpsエンジニアとして必要な知識を問われます。 具体的には、AWSでの継続的デリバリーシステムとその配信方法を実装および管理すること、 セキュリティ管理、ガバナンスプロセス、コンプライアンス検証を実装および自動化すること、 AWSのモニタリング、メトリクス、ロギングシステムを定義およびデプロイすること、 AWSプラットフォームでの可用性、スケーラビリティ、自己修復性の高いシステムを実装すること、あるいは運用プロセスを自動化するためのツールを設計、管理、および保守するということ、というような知識を問われます。 比較的難易度が高いため、未経験者やこれからエンジニアになろうという方ではややハードルが高いでしょう。 受験対象者は、 AWS環境でのプロビジョニング、運用、およひ管理における2年以上の経験が必要であり、一種類以上の高水準プログラミング言語でのコード開発の経験があるエンジニアとされております。 また、「高度に自動化されたインフラストラクチャの構築に関する経験」 「オペレーティングシステムの管理に関する経験」「最新の開発プロセス、運用プロセス、開発手法、および運用手法についての理解」というような知識に関する知識がAWS Certified DevOps Engineer - Professional受験において推奨されておりますので、事前に確認しておくといいでしょう。

では、試験の概要についても説明させていただきます。 AWS Certified DevOps Engineer - Professionalは「SDLCのオートメーション」 「構成管理とInfrastructure as Code」「モニタリングとロギング」 「ポリシーと標準のオートメーション」「インシデントとイベントへの対応」 「高可用性、耐障害性、災害対策」の分野から構成されております。 「SDLCのオートメーション」の出題比率は22%で、CI/CDパイプラインの自動化に必要な概念を適用するの項目においてはリポジトリをセットアップする、サービスの構築をセットアップする 、自動化されたテスト (例: 単体テスト、整合性テストなど) を統合する 、プロダクトとサービスのデプロイをセットアップする、複数のパイプラインステージをオーケストレーションに関する知識が問われます。 「ソース管理の戦略とその実装方法を決定する」の項目については、複数の寄稿者からのコード変更を統合するためのワークフローを決定する、セキュリティ要件を評価し、コードリポジトリのアクセス設計を提案する 、実行中のアプリケーションバージョンとリポジトリバージョン (タグ) を照合する 、異なるソース管理タイプの違いを明らかにする、などに関する知識が問われます。 「テストの自動化と統合に必要な概念を適用する」の項目においてはコードマージプロセスの一部として統合テストを実行する、負荷テスト、ストレステスト、およびベンチマークアプリケーションを大規模に実行する 、アプリケーションの終了コードに基づいてアプリケーションのヘルスを測定する (堅牢なヘ ルスチェック)、単体テストを自動化して、合否やコードカバレッジを判定する 、CodePipeline、CodeBuild など、テストをパイプラインと統合するなどに関する知識が問われます。 「アーティファクトを安全に構築および管理するために必要な概念を適用する」の項目においては 、アーティファクトのセキュリティ分類に基づいてストレージオプションの違いを明確にする 、アプリケーション要件をオペレーティングシステムおよびパッケージ構成に変換する (ビル ド仕様)、コード/環境の依存関係と必要なリソースを判断する、コードビルドプロセスを実行するなどに関する知識が問われます。 「デプロイ/配信戦略 (例: A/B、ブルー/グリーン、canary、レッド/ブラックなど) とAWSのサ ービスを使用したそれらの実装方法を決定する」の項目においてはビジネスニーズに基づいて正しい配信戦略を決定する、既存のデプロイ戦略を見直し、改善策を提案する 、ビジネス継続性の目標に基づいて DNS/ルーティング戦略 (例: Route 53、ELB、ALB、ロー ドバランサーなど) を提案する、デプロイの成功/失敗を確認し、ロールバックを自動化するなどに関する知識が問われます。
「構成管理とInfrastructure as Code」の出題比率は19%となります。 デプロイのニーズに基づいてデプロイサービスを決定する、デプロイモデルのプロセスフローに関する知識を実証する、特定のデプロイモデルを考慮し、要件に合わせて関連するAWSのサービスを分類および実 装する、要件を考慮しDynamoDBに対してOpsWorksの代わりにCloudFormationを選択さ せる、ローリング更新の操作方法を決定する、といった知識が問われます。 「ビジネスニーズに基づいてアプリケーションおよびインフラストラクチャのデプロイモデルを 決定する」の項目ではビジネス要件に基づいて、さまざまな検討事項 (コスト、可用性、リカバリまでの時間) の バランスを確保して、最適なデプロイモデルを選択する 、特定のAWSのサービスを考慮したデプロイモデルを決定する 、デプロイモデルと関連する解決策に関連付けられたリスクを分析するといった知識が問われます。 「リソースプロビジョニングのオートメーションにセキュリティの概念を適用する」の項目では 特定の要件に応じて最適なオートメーションツールを選択する、リソースのプロビジョニングに関するセキュリティのベストプラクティスの知識を実証する (例: データバッグの暗号化、認証情報のオンザフライでの生成など) 、IAM ポリシーを確認し、デプロイのすべてのライフサイクルステージ (例: 作成、更新、昇 格など) に十分で最小限の権限が付与されているかどうかを評価する 、認証情報管理ソリューション (例: EC2 パラメータストア、サードパーティー) を確認する 、オートメーションを構築する、 CloudFormation テンプレート、Chef レシピ、クックブック、Code Pipelineなどに関する知識が問われます。 「デプロイにライフサイクルフックを実装する方法を決定する」の項目では プロジェクト要件を満たす適切な統合手法を決定する 、Auto Scaling グループで適切なフックソリューションを選択する (例: ノードの障害後に リーダーノード選択を実装する場合など) 、 障害の影響 (リモートコールが失敗した場合、依存するサービスを一時的に利用できない場合 (例: Amazon S3 など)) についてフック実装を評価し、耐障害性の改善策を提案する 、障害の影響についてデプロイのロールアウト手順を評価し、ロールバック/復旧プロセスを 評価する、といった知識が問われます。 「AWSの構成管理ツールとサービスを使用してシステムを管理するために必要な概念を適用する」の項目ではAWS構成管理ツールの長所と短所を特定する 、構成管理コンポーネントに関する知識を実証する 、業界のベストプラクティスを満たしつつ、サポートなしで構成管理サービスをエンドツーエ ンドで実行する機能を示す、といった知識が問われます。 「モニタリングとロギング」に関する項目ではログとメトリクスの集計、保管、分析のセットアップ方法を決定する、環境のモニタリングとイベント管理を自動化するために必要な概念を適用する、 オペレーティングシステム、インフラストラクチャ、アプリケーションの監査、ロギング、モニ タリングに必要な概念を適用する、といった知識が問われます。 「ポリシーと標準のオートメーション」の項目では ロギング、メトリクス、モニタリング、テスト、およびセキュリティに関する標準を強化するた めに必要な概念を適用する、 オートメーションによるコストの最適化方法を決定する、 ガバナンス戦略の実装に必要な概念を適用する、といった知識が問われます。
「インシデントとイベントへの対応」では問題をトラブルシューティングし、オペレーションの復元方法を決定する 、イベント管理とアラート通知の自動化方法を決定する、自動復旧の実装に必要な概念を適用する、 イベント駆動型の自動アクションのセットアップに必要な概念を適用する、といった知識が問われます。
「高可用性、耐障害性、災害対策」の項目ではマルチAZとマルチリージョンアーキテクチャの適切な使用を決定する、高可用性、スケーラビリティ、耐障害性の実装方法を決定する、 ビジネスニーズ (例: RTO/RPO、コストなど) に基づいて適切なサービスを決定する、 災害対策の戦略の設計と自動化の方法を決定する、障害点の観点からデプロイを評価する、といった知識が問われます。

DevOpsとAzureについて

DevOpsとAzureについて説明させていただきます。 AzureはMicrosoftの提供するクラウドコンピューティングサービスであり、世界トップクラスのシェアを誇り、コンピューティング、ID、モバイル、Web、ネットワーク、モバイル、セキュリティなど多くの分野のサービスを提供しております。 エキスパートのチームが支える徹底的なセキュリティと、エンタープライズ、政府機関、スタートアップから信頼されるプロアクティブなコンプライアンスを提供し、世界最高水準のテクノロジーを提供します。ハイブリッドクラウド向けに設計されたツールとサービスによって、オンプレミスでもクラウドでもあらゆる環境に対応することが 可能です。また、クラウドベースのデスクトップとアプリの仮想化により、従業員がどこからでも、どんなデバイスからでも仕事を行うことが可能となります。 MicrosoftではDevOpsについて以下のように考えて実行してきたと説明されておりますので、参考にしてみてください。 「新しいプロセスやテクノロジーの実装の枠を超えて、DevOpsプラクティスを成功させるための最終的なカギとなるのは、DevOps 文化の採用であり、 Microsoftではそれらについて多くの経験があり、積極的に推進しているとされております。 DevOpsの導入を成功させるために重要な点はチーム間のサイロを解体することであり、Microsoftではそのような問題に対して様々な方法で取り組んできました。 具体的にはチームがDevOpsを効率化し、互いに協力して優れた製品を構築する方法は、コミュニケーション、可視化、目標の調整が非常に重要になりますのでそれらを実行するためのツールや機能を導入するということです。 また、MicrosoftにおけるDevOpsは継続的な学習が必須であると考えております。 チームは作業の方法を変革し、新しいプロセスを採用し、失敗を学習の機会と捉えており 継続的に取り組んでおります。これらはDevOpsにおける基本的な概念と一致する部分と言えるでしょう。 Microsoftが提供するAzureのテクノロジーによって、インフラストラクチャの大規模な運用とプロセスの自動化を実現することが可能となりました。 Azureのオープンソースの使用とオープンソースへの貢献により、イノベーションを加速させることができます。 手動タスクの自動化、規模に応じた複雑な環境を管理するチームのサポート、エンジニアによるDevOpsによる 効率的な開発やチームワークなどを実現するためのツールとして自社サービスにあったサービスを選ぶといいでしょう。」

それではDevOpsに関連するAzureのサービスについて具体的に紹介させていただきます。
「Azure Pipelines」では任意のクラウドまたはオンプレミスにデプロイし、 Linux、macOS、Windows 向けのクラウドでホストされるパイプラインを取得することが可能です。 Web、デスクトップ、モバイルのアプリケーションをビルドを実行します。ビルドとデプロイを自動化すると、開発者は基本的な作業にかかる時間の削減を実現し効率的に重要かつクリエイティブな作業に時間をかけることができますのでDevOpsにとって非常に効果的なプラットフォームと言えるでしょう。 では、「Azure Pipelines」の特徴をいくつか紹介させていただきます。 Node.js、Python、Java、PHP、Ruby、C/C++、.NET、Android、および iOS アプリなどあらゆる言語やプラットフォームをビルド、テスト、デプロイすることが可能となり、Azure、AWS、GCP など、任意のクラウドへのソフトウェアの継続的デリバリー (CD) を実装することも可能で、相互に依存する任意の数のステージへのデプロイを視覚化します。 また、Linux、macOS、および Windows で並列実行することができプラットフォームに関係なく効率的なDevOpsの支援を実行します。 さらにコミュニティが構築したさまざまなビルド、テスト、デプロイ タスクのほか、Slack からSonarCloud までの数百の拡張機能を探し、実装することが可能です。
次に「Azure Repos」について説明させていただきます。 プロジェクトにクラウドでホストされた容量無制限のプライベートGitリポジトリを実現します。 機能としては、スレッドのディスカッションと継続的インテグレーションにより、 各変更に対するGitのコードレビューをより効果的に実行しフォークを使用して、インナー ソース ワークフローとのコラボレーションを促進します。 また、継続的インテグレーション/継続的デリバリー (CI/CD) をセットアップして、完成したすべてのpull requestでビルド、テスト、デプロイを自動的にトリガーします。 pull requestをマージする前に、コードレビュー担当者のサインオフ、ビルドの成功、 テストの合格を求めることで、コードの品質を高く維持します。さらにブランチのポリシーをカスタマイズして、チームの高い基準を維持するなどの機能を提供します。
次に「Azure Boards」について説明させていただきます。 DevOpsにおいて重要であるチーム間のコミュニケーションを実現し、チームの垣根を超えて作業を計画、追跡したり、作業に関する相談を行うためのプラットフォームを提供したり、ドラッグアンドドロップによりスプリント計画を作成したりします。 また、幅広いトレーサビリティを備えた柔軟な作業項目の追跡とを組み合わせることで、すべてのアイデアを完全に保持することと共有を実行します。 コードに対するすべての変更が作業項目に直接リンクされており、チームで変更を行った際に常にチェックを行うことが可能です。また、組み込みのスクラム ボードと計画ツールを使用すれば、チームは、スプリント、スタンドアップ、計画ミーティングを実施することができます。さらに、強力な分析ツールとダッシュボードウィジェットを使用して、プロジェクトの正常性と状態に関する新しい分析情報を取得することが可能となり、分析情報を得るのに最適な設計によりチームメンバーを強力に支援します。
次に「Azure Monitor」ではアプリケーション、インフラストラクチャ、およびネットワークに対する最新の監視機能でビジネスを変革することが可能で、Azureとオンプレミス環境からテレメトリデータを収集、分析し、データに基づいて行動を起こすことができます。 また、アプリケーションのパフォーマンスと可用性を最大限に高め問題を特定することが可能で、 アプリケーションの監視ではWeb アプリケーションの可用性、パフォーマンス、使用状況を監視するための機能を全て搭載しており一般的な言語とフレームワークがサポートされています。もちろんAzure DevOps、Jira、PagerDuty などの DevOps プロセスおよびツールとの 統合が可能であるため、それらを組み合わせて利用することで高機能なイベントの監視を実行します。 さらに、インフラテクノチャの監視も重要な機能となります。 「Azure Monitor」では仮想マシン (VM)、Azure Kubernetes Service (AKS)、Azure Storage、データベースなど、インフラストラクチャのパフォーマンスを分析し、最適化します。 Linux VM と Windows VM、およびそれらの正常性と依存関係をすべて1つのマップ上で表示しそれらを監視することが可能です。 もちろんネットワークの監視も実行します。 最後に「Azure Artifacts」についても説明させていただきます。DevOpsにおいて継続的インテグレーションと継続的デリバリーが重要なことについてはすでに本文で説明させていただきました。 「Azure Artifacts」ではパブリックおよびプライベートのソースの Maven、npm、NuGet、Pythonパッケージのフィードを作成、共有可能することが 可能となります。パッケージを共有し、組み込みの CI/CD、バージョン管理、テストを使用することができる点が大きな特徴です。

まとめ

いかがでしたでしょうか? DevOpsについて詳しく解説させていただきましたので、参考にしていただけましたら幸いです。