Microsoft Azure をざっくり理解する — クラウドプラットフォームの全体像

この記事の内容

  • Azure は「部品を組み合わせて自分で作るプラットフォーム」であり、Microsoft 365 とは根本的に異なるサービスである
  • 仮想マシン・App Service・Functions など多様なコンピューティング選択肢があり、やりたいことに応じて使い分けられる
  • VM の作成はポータルからセルフサービスで数分で完了し、使った時間分だけ課金される
  • ARM テンプレートを使えば複雑なインフラ構成もコードで定義・自動展開できる
  • Azure の真価は「インフラの下回りをクラウドに任せ、本質的なアプリ開発に集中できること」にある

Azure とは何か — Microsoft 365 との違い

Azure は、Microsoft が提供するクラウドプラットフォームです。同じ Microsoft のサービスでも、Microsoft 365(旧 Office 365)とは性質が大きく異なります。

Microsoft 365 はメールや Word・Excel といった完成されたアプリケーションをそのまま使うサービスです。一方、Azure はサービスの「部品」を提供するプラットフォームです。その部品を組み合わせて、自分たちが使うシステムを自分たちで作ってください、という思想になっています。

Azure の管理ポータルを開くと、非常に多くのサービスが並んでいます。コンピューティング、ネットワーク、ストレージ、データベース、AI、セキュリティ……と分野はどんどん広がっており、全体を完全に把握している人は世界を探してもほぼ存在しないと言われるほどの分量があります。まず大まかな全体像を把握しておき、必要になったときに深く学んでいくというアプローチが現実的です。


コンピューティングサービスの選択肢

Azure のコンピューティングサービスは、やりたいことに応じていくつかのアプローチがあります。

仮想マシン(Virtual Machines)

最もイメージしやすい選択肢です。Windows Server や Linux のサーバーを Azure 上に展開できます。ただし、仮想マシンを作ること自体が目的ではなく、その上にアプリケーションを乗せて何かを動かすことが重要です。

仮想マシンを使う場合は、冗長化・負荷分散・パッチ適用・脆弱性対応といった運用をすべて自分たちで行う必要があります。

App Service

Web サイトやWeb アプリを作りたいときに使うサービスです。仮想マシンを用意して Web サーバーをインストールして……という手順を踏まずに、いきなり Web サイトを作ることができます。冗長化・負荷分散・パッチ適用といった下回りはプラットフォームが面倒を見てくれます。

Azure Functions

実行したいロジックが決まっている場合、サーバーを意識せずに関数(コード)を直接書くだけで動かせるサービスです。

Azure Batch

大量の計算処理を並列で行いたい場合に使います。50 台・100 台とスケールアウトしながらジョブを投げ続けるような用途に向いています。

コンテナベースの選択肢

Azure Kubernetes Service(AKS)など、コンテナを使って同じことをより効率的に行う選択肢もあります。


仮想マシンを実際に作ってみる

Azure ポータルからセルフサービスで仮想マシンを作成できます。主な設定項目は以下の通りです。

  • リソースグループ: 関連リソースをまとめる論理コンテナ
  • リージョン: 東日本・西日本など世界中のデータセンターから選択
  • イメージ: OS のテンプレート(Windows Server、各種 Linux ディストリビューションなど)
  • サイズ: CPU 数・メモリ・ディスク容量・パフォーマンスが定義されたプリセットから選択
  • 管理者アカウント: ユーザー名とパスワード(または SSH キー)
  • 受信ポートの規則: SSH(22 番ポート)や RDP(3389 番ポート)など

サイズは「CPU をいくつにするか」を細かく指定するのではなく、事前に定義されたプリセットの中から選ぶ形になっています。各プリセットには月額料金の目安も表示されているため、コストを事前に把握した上で選択できます。

仮想マシンの作成が完了すると、グローバル IP アドレスが割り当てられ、SSH でアクセスできる状態になります。

ssh<>@<IP>

また、仮想マシンを一時停止してサイズを変更し、再起動するといったことも可能です。


課金モデル — 使った分だけ払う

Azure の大きな特徴のひとつが従量課金制です。

たとえば 1 時間あたり 14 円の仮想マシンを作成し、検証が終わったらすぐに削除すれば、数十分の利用で 10 円未満しかかかりません。動かしている時間だけ課金されるというモデルです。

これはオンプレミスの考え方とは根本的に異なります。従来のオンプレミス環境では、ハードウェアを購入してラックに収め、7 年間使い続けるといった運用が一般的でした。Azure ではそのような「所有」の概念がなく、必要なときに必要なだけ使うという考え方に変わります。


インフラの背後で起きていること

Azure のデータセンターがどこにあるかは、ユーザーが気にする必要はありません。「東日本リージョン」を選べば、東日本のデータセンター内のどこかで動いている、ということで十分です。

パブリッククラウドでは、物理サーバーのメンテナンスによって仮想マシンのホストが変わることがあります。障害があれば別のホストで自動的に再起動されることもあります。これはパブリッククラウドでは当たり前のことであり、そのような環境を前提としたアーキテクチャで設計することが重要です。


ARM テンプレートによるインフラのコード化

Azure 上のすべての操作は API ベースで実現されており、ポータルから行う操作もすべて内部的には API 呼び出しです。これにより、インフラの構成を JSON で定義することができます。

この仕組みを ARM(Azure Resource Manager)テンプレートと呼びます。作りたい環境の構成をテキストで書いておけば、それを適用するだけで環境が自動展開されます。

{
  "$schema": "https://schema.management.azure.com/...",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      ...
    }
  ]
}

Azure クイックスタートテンプレート

ARM テンプレートのサンプル集として、Azure クイックスタートテンプレートが GitHub で公開されています。執筆時点で 800 件以上のテンプレートが登録されており、世界中の開発者が貢献しているオープンソースのリポジトリです。

たとえば「高可用性 SharePoint ファームを展開する」というテンプレートでは、以下のような複雑な構成を自動で展開できます。

  • 9 台の Azure VM を展開
  • ロードバランサーで負荷分散を構成
  • プライマリ・バックアップのドメインコントローラーを 2 台構築
  • 新しい Active Directory フォレストを作成
  • SQL Server を Always On 構成で展開
  • SharePoint サーバーを 4 台構成でファームを組む

これをオンプレミスで SI 会社に依頼すれば、設計・構築・テストに何ヶ月もかかり、数百万円規模のプロジェクトになりかねないものです。Azure クイックスタートテンプレートのパラメーターを埋めてデプロイボタンを押すだけで、同等の環境が短時間で出来上がります。


仮想マシンの管理・運用機能

Azure では、仮想マシン単体でも豊富な管理・運用機能が利用できます。

  • Azure Advisor: 推奨事項を自動で提示してくれる
  • バックアップ: 専用サービスと連携してバックアップを構成
  • Azure Site Recovery: ディザスタリカバリを構成
  • Update Management: パッチ適用・更新管理
  • Change Tracking: 構成変更の履歴を記録
  • Desired State Configuration(DSC): VM の内部状態を定義し、常にその状態に保つ
  • Azure Policy: ディスク暗号化やバックアップの有無など、組織のポリシーを自動チェック
  • 監視・アラート: CPU 使用率やディスク I/O などのメトリクスをグラフ化し、アラートルールを設定
  • Run Command: SSH を開けていない状態でも、ポータルからスクリプトを実行可能

クラウドがもたらす考え方の変化

Azure をはじめとするパブリッククラウドの本質は、インフラの下回りをクラウドに任せ、本当に重要なアプリケーション開発に集中できることにあります。

従来のオンプレミス環境では、ハードウェアの選定・購入・設置・OS インストール・ミドルウェア設定……と手塩にかけた「一品物」のサーバーを何ヶ月もかけて作り上げていました。

クラウドでは、VM が 1 台落ちることは当たり前の出来事です。それを前提として、壊れても継続稼働できるような設計をする。そして下回りの運用はクラウドに任せる。このカルチャーシフトこそが、クラウド活用の核心です。

SaaS(Microsoft 365 など)の利用で「自動アップグレード・常に最新版」という感覚に慣れてきた組織にとって、次は PaaS や IaaS でも同様のアプローチを取り入れる段階に来ていると言えます。


まとめ

  • Azure は完成品を使う「SaaS」ではなく、部品を組み合わせて自分でシステムを作る「プラットフォーム(PaaS/IaaS)」です
  • 仮想マシン・App Service・Functions・Batch など、目的に応じて使い分けられる多様なコンピューティング選択肢があります
  • VM の作成はポータルからセルフサービスで数分で完了し、使った時間分だけの従量課金です
  • ARM テンプレートと Azure クイックスタートテンプレートを活用すれば、複雑なインフラ構成もコードで定義・自動展開できます
  • Azure の真価は管理・運用の自動化によって「本質的な開発に集中できる環境を作ること」にあります。全サービスを最初から把握しようとするのではなく、やりたいことに応じて必要なサービスを学んでいくアプローチが現実的です