Microsoft Azureで開発をする際に適したサービスと関連サービスについて紹介

はじめに

2023年現在では「クラウドファースト(システム導入・移行先としてクラウドサービスを優先的に検討する)」という考え方の浸透もあり、多くの企業や自治体、政府関連のサービスのクラウド化が進められています。クラウド化と言う場合の大半は従来のオンプレミス環境からクラウドコンピューティングへの移行であり、現段階ではまだこのマイグレーション関連の内容に着目されることの方が多いです。

しかしクラウド化が進みクラウドでのシステム運用、あるいはマルチクラウド・ハイブリッドクラウドでの運用が当然のようになった頃には、次の段階としてデジタル化されたデータを最大限ビジネスに活かすという「DX/データ駆動型ビジネス」を目的としたクラウドコンピューティングの利用が着目されると見られています。

Microsoft Azureにもクラウド上で一から開発するのに適した様々なサービスが用意されており、その後の運用までをサポートしてくれるサービスもたくさんあります。この記事ではMicrosoft Azureの概要について振り返ったうえでアプリケーション開発におすすめのサービス、併用すると便利なサービスについて紹介していきます。今後クラウドサービスを利用した開発を検討している方、今まさに開発に向けてサービスを選定中という方、Microsoft Azureやクラウドコンピューティングについて総合的に学習しているという方はぜひご覧ください。

Microsoft Azureの概要

Microsoft Azureはクラウド業界の中でやや後発となったサービスで、それまでに提供されていた各サービスを引き継ぎつつ2010年に本格的なリリースが開始されました。なお、AmazonのAWS(Amazon Web Services)は2006年、GoogleのGCP(Google Cloud Platform、現在のGoogle Cloud)は2008年にそれぞれリリースされています。それでも調査会社であるSynergy Research GroupやCanalysの2023年第1四半期時点のクラウドサービスのシェア率に関する調査によると、Azureのシェア率はこれまで大きな差をつけて1位に止まっているAWSと少しずつ差を詰めている状況です。

Microsoft Azureでは仮想マシン(VM)やストレージ、データベース、ネットワークといったインフラにおける基本となるサービスの他、例えばAI・機械学習、データ分析関連サービスやコンテナサービス、サーバーレスなコード関数実行サービス等も提供されていますが、多少の仕様の違いこそあるもののこれらはAWSやGCPでもこれらのサービスが提供されています。

それでも各社は当然ながら異なる独自のメリットを持っており、Microsoft Azureにおいてもそれは同様です。Azureには200以上の豊富なサービスが提供されていることを述べましたが、これらのサービスを利用することでMicrosoft Azureならではのメリットを享受できます。

Azureを利用する場合のメリットとしてはMicrosoftのその他サービスとの相性が良いということがまず第一に挙げられます。Windows serverやActive Directory、SQL Server等で構築していたオンプレミス環境のシステムを移行するのに適したクラウドサービスである他、ハイブリットクラウド(複数のクラウドサービスやオンプレミスを連携した運用方法)・マルチクラウド(複数のクラウドサービスを連携した運用方法)としての運用も可能となっています。クラウドサービスに多くのメリットがあるからと言って簡単にクラウドへ移行できるとは限りません。しかしハイブリットクラウド、マルチクラウドでの運用が可能なため、一部分のみクラウドに移行して運用するということも可能となります。オンプレミスとクラウドそれぞれのメリットをフルに生かしたシステム運用を継続していくという方法も考えられます。

Microsoftの保有する広範なバックボーンネットワークを利用できるという点もメリットの一つとなります。Azureは140か国に60以上のリージョンと呼ばれるデータセンターを保有しており、このリージョン間をMicrosoftの強力なネットワーク内で結んでサービスを運用することが可能です。また世界各国にリージョンがあり各サービスではリージョンを自由に選択できる(サービスによって指定できないリージョンもあり)ため、国外でのビジネス展開が必要となった場合でも地理的な距離によるレイテンシーを最小限に留めた運用が可能となります。

他のクラウドサービスにも存在しているものの、特にコスト削減ができる仕組みが充実しているという点もMicrosoft Azureの大きな特徴です。Microsoft Azureに限らずクラウドサービス全体のメリットとしてコストの削減が挙げられますが、Azureでは「Azure ハイブリッド特典」や「予約割引(Azure Reserved Virtual Machine Instances)」「Azure 開発/テスト価格」といった様々なコスト削減の仕組みを設けています。Azure ハイブリッド特典は、オンプレミスからAzureに移行するに当たって一部サービスのライセンスの再購入が不要となるサービスです。具体的な対象はソフトウェア アシュアランス(SA)付きのライセンス、またはサブスクリプションのあるWindows ServerやSQL Serverのライセンスとなっており、オンプレミスで利用していたライセンスをそのまま適用することが可能となります。

予約割引は前払いすることで最大72%程度の割引が受けられる料金システムです。ほとんどのクラウドサービスは従量課金制となっており、これは稼働状況によってはコスト削減を目的とするために重要な要素となります。しかしながら大量なリソース使用が予測される場合や長期運用する場合においては、却ってオンプレミスの時より多くのコストが発生する状態にもなりかねません。固定費とならないため予算が立てづらいという課題が発生することもあるでしょう。

予約割引は1年または3年分のサービス料金を前払いすることで、使用量を気にすることなく運用するということが可能となります。なお支払いは前払いだけではなく月払いとすることも可能で、月払いにしても年払いに比べて料金が割増になることはありません。

「Azure 開発/テスト価格」は対象サービスを開発・テスト目的で利用する場合に限り専用の割引価格が適用されるというものです。これは統合開発環境(IDE)であるVisual Studioのサブスクリプションを維持していることが前提となり、Azureの中ではAzure Virtual MachinesやAzure SQL Database、Azure Logic Apps、Azure App Service、Azure Cloud Servicesといったサービスのインスタンスが対象となります。開発・テストの段階では24時間稼働しておく必要はなく必要最低限の利用となるので、この割引は開発者にとって大きなメリットとなることでしょう。

Microsoft Azureの料金体系と無料利用枠について

Microsoft Azureの基本は従量課金となっておりサービスによって課金の対象となるものがそれぞれに細かく設定されています。例えばストレージサービスであれば、レンタル型のサーバーのようにあらかじめ決められた容量に対して料金が発生するわけではなく、データの保存量に対して課金が発生したり、ネットワーク使用量であればAzureからデータを送信する場合のみが課金対象となってAzureにアップロードする分は対象とならなかったりと様々です。さらに、リソースを停止しておけば料金がかからないサービスもあるので常時稼働しておく必要がないものに関しては停止を忘れずに行いましょう。バックアップデータにおいては大抵の場合アクセス頻度が少ないため、そういったデータを保存するのに適したストレージにデータを移すことで無駄なコストを発生させずに済むこともあります。これらの仕組みを理解しておくことでより適したサービスを利用してコスト削減を実現できるため、サービスの詳細ページを参照して下調べは入念に行うことをおすすめします。

その他に、前述したような割引の仕組みが設けられている状況です。なお前述した以外の割引としては、1年または3年間の時間単位の固定金額を支払いへ同意することで最大65%の節約が可能な「Azure 節約プラン」、SLAの対象とはならないもののその時余っているリソースをスポット的に利用することで最大90%程度の割引が可能な「Azure Spot Virtual Machines」、移行コストの削減サービス等があります。

続いて無料利用枠に関してですが、まずAzureのサービスを利用する際は無料のAzureアカウントを作成する必要があります。この時にクレジットカード情報の入力が必須となりますが、アカウントを作成することで200ドル分のAzureサービスに利用できるクレジットが付与されます。このクレジットはAzureの様々なサービスを自由に利用でき、溢れた分は登録したクレジットカード等での支払いが必要となります。

200ドルのクレジットとは別に、Azure Virtual MachinesのLinux/Windows、Azure SQL Database、Azure Cosmos DB、Azure Files等の代表的なサービスが12ヶ月無料で利用できる他、Azure App Service、Azure Functions等55以上のサービスが常時無料で利用できるようにもなっています。なおどの程度まで無料で利用できるかはサービスによって定められているので、実際に利用する際はAzureの公式ページで確認することをおすすめします。Azureはこのように無料利用枠が充実しているため、クラウドサービスをお試しで気軽に利用してみたいという場合にも適しています。

Microsoft Azureでおすすめのアプリケーション開発に適したサービス

ここでは数あるMicrosoft Azureのサービスの中から、アプリケーション開発で利用できる7つのサービスを紹介します。他にもいくつか開発系のサービスはありますが、今回は7つに絞っていることにご注意ください。

Azure Virtual Machines

多くのAzureサービスの基本となる仮想マシンサービスで、ある用途に特化したサービスを構築している環境のベースがAzure Virtual Machinesであることも珍しくありません。そのため知識や技術力さえあればAzure Virtual Machinesの契約だけで同じようなサービスが構築できる程の自由度があると言えますが、その反面セキュリティを含めた運用管理に関して他のサービスより詳しい知識が求められます。

Azure Virtual Machinesは、あらかじめ用意された様々なサイズや構成の仮想マシン(VM)が選択でき、アプリケーションやワークロードに最適なリソースを割り当てることが可能です。これにより、パフォーマンスを最適化したうえでコスト削減も実現できるというメリットがあります。

仮想マシンの作成と管理は統合管理画面のAzureポータル上で簡単に行える他、Azure PowerShell、Azure CLIといったツールを使ってコマンド操作することも可能です。またOSとしてはMicrosoftの製品であるWindows Serverはもちろん、Ubuntu、Red Hat Enterprise Linux等のLinuxディストリビューションの利用も可能であるため、プロジェクトや企業の方針、エンジニアの趣向等の様々なニーズに対応できます。

さらに可用性セットや仮想マシンスケールセットを活用することで高い可用性と耐久性を確保し、アプリケーションのダウンタイムを最小限に抑えることも可能です。仮想ネットワークを使用することでシステムのセキュリティを強化することもできます。

Azure App Service

クラウドベースのプラットフォームで、多種多様なWebアプリやモバイルバックエンドを簡単かつ迅速に構築、デプロイ、スケーリングできるサービスです。ASP.NET、ASP.NET Core、Java、Ruby、Node.js、PHP、Pythonといったプログラミング言語やフレームワークが利用できる他、Dockerでコンテナ化したアプリケーションをAzure DevOps、GitHub、Bit Bucket、Docker Hub、Azure Container Registry等を連携することでホストできるようになります。

ソースコードやコンテナをアップロードするだけでアプリのデプロイが可能であり、OSとしてはWindowsとLinux系の利用ができます。全てのAzureリージョンでグローバルに自動スケーリングができるため、アプリの負荷に応じた適切なリソースの割り当てによって安定したサービスの提供が可能となります。さらにSLA(サービスレベルアグリーメント)は99.95%という高可用性が公表されており、メンテナンスやセキュリティ修正プログラムも自動化されているのでエンジニアの工数を削減した運用が可能です。

セキュリティにおいては、Azure Web Application Firewallによるアクセス制御ができる他、アクセスキー、ライセンス情報の暗号化、多要素認証が設定可能で、各組織のコンプライアンス要件にも対応できる仕組みとなっています。

なお、1日あたり1時間までのアクティブなアプリ実行時間、1GBのストレージ容量、および最大10個のアプリのホスティングは常時無料で利用できるようになっています。

Azure Functions

イベント駆動型のサーバーレスなコンピューティングサービスです。「イベント駆動型」というのは聞き慣れない言葉かもしれませんが、端的に言うとイベントやトリガーに反応して自動的にコードを実行するサービスとなります。データの変更、メッセージの受信、タイマーと様々なものをトリガーとすることができ、トリガーに反応した際にはあらかじめ設定された関数が実行されて必要なリソースが確保される仕組みとなっています。

Webシステムで利用されることの多いC#、Python、JavaScriptといった様々なプログラミング言語がサポートされており、記述した関数はこれらサポートされている言語であればいずれであっても共通の解釈が行われます。セキュリティ面においては、アクセス制御やログ分析といったモニタリングによって関数の安全性とトラブルシューティングが行われるので安心です。また、Azure PortalやAzure DevOpsを利用することで関数の管理やデプロイ、監視も可能となります。

アプリケーションの需要変動に応じた柔軟なスケーリングや、実行したコードにのみ課金されるという仕組みによって無駄なコストを省けるということはもちろん、仮想マシンやコンテナが不要であるためエネルギー消費量を削減できるのでエコにも繋がるサービスと言えます。なお、1ヶ月あたりの実行回数が100万回、コンピューティングリソースが400,000 GB秒、5分間の最大実行時間の範囲内であれば常時無料で利用できます。

Azure DevOps

開発モデルの一つである「DevOps」を実現するための統合ツールセットです。DevOpsの表すところは非常に広いですが共通している部分としては、開発側(Development)と運用側(Operation)が密に連携して開発の効率や品質を向上させることを目的とした手法ということです。

Azure DevOpsには「Azure Boards」「Azure Pipelines」「Azure Repos」「Azure Test Plans」「Azure Artifacts」「Azure DevOps用 GitHub Advanced Security」といった6つのサービスが用意されており、これらの全てを利用することも、組織の運用に合わせて一部のみ利用することも可能です。

Azure Boardsはダッシュボードやレポートを利用してプロジェクトの管理状況を管理するサービスです。Azure Pipelinesはあらゆる言語やプラットフォーム、クラウドに対応した CI/CD(継続的インテグレーション/継続的デリバリー)によってビルド、テスト、デプロイができます。

Azure ReposはGitのプライベートリポジトリが無制限に提供されるバージョン管理サービスです。pull requestと高度なファイル管理が利用できます。Azure Test Plansは手動、探索的テストツールを利用してWebやアプリケーションにおけるテストをサポートします。手動テストの設計、実行、結果や開発ライフサイクルの品質を評価することもできます。

Azure ArtifactsはMaven、npm、NuGet、Python等に対応したパッケージ管理サービスです。パブリック、プライベートのいずれでも利用可能で、コードの共有や成果物の共有が簡単にできます。Azure DevOps用 GitHub Advanced Securityは開発者、セキュリティ、運用(DevSecOps)といった各チームがそれぞれにセキュリティを軽視せずに生産性向上を目指せる機能が備わっているサービスです。GitHubで管理されているコードの脆弱性を診断したり、簡単な修復ガイダンスの提供等をしてくれます。

Azure DevOpsで常時提供されている無料利用枠としては、無制限のプライベートGitリポジトリが付いた5ユーザーが該当します。また「Basicプラン」「Basic + Test プラン」という2種類のライセンスプランが存在しますが、Basic + Test プランの方は30日間無料で利用できます。

Azure Service Fabric

マイクロサービスが構築・管理できる統合プラットフォームです。マイクロサービスとはプログラミング言語でいうオブジェクト指向のようなものです。小分けに分割されたサービスを一つの単位(コンポーネント)としてそれぞれを独立させて開発を進め、最終的に全てを組み合わせてシステムを稼働させます。このような仕組みを採用することにより、大規模サービスであっても先行して一部のサービスのみ提供を開始したり、アップデートや改修があっても他に影響を与えず一部のみに実施できたり、依存関係を最小限に抑えたりということが可能になります。そのため、迅速な開発や臨機応変な変更が前提とされる「アジャイル」と呼ばれる開発モデルには特に適しているサービスと言えるでしょう。

Azure Service Fabricでは「オーケストレーション」という仕組みが採用されており、アプリケーションの設定や管理、調整を自動化することによって管理を簡略化かつ効率化できます。またマイクロサービスに関してはステートフルとステートレスの両方に対応していて、ステートフルの場合はアプリケーションを実行している状態を保持するので、複雑な処理が可能となる一方でスケールアウトしづらい面があります。逆にスケールアウトしやすい状態としたい場合は状態の保持をしないステートレスを選択するのが良いでしょう。

Azure Service Fabric自体は常時無料で、利用するVMインスタンス、ストレージ、ネットワーク、IPアドレスでの従量課金分のみ発生します。なおリライアブルボリューム、Reliable Collectionといったオプションを利用する場合は別途料金が発生します。

Azure Deployment Environments

Microsoft Build 2023で初めて一般提供開始が発表されたばかりのサービスで、この記事を執筆している2023年8月時点では無料のサービスとなっています。ただしデプロイされた環境で作成されたコンピューティングやストレージ、ネットワーキング等の料金は別途発生する点にはご注意ください。

このサービスではプロジェクトベースのテンプレートを利用することが可能で、セキュリティが保護されたベストプラクティスとなるアプリ開発環境を迅速に立ち上げることができます。「デベロッパーセンター(Dev Center)」という専用のポータルが設けられていて、そこにあらかじめ定義されたテンプレートを利用することとなります。

コンテナ関連サービス(Azure Kubernetes Service(AKS)、Azure Container Apps、Web App for Containers)

Azureには開発を効率化するための複数のコンテナサービスが提供されています。今回はその中の3つに絞って簡単に紹介します。

合わせて利用すると便利なサービス

Microsoft Azureのようなクラウドコンピューティングは、一つのサービス単体で利用するよりも複数のサービスを連携して利用されることが多い傾向にあります。ここでは開発関連のサービスと合わせて利用すると便利なサービスを4つに絞って紹介します。

Azure Storage

Azure Storageという名称は、Azureにおけるクラウドベースのデータストレージソリューションの総称で、その中ではBlob、ファイル、テーブル、キューといった様々な種類のストレージが提供されています。

Blobは大容量の非構造化データの保存に適しているオブジェクトストレージで、画像、動画、ドキュメントなどを効率的に管理できます。ファイルストレージはWindows等のOSで多くの人が触れたことのあるシンプルで人間が管理しやすいストレージサービスであり、共有フォルダのように利用することができます。また、テーブルストレージは大量の構造化データをスケーラブルに格納できるタイプで、キューは非同期メッセージングを可能にするタイプです。なおクラウドのストレージサービスとしてはオブジェクトストレージ、ファイルストレージの他にブロックストレージも一般的ですが、Azureの中でブロックストレージに該当するサービスは「Azure Disk Storage」となっています。

高い可用性と耐久性があり、冗長なデータコピーと自動フェイルオーバーが可能なAzure Storageは、グローバルなデータセンターでの分散ストレージとCDN(Contents Delivery Network)統合による高速なデータ配信も可能となっています。

Azure Active Directory

オンプレミスにおいてもWindows 2000 Serverから提供されていたActive Directoryですが、マイクロソフト アジュールでも同じようにディレクトリサービスシステムとして提供されています。Azureでは無料のものを含めた全部で4つのプランが用意されており、利用用途や組織の方針、要件に応じて使い分けることが可能となっています。

具体的にはActive Directoryを利用することでセキュアなユーザー認証とアプリケーションへのアクセス制御が可能となり、オンプレミスのActive Directoryとも連携してハイブリッドな環境を構築しつつ両方のIDを一元管理することもできます。また、シングルサインオン(SSO:Single Sign-On)機能を活用することで一度ログインするだけで多くのアプリケーションにアクセスすることも可能となります。さらにマルチファクタ認証(MFA:Multi-Factor Authentication)機能を使うと、アクセス制御や条件付きアクセスポリシーを使用して複数の認証要素を利用することによるセキュリティの強化もできます。セキュリティ面においては、データの暗号化やAzure AD Identity Protectionによる不正アクセス検出が可能であり、Azure AD Privileged Identity Management(PIM)を使うことで各Azureリソースへの特権アクセス権限の付与もできる他、権限の利用状況確認や、アラートを発することも可能となります。

Azure CDN(Content Delivery Network)

高速で効率的なコンテンツ配信ができるサービスであり、静的および動的なコンテンツをグローバルなネットワークエッジキャッシュに配置することで、サーバーの負荷軽減やWebコンテンツ配信の安定化、アクセス数増加によるサーバー増設が不要となることによるコスト削減等が実現できます。

またDDos攻撃対策に向いている一面もあります。Azure CDNはクライアントとWebサーバー間に位置しており、一度Webサーバーから返されたコンテンツ内容をキャッシュとして保存します。そのため次回からリクエストがあった場合はそのキャッシュを利用してコンテンツの配信を行うことでサーバーの負荷軽減ができます。

この仕組みを利用することで、DDos攻撃による大量アクセスがあったとしてもWebサーバーには送らずCDNで受け止めることが可能になります。ただし全てのアクセスを受け止めることはできず、キャッシュを保持していないコンテンツへのアクセスは止められない、たとえ攻撃によるアクセスであっても課金対象となってしまうというデメリットもあるため、この点は別途対策が必要です。

Azure Monitor

Azure環境だけではなくオンプレミスからもデータを収集したうえで監視や分析、可視化を行うことができるマネージドな総合監視サービスです。各リソースからメトリック、ログ、トレースといった各種データを集約して機械学習等を利用した分析を行い、傾向や異常を検知することが可能です。

大規模な障害を未然に防ぐことができる、ハイブリッドクラウド環境でも利用可能、PowerBI等のサービスで分析可能といったメリットがありますが、Azure Monitor独自の仕組みがあるため慣れるまでは希望の設定がしづらいというデメリットがあることも頭に入れておきましょう。

Microsoft Azureで開発を始める前に

Microsoft Azureには開発に利用するサービスを用途別、言語別に参照できる「Azure のドキュメント」というページが用意されているので、実際にサービスの選定を進めたいという場合はぜひご覧ください。まずサービスを選定する際は、開発するアプリケーションをホストする仮想マシン(VM)が必要か、サーバーレスサービスで問題ないかを検討しましょう。

また開発そのものに利用するサービスの他に、データの保存領域としてデータベースやストレージ等のサービスが必要かもあらかじめ決めておく必要があります。さらに、必要に応じて利用するコンテナサービスも選定しておきましょう。なお今回は紹介していませんが、オンプレミスからAzureへのデータ移行を行う際には「Azure Data Factory」を利用するとGUI画面の操作だけで簡単に行えるようになります。もちろん完全にクラウドへ移行せずとも、Azure App Serviceのハイブリッド接続を利用してハイブリッドクラウドとして運用することも可能です。

他にもAzureリソースを運用するリージョンや認証サービス、監視サービスの必要有無についても決めておきましょう。Azureでは料金計算ツール、総保有コスト(TCO)計算ツールといったWebブラウザ上で利用できる見積りツールも提供されており、従量課金制であることによって予算が立てづらいクラウドサービスを利用するうえで非常に有効なのでぜひご利用ください。

まとめ

今回はMicrosoft Azureの概要と、アプリケーション開発を行うのに適した各種サービスについて紹介していきました。それぞれのサービスに関して概要を紹介しましたが、実際に利用してみると運用するシステムに適したものであるかどうかがわかることもあるでしょう。Azureには常時無料で利用できるもの、12ヶ月無料で利用できるものがある他、Azureアカウント登録時に付与されるクレジットの範囲内で様々なサービスを無料で利用できるため、ぜひ一度試しに利用してみたうえで最も適したサービスを採用することをお勧めします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です