エムティーアイ エンジニアブログ

株式会社エムティーアイのエンジニア達による技術ブログ

Azure コンテナプラットフォームについて社内講演会を開催しました!

こんにちは。
アーキテクト見習いの 小池@テックイベント運営エンジニア です。

弊社では技術に関する社内イベントを定期的に開催しております。
(イベント活動についても今度記事を書く!)

先日開催したイベントではスペシャルゲストとして、日本マイクロソフト株式会社の河野信吾様にお越しいただき Microsoft Azure コンテナプラットフォーム について講演していただきました!

許可をいただき、今回の記事ではその内容をレポートとしてご紹介します。

Azure のコンテナプラットフォーム

Azure 上でコンテナを動かすには以下のような選択肢があり、それぞれ特徴があります。

  • Virtual Machines
  • Web App for Containers
    • PaaS 型
  • Azure Container Instgances
    • サーバレス
  • AKS/ACS
    • マネージド Kubernetes
  • ACS Engine
    • フル Kubernetes

通常(従来)は、Virtual Machines を使って Linux に Docker をインストールしてコンテナを使うという方法が一般的です。
しかし、この方法ではスケーラビリティやホスト機のセキュリティ、コストなど運用上の課題が多くあります。
この課題を解決し、ユーザのニーズに合わせられるように Azure はいくつものラインナップを用意してくれているそうです。

AKS (Azure Kubernetes Service)

Kubernetes (k8s)

AKS の前に Kubernetes についてです。
最近よく見かけるキーワードですが、僕は名称以上の知識はありませんでした。

平たく言うと Docker やコンテナを複数のホストでいい感じに管理してくれるオーケストレータで、最近のデファクトスタンダードとなっているそうです。

機能としては、複数台のコンテナホストをクラスタとして管理し、新しいコンテナを配置するときにリソース状況から適切なホストを選択したり、負荷高騰時にオートスケールして負荷分散をしてくれたり、アプリケーションのローリングデプロイができたり、などなど嬉しいものがいっぱいです。

複雑そうな設定も Manifest と呼ばれる YAML ファイル数個程度でできてしまうそうです。
まさに Infrastructure as Code ですね!

そんな Kubernetes ですが、実態はサーバの集合(クラスタ)なので、一般的なクラスタ管理と同様の大変さがあります。

  • マスター(管理サーバ)のインフラ管理、冗長化
    • マスターが止まってしまうと全部機能しなくなってしまう!
  • マスター/ノードの Kubernetes のバージョンアップ
  • クラスタノードの増設、削除
  • 監視、認証情報の管理
  • etc ...

これではせっかくコンテナによる恩恵を受けようとしているのに、運用が大変なことになってしまいます・・・。

AKS

そこで(お待ちかね)Azure が提供しているコンテナプラットフォームが AKS です!

マネージド型の Kubernetes であり以下のような特徴があります。

  • ユーザが運用/監視すべきマスターがない(マスターをサービス化、隠蔽)
  • スムーズなクラスタサイズの変更を実現
  • Kubernetes のバージョンアップを簡単に実行可能

嬉しい響きがいっぱいです!

しかもマネージドサービスについての料金は非課金で、利用したリソース(ノードの VM やストレージ等)に対しての課金のみです。
最近のこういったマネージドサービスは、基本料金や最低料金がかからず使った分だけの課金というのが主流になっていますね。
新しいサービスをとりあえず使ってみようとか、今あるシステムが追加料金無しで簡単管理にできるなら移行しようとか、そういったモチベーションにもつながるので嬉しいです。

ただし! 記事執筆時点(2018/02/21)では プレビュー となっています。
GA になるのが待ち遠しいですね!
(日本リージョンにはいつ来るかな!?)

ACS Engine

Kubernetes のテンプレートを自動的に生成して展開してくれる機能・・・だそうです。
機能的には AKS に似ているけど、OSS (MIT) であることが大きな特徴であると説明してくれました。

AKS はマネージド(かつプレビュー)であり、Kubernetes の機能が制限されているところもあるそうですが、ACS Engine ではすべての機能がユーザの責任のもと使えるそうです。

ACS Engine で試された機能が AKS の方にバックポートされるイメージだそうです。

(もうちょっと勉強せねば・・・)

Web App for Containers

Web App for Containers は Docker コンテナを「完全な PaaS 環境」で動作させることができ、レンタルサーバのようなイメージで使用できるものです。
レンタルサーバではソースファイルを FTP などで上げたりして利用しますが、こちらはコンテナをアップロードして使います。
プラットフォームの運用やセキュリティ対策は Azure さんにおまかせです。

機能は Web App を基本的に踏襲し、スケールアップやオートスケールアウト、デプロイメントスロット (Blue / Green Deployment) などを備えています。

Web App for Containers は HTTP/HTTPS による WEB アプリケーション配信に特化 しているのが特徴です。
また、Kubernetes に比べて学習コストが少なくて済むというのもメリットです。
ただし、大規模なアーキテクチャやスケーリングにはあまり向いていないようなので、このあたりが AKS などとの住み分けポイントになると思います。

コンテナ活用のファーストステップとして採用するにもおすすめだとおっしゃっていました。

Azure Container Instgances (ACI)

ACI はサーバ(コンテナホスト)が不要で、なおかつコマンド1つでコンテナの起動からアプリケーションの公開までやってくれるサービスです。
「サーバレス」コンテナ というなんとも強そうな名前で呼ばれています。

Azure で唯一、秒単位課金のサービスだそうです。

とにかくサーバを意識したくない、早くサービスを公開したいという場合に向いているとのことです。

Azure のアドバンテージ

コンテナを配置するプラットフォームとして Azure をおすすめする理由についてもお話していただきました。

まず、 Azure ならではの周辺ツールが充実している ことが挙げられました。

  • Open Service Broker for Azure
    • Kubernetes から Azure のリソース操作やセットアップするための認証を連携
  • Virtual Kubelet
    • ACI を AKS の管理下に置くオーケストレータ + サーバレスコンテナ
    • 負荷対策用途など AKS の余剰ノードを事前に用意しておく必要がない
  • Log Analytics (Container Monitoring Solution)
  • etc ...

次に、 早い時期からの取り組みと完成度の高いサービスである ことです。
2015年12月に Azure Container Service の提供をいち早く開始した実績や、魅力的なサービスが確かにあります。
今後のサービスにも期待が持てますね。

最後に、 CNCF (Cloud Native Computing Foundation) への早い参画と Deis の買収 実績があります。
Kubernetes などを開発している団体の CNCF のプラチナ会員として参加していたり、パッケージ管理ツールなどを開発している企業などと連携し、コンテナ開発に多く寄与しているそうです。

CNCF が主導する Istio というマイクロサービスのフレームワークも最近注目度が高まっているそうです。
コード変更なしにマイクロサービスに必要な機能を実装でき、負荷分散やカナリアリリース、耐障害性向上、モニタリングなどの機能を提供できるとか!
(「でもプロダクトで使うにはもう少しかな」という河野様のご感想でした)


2018/02/22 修正

現在 CNCF が主導しているのは、Istio で利用している Envoy というメインコンポーネントであって、Istio 自体を主導しているわけではありませんでした。
Projects - Cloud Native Computing Foundation

また、こちらのページに掲載されている Linkerdというソフトウェアは Istio と同様のような位置付けのものだそうですが、 最近、Kubernetes + Linkerd がイギリスの Monzo という銀行でも採用されたとの情報をいただきました。
金融系でも利用されているということですね!

ご指摘と追加情報をくださった河野様に重ねてお礼申し上げます。


感想とまとめ

河野様のスライド資料やご講演内容から抜粋させていただき、Azure のコンテナプラットフォームについてまとめました。
コンテナを簡単に楽に利用できるサービスが充実していますね!

僕の場合、コンテナ技術には興味があるものの担当システムで使う機会がなかったため、これまでしっかりと触れていませんでした。
今回の講演を拝聴し「コンテナを積極的に使ってみよう、使っていこう、使ってかなくてはいけない! 」と気持ちを新たにいたしました(小並感)。
クラウドファーストの次はコンテナファーストでしょうか?

最後に、貴重なお話をしていただいき、当ブログへの掲載についても快諾してくださった河野様に改めて感謝申し上げます。