こんにちは。エンジニア1年生です。
Azure Fundamentals(AZ-900)の学習を進める中で、今回はAzureのコンテナーサービスについて学びました。
これまで学習したAzure Virtual Machines(VM)は、仮想的なサーバーを作成するサービスでした。
一方で、今回学んだ「コンテナー」は、VMと混同する部分がありました。
Microsoft Learnを読み進めてみると、どちらもアプリケーションを動かすための技術ですが、考え方や得意なことが少し違うということがわかってきました。
今回は学習した内容を、自分なりに整理してみます。
コンテナーとは?
コンテナーとは、アプリケーションを実行するために必要なものをひとまとめにした実行環境です。
Microsoft Learnでは、VMよりも軽量で、必要になった時にすばやく作成したり削除したりできることが特徴として紹介されていました。
学習を始める前は、
「VMがあるならコンテナーはいらないのでは?」
と思っていましたが、役割が違うようです。
VMとの違い
一番大きな違いは、OSの扱い方だと理解しました。
VMは、それぞれが独立したOSを持っています。
そのため、一台のコンピューターの中に複数の仮想コンピューターを作るようなイメージです。
一方でコンテナーは、ホストOSを共有しながらアプリケーションを実行します。
OSを毎回用意する必要がないため、
- 起動が速い
- 軽量
- 同じサーバー上でたくさん動かせる
という特徴があるようです。
コンテナーはどんな場面で利用するの?
調べてみると、コンテナーはマイクロサービスアーキテクチャで利用されることが多いと紹介されていました。
マイクロサービスという言葉も今回初めて知ったのですが、
大きなシステムを小さな機能ごとに分けて開発する考え方のようです。
例えばECサイトなら、
- 商品検索
- 注文管理
- 決済
などを別々のサービスとして動かします。
私はまだ実際にマイクロサービスで開発した経験はありませんが、機能ごとに分けておけば、それぞれ個別に更新できるので管理しやすそうだなと感じました。(コンポーネント化して個別に開発するのと同じ感じかな)
Azure Container Instancesとは?
Azure Container Instances(ACI)は、
Azureで最も簡単にコンテナーを実行するサービスです。
VMを作成したり、複雑な環境を準備したりする必要がなく、コンテナーをそのまま実行できます。
Microsoft Learnでは、
「コンテナーを素早く実行したい場合」
に向いているサービスとして紹介されていました。
開発中の確認や、一時的な処理などで利用する場面があるのかなと思いました。
Azure Container Appsとは?
Azure Container Appsは、コンテナーを利用したWebアプリケーション向けのサービスです。
Azure Container Instancesと似ていると感じましたが、その違いは
- 自動スケーリング
- 負荷分散
などが最初から利用できることが挙げられていました。
アクセス数が増えると、自動でコンテナーを増やしてくれるということで、Webサービスとの相性が良さそうです。
Microsoft Learnを読んでいて、App Serviceと少し似ている印象も受けましたが、Container Appsはコンテナーを利用することが前提になっている点が違うのかなと理解しました。
Azure Kubernetes Service(AKS)とは?
Azure Kubernetes Service(AKS)は、大量のコンテナーを管理するためのサービスです。
※Kubernetes(読み方:クバネティス、またはクーベネティス)初見では読めぬ。
ここで初めて「オーケストレーション」という言葉が出てきました。
オーケストレーションとは、
複数のコンテナーを自動で管理する仕組みのことだそうです。
例えば、
- コンテナーを配置する
- 障害が発生したら再起動する
- 必要に応じて数を増やす
といったことを自動で行ってくれます。
私は実務経験なしのエンジニア一年生なので、Kubernetesを触ったことはなく予想ですけど、大規模なシステムでは人が一つずつ管理するのは難しいので、このようなサービスが必要になるのかなと思いました。
3つのサービスの違い
今回学んだ3つのサービスを、自分なりに整理するとこのようになりました。
| サービス | 私の理解 |
|---|---|
| Azure Container Instances | とにかく簡単にコンテナーを動かしたい時 |
| Azure Container Apps | Webアプリをコンテナーで公開したい時 |
| Azure Kubernetes Service | 大量のコンテナーを管理したい時 |
最初は名前が似ていて混乱しましたが、
「どれくらい管理が必要なのか」
という視点で考えると少し整理しやすくなりました。
VMとコンテナーはどちらを選ぶ?
今回学習して感じたのは、
VMとコンテナーは競合するものではなく、用途に応じて使い分けるものだということです。
私なりに整理すると、
| Azure VM | コンテナー |
|---|---|
| OSまで自由に管理したい | アプリケーションを効率よく動かしたい |
| 既存システムを移行したい | 新しいシステムを構築したい場面で利用されそう |
というイメージになりました。
実際の現場ではもっと判断材料があると思いますが、AZ-900ではまず役割の違いを理解することが大切なのかなと思いました。
AZ-900試験で覚えておきたいポイント
今回の範囲では、次の内容を整理しておきたいと思います。
- コンテナーは軽量な実行環境
- VMはOSごと仮想化する
- Azure Container Instancesは最も簡単にコンテナーを実行できる
- Azure Container Appsはコンテナー向けのPaaS
- Azure Kubernetes Serviceはコンテナーオーケストレーションサービス
まとめ
今回学習するまでは、コンテナーはVMの新しい技術なのかなと思っていました。
しかしMicrosoft Learnを読んでみると、VMを置き換えるというよりも、それぞれ得意な用途が違う技術なんだと理解しました。
まだ実際にコンテナーを使った開発はしたことがありませんが、今後AzureやDockerなどを触る中で、今回学んだ内容を少しずつ深めていけたらと思っています。
次回はAzure App ServiceとAzure Functionsについて、自分なりに整理してみます。