[ストーリで理解]Azure Container Instances とは
「コンテナってなに?仮想マシンじゃダメなの?」
[おてて動かそう]のAzure Container Instances入門
会議室の窓から差し込む陽光が、美咲のパソコン画面に反射していた。IT部門に異動して1ヶ月が経ち、少しずつクラウドの知識が身についてきた彼女だが、今日はまた新しい用語で頭を悩ませていた。
「コンテナって何なんですか?仮想マシンとどう違うんですか?」
その質問を聞いていた田中がコーヒーカップを置きながら振り向いた。
「おっ、コンテナに興味あるっすね!簡単に言うと、アプリケーションとその動作環境をまとめてパッケージ化したものっす。仮想マシンよりも軽量で、起動が早いっていう特徴があるんすよ」
「パッケージ…ですか?お弁当箱みたいな感じですか?」
その例えを聞いて、田中が笑顔で拍手した。
「その例え、めっちゃわかりやすいっす!まさにお弁当箱っすね。おかずと一緒にちゃんと箸も入ってるから、どこでも同じように食べられるっていう。コンテナもアプリと必要な環境が全部入ってるから、どの環境でも同じように動くんすよ」
そこに隼人が加わった。「美咲さん、Azure Container Instancesについて調べているのか」
「はい、ドキュメントを読んでいたんですが、ちょっと難しくて…」
「Azure Container Instancesは、Azureで最も簡単にコンテナーを実行できるサービスだ。仮想マシンを管理せずに、数秒でコンテナーを起動できる」隼人は端的に説明した。
コンテナの特徴とメリット
「でも、なんで仮想マシンじゃなくて、コンテナを使うんですか?」美咲の素朴な疑問に、田中が応える。
「仮想マシンは起動に時間がかかるっすけど、コンテナは数秒で立ち上がるんす。しかも、必要なリソースだけ使うから無駄がないっす」
隼人がホワイトボードに図を描きながら補足する。「仮想マシンはOSから含めて仮想化するが、コンテナはOSのカーネルを共有して、アプリケーション層だけを分離する。だから軽量で高速だ」
美咲はメモを取りながら、「Azure Container Instancesの特徴ってどんなものがあるんですか?」と尋ねた。
「大きく分けて次のような特徴があるな」隼人はホワイトボードに箇条書きしていく。
- 高速なスタートアップ時間 – 数秒でコンテナ開始
- コンテナーアクセス – IPアドレスとFQDNで直接公開
- セキュリティ – ハイパーバイザーレベルの分離
- カスタムサイズ – 必要なCPUとメモリを柔軟に指定
- ストレージ – Azure Filesでの永続ストレージ対応
「特に、秒単位で課金されるから、使った分だけ支払えばいいんだ」
「そんなに早く起動するんですね!」美咲は驚いた。「じゃあ、どうやって使うんですか?」
コンテナの実用性と種類
「Docker Hubやプライベートレジストリからイメージを取り込んで実行するんだ」隼人が説明する。
「イメージ?それって写真とかですか?」美咲が首を傾げる。
田中が笑いながら「いや、ここでいうイメージはアプリとその環境をパッケージ化したものっす。さっきのお弁当箱の例えでいうと、お弁当の中身が詰まった状態のテンプレートみたいなものっす」
「なるほど!それを取り込んで実行するんですね」
隼人が続ける。「Container Instancesでは、標準、機密、スポットの3種類のコンテナーがサポートされている。また、単一インスタンスやNGroupsを使ったマルチインスタンス、さらにはAKSの仮想ノードとしても使える」
「ちょっと難しいですね…」と美咲がつぶやく。
「機密コンテナーは高度なセキュリティが必要なワークロード向けで、スポットコンテナーは割引価格で使える代わりに、Azureに余剰容量がないときは中断されるかもしれないんす」と田中がフォロー。
コンテナグループとネットワーク
「あと、コンテナグループという概念も重要だ」隼人がホワイトボードに新しい図を描き始める。「複数のコンテナーを同じホスト、ネットワーク、ストレージで実行できる。メインアプリとサポート用コンテナーを一緒に動かせるんだ」
「例えば、Webアプリとログ記録用のコンテナーを同時に動かすとかっすね」田中が具体例を挙げる。
「ネットワークも柔軟で、仮想ネットワークにデプロイすれば、オンプレミスのシステムとも安全に通信できる」隼人が説明を続ける。
「それじゃあ、既存のシステムとも連携できるんですね!」美咲が理解を示す。
「そうっす!しかも可用性ゾーンもサポートしてるから、障害対策もバッチリっす」
セキュリティとアイデンティティ
「セキュリティ面はどうなんですか?」美咲が質問する。
隼人が答える。「Container Instancesは、ハイパーバイザーレベルのセキュリティを提供している。また、マネージドIDもサポートしていて、コード内に資格情報を埋め込まなくてもMicrosoft Entraサービスに対して認証できる」
「マネージドIDって何ですか?」
「簡単に言うと、コンテナー自身にIDを割り当てて、パスワードなしで他のサービスと安全に通信できるようにする仕組みっす」田中が説明する。「例えば、コンテナーがAzure Storageにアクセスするとき、ユーザー名とパスワードをコードに書かなくても済むんすよ」
「なるほど!セキュリティ的にもいいんですね」
注意点と制限事項
「でも、使う上で気をつけることもあるな」隼人がホワイトボードを消して、新たに箇条書きしていく。
- コンテナーイメージは15GB以下に収める必要がある
- コンテナーグループが再起動されるとIPアドレスが変わる可能性がある
- 一部のポートはサービス機能用に予約されている
- プラットフォームのメンテナンスで再起動されることがある
- 特権コンテナー操作は許可されていない
「15GBってかなり大きいですね」美咲がコメントする。
「通常のアプリケーションなら十分な大きさっす。ただ、IPが変わることがあるから、本番環境では静的IPを別途用意したほうがいいっすね」田中がアドバイスする。
【まとめ】Azure Container Instancesのポイント
- Azure Container Instancesは、仮想マシンを管理せずに最も簡単にコンテナーを実行できるサービス
- コンテナーはアプリケーションとその動作環境をパッケージ化したもので、仮想マシンより軽量で高速
- 数秒で起動し、秒単位で課金されるため、コスト効率が高い
- 標準、機密、スポットの3種類のコンテナーに対応
- コンテナーグループで複数のコンテナーを同じ環境で実行可能
- 仮想ネットワークのデプロイ、マネージドID、永続ストレージなどをサポート
- イメージサイズの制限(15GB)やIPアドレス変更などの制限事項あり
「なるほど!コンテナーのメリットがよくわかりました。小さなアプリケーションをサクッと動かすなら、仮想マシンよりコンテナーの方がいいんですね!」美咲が満面の笑顔で言った。
「そのとおりだ」隼人がうなずく。「小規模なアプリや、スケーラビリティが必要なサービスには特に有効だ」
「次はぜひ実際に動かしてみたいっす!」田中が笑顔で提案した。
美咲も嬉しそうに「はい!やってみたいです!」と返した。
参考
https://learn.microsoft.com/ja-jp/azure/container-instances/container-instances-overview
ディスカッション
コメント一覧
まだ、コメントがありません