どうも、フリーランスエンジニアのMakotoです。
今回は、Azureの代表的なコンピューティングサービスの概要について解説します。
- Virtual Machines(仮想マシン)
- Virtual Machine Scale Sets(仮想マシンスケールセット)
- Azure App Service
- Azure Functions
- Azure Container Instances(ACI)
- Azure Kubernetes Service(AKS)
それではいってみましょう!
コンピューティングサービスとは?
コンピューティング(computing)は直訳すると「計算する」「数える」ことで、ITの文脈ではコンピュータを使って処理する、演算することを表します。
クラウドの文脈ではアプリケーションを動かすことが前提ですので「コードを実行する場所」を提供するサービスとも言い換えることができます。
Azureポータルですべてのサービスを開くとサービスがカテゴリごとに分類されており、コンピューティングの中には仮想マシンなど今回ご紹介するサービスがあることがわかります。
なお、Azureのサービス一覧は公式ドキュメントのAzure製品からも検索・確認できますが、実際のところAzureポータルやドキュメントにおけるサービス名の表記は英語のままだったり、日本語読み、接頭辞にAzureあり・なしなどがバラバラです。
例)
Azure Functions → 関数アプリ
Azure Kubernetes Service → Kubernetes サービス
およそ推測できるのでほとんど困らないとは思いますが、もし探しているサービスが見つからない場合は別の読み方で検索したり、カテゴリを絞ってから探してみてください。
代表的なコンピューティングサービス
Virtual Machines(VM)
Virtual Machinesは、WindowsまたはLinuxのOSを選択して仮想サーバを起動するためのサービスでIaaSに分類されます。
Azureポータルで表示されるサービス名は「Virtual Machines」ですが、単に仮想マシンと呼ぶか、もしくは略してVMと呼ぶことが多いです。
WindowsまたはLinuxの仮想サーバを提供
通常はMarketplaceにあらかじめ用意されているOSのイメージを選択しますが、独自にカスタマイズしたイメージを登録して起動することもできます。
Virtual Machine Scale Sets(VMSS)
Virtual Machine Scale Setsは、仮想マシンにスケールの機能(弾力性)を兼ね備えたサービスでIaaSに分類されます。同じ構成で台数を増減させる前提の仮想マシン群ということですね。
弾力性についてはこちらの記事でも解説していますので参考にしてください。
Azureポータルで表示されるサービス名は「Virtual Machine Scale Sets」ですが、仮想マシンスケールセットと呼ぶか、もしくは略してVMSSと呼ぶこともあります。
スケールの機能(弾力性)を兼ね備えた仮想マシン群
CPU使用率の平均が70%を超えたら台数を1台増やす、とか、夜の22時〜翌8時は台数を1台減らす、など、需要または特定のスケジュールに従って自動的にサーバ台数を増減させることができます。
また、Webサーバなど外部からのリクエストを処理する用途では、複数のサーバにトラフィックを分散して振り分けれるように、前段にロードバランサーを配置して構成することが一般的です。
Azure App Service(Webアプリ)
Azure App Serviceは、HTTPベースのアプリケーションを動かすための環境を提供するサービスでPaaSに分類されます。
Webアプリと呼ぶこともあります。※個人的にはこの汎用的な呼び方は紛らわしいと思っていますがAZ-900試験の問題文で登場する可能性があります。
HTTPベースのアプリケーションを動かすためのプラットフォームを提供
App Serviceでは、OSやプログラムを動かす環境(ランタイム)を選択することで環境を簡単に作成することができます。
OSのみならず.NETやJava、PHP、Pythonなどの実行環境もクラウド事業者から提供されるので、利用者はアプリケーションのコードを送り込めばアプリケーションを動かすことができます。
直接ログインしてOSの設定を行うことはできませんが、ソースコードを管理して継続的にデプロイしたり、負荷分散、自動スケールなどPaaSならではの機能が標準で盛り込まれています。
Azure Functions(関数アプリ)
Azure Functionsは、様々なプログラミング言語を実行するためのサーバレス環境です。関数アプリとも呼ばれます。
サーバレス(サーバレスコンピューティング)とは、広義ではPaaSとほとんど同じ意味で、アプリケーションを動かすためのプラットフォームを提供するサービスです。
Azure Functionsはサーバレスの代表的なサービスで、実行条件(トリガー)が満たされるとプログラムが実行され、その実行時間や回数に応じて課金されます。
App Serviceと違い、データの変換や転送など小さい単位のシンプルな機能を実装する用途で利用されます。
トリガーに応じて小さい単位のシンプルな機能を実行するサーバレス環境
通常、PaaSであってもCPUやメモリなど用意されたプランから選択することがありますが、サーバレスではそういった構成を意識せず開発することができます。
AzureポータルのパラメータはApp Serviceとほとんど同じ。
サーバレスと聞くとあたかもサーバが存在しないかのように考えてしまいそうですが、実際にはサーバの存在をより抽象化しているだけで、クラウド事業者によって管理されています。サーバレスは性能の調整や機能の管理をクラウド事業者に一任できるというわけです。
Azure Container Instances(ACI)
Azure Container Instancesは、Azure上でDockerコンテナーを実行するためのサービスでPaaSに分類されます。略して「ACI」と呼びます。
Azure上でDockerコンテナーを実行するための環境を提供
コンテナーは仮想化技術の方式で、隔離された環境でプログラムを実行することができます。Dockerはコンテナーを実行するためのオープンソース(無料)のソフトの名前で、会社の名前でもあります。クジラのロゴでお馴染み。※Dockerは一部をのぞき有償化されました。
Docker社が開発したコンテナー技術が広く使われており、事実上の業界標準(デファクトスタンダード)になっているため、現時点ではコンテナーといえばDockerという理解で問題ありません。
Docker社が開発した仮想化技術の方式。コンテナーと呼ばれる隔離された環境でプログラムを実行できる
仮想マシンなど従来のハイパーバイザー型の仮想化技術と比べて以下のような特徴があります。
・軽量
・可搬性(ポータビリティ)
・起動が高速
ISOイメージとかVHDイメージなどからOSをインストールしたりサーバをたてたことがある人ならわかると思いますが、こういったイメージファイルってとっても容量が大きいですよね。
Dockerで扱うイメージは中身にもよりますがとにかく軽量なので、コピーやアップロード/ダウンロードなど可搬性に優れ、仕組み上、起動するのも非常に高速です。
Azureポータルのパラメータは仮想マシンと似ていますが、イメージはMicrosoft公開のもの、独自イメージ、 Docker社が管理するもの(DockerHubで公開のもの)などが選択できます。
Azure Kubernetes Service(AKS)
Azure Kubernetes Serviceは、Azure上でKubernetesを実行するためのサービスです。略して「AKS」と呼びます。
PaaSに含めることもありますが、土台となるノードに対する更新プログラムの適用など一部コンポーネントがユーザーの責任範囲となるため、厳密にはIaaSに分類されます。
Azure上でKubernetesを実行するための環境を提供
KubernetesはGoogleが作ったオープンソースで、複数のDockerコンテナーを協調して動かすための仕組みです。略してk8s(ケーエイツ)と呼ぶこともあります。頭文字がk、末尾がs、間に8つのアルファベットがあるのでk8sです。
複数のDockerコンテナーを協調して動かすための仕組み
少しこじつけますが、仮想マシン(単体)と仮想マシンスケールセット(複数台)の関係とACIとAKSの関係は似ています。雑に言うと、1台か複数台かの違い。
Kubernetesはクラスターと呼ばれるノード上で動作し、負荷に応じて自動スケールしたり、コンテナーを死活監視してダウンしている場合は自動リカバリするなどの機能が備わっています。
このように複数のコンテナを統合管理できるツールのことを「コンテナーオーケストレーション」と呼びます。
Azureポータルの画面はこんな感じ。画面はほんの一部ですが、タブが複数分かれていて設定項目が多いです。
ACIとAKSはコンテナーの知識が必要なのでやや高度です。AZ-900試験で深く問われる可能性は低いと思いますのでキーワードだけおさえておきましょう。
Azure Container Instances
Docker、軽量、ポータブル(持ち運び可)、アプリ仮想化
Azure Kubernetes Service
複数コンテナー、クラスター、オーケストレーション
どのサービスから学べばよい?
最も基本となるコンピューティングサービスはVirtual Machines(仮想マシン)です。手を動かして実際に作成する場合は仮想マシンの学習から始めることをオススメします。
仮想マシンを作成する手順はこちらのハンズオン記事を参考にしてください。
まとめ
今回はAzureの代表的なコンピューティングサービスの概要について解説しました。それぞれのサービスをまとめると次の表のような形になります。
サービス名 | 意味 | サービスモデル |
---|---|---|
Virtual Machines | WindowsまたはLinuxの仮想サーバを提供 | IaaS |
Virtual Machine Scale Sets | スケールの機能(弾力性)を兼ね備えた仮想マシン群 | |
Azure App Service | HTTPベースのアプリケーションを動かすためのプラットフォーム | PaaS |
Azure Functions | トリガーに応じて小さい単位のシンプルな機能を実行するサーバレス環境 | |
Azure Container Instances | Dockerコンテナーの実行環境 | |
Azure Kubernetes Service | Kubernetes(複数コンテナー)の実行環境 | IaaS |
AZ-900試験ではサービスモデル(IaaS/PaaS/SaaS)の問題でサービス名を選択させるケースもありますので、それぞれのサービスの特徴と合わせてサービスモデルもセットで覚えておきましょう。