なぜコンテナオーケストレーションが必要なのか
これまでのITシステムに対するニーズは、既存ビジネスや企業内のバックオフィス業務を効率化するところにあった。しかし昨今では、新しいビジネスを生み出したり、新しいビジネスチャンスを見つけるために、ITシステムを積極的に活用していこうという機運へと移り変わっている。これを別の角度から見ると、かつては数年単位でアップデートすればよかったシステムから、スマートフォン向けアプリのように、12ヶ月未満という短いライフサイクルで、頻繁にアップデートするアプリケーションが求められるようになったことを意味している。
このような高頻度リリースを実現するための開発トレンドとして、「マイクロサービスアーキテクチャ」や「継続的インテグレーション/デリバリー」(以下、CI/CD)といったものがある。大規模なシステムを疎結合な複数のサービスの組み合わせで実現するマイクロサービスアーキテクチャは、変更の影響範囲をサービス単位に止められるため、高頻度のリリースに適する設計方式である。
他方のCI/CDは、ソースコードの変更からテスト、本番環境へのリリースまでの開発プロセスを極力自動化し、アプリの品質の安定と高頻度リリースを実現する取り組みだ。最近とみに普及の速度が高まっているアジャイル開発では、欠くべからざる環境である。
マイクロサービスアーキテクチャ、CI/CDのいずれにも、昨今注目を浴びている「コンテナ」が寄与するものは大きい。マイクロサービスアーキテクチャでは、多くの細かいアプリケーションを動かすために、コンテナを用いて独立した仮想的環境をコンパクトに実現することで、その独立性と高集約性のメリットを得ることができる。CI/CDにおいても、アプリケーションの設定情報などを含めた実行環境をコンテナとしてパッケージ化し、同じコンテナを使い回すことで、テスト環境の構築を容易に自動化することができる。この手法であれば、人手によるミスの発生も防ぐこともでき、より円滑に高頻度のリリースサイクルを回すことが可能となるのだ。
こうして高頻度リリースの需要の高まりとともに、コンテナの活用が広まってきたが、並行して、コンテナを大量に管理・運用するためのオペレーションが複雑化するという課題が顕在化してしてきた。「3桁以上デプロイしたコンテナ同士を連携し、負荷に応じてスケールさせる」こともよくあるケースだという。このような環境を、物理サーバーや従来型の仮想化と同じような方法で運用するのは、とてもではないが無理である。
このようなコンテナの大量デプロイやスケーリングなどを自動管理するために登場したのが「コンテナオーケストレーションツール」である。コンテナオーケストレーションツールは、物理的あるいは仮想マシンで作った多くのハードウェアを、1つの大きなリソースのプールであると抽象化して見せてくれる。このプールに対し、任意のアプリケーションのコンテナに動くよう指示を出せば、どこかのハードウェアでコンテナが立ち上がって動き出す。アプリケーションを動かすことで負荷が増えると、自動的に適切なハードウェアを選択して、うまく冗長化してコンテナを分散してくれる。他にもアプリケーションをアップデートしたいときには、そのように指示を出せば自動的にローリングアップデートをしてくれるし、何かしらの障害によって一部のコンテナが落ちてしまったとしても、それを検知して自動で立ち上げてくれる。
では、コンテナオーケストレーションツールとして、どれを選ぶのが良いのだろうか。
Kubernetesの優位性とは
日本オラクル クラウド・テクノロジー事業統括 セールスコンサルタントの早川 博氏が“コンテナオーケストレーションツールのデファクトスタンダード”というのが「Kubernetes」である。Kubernetesはグーグルが2014年に発表したツールで、現在はCloud Native Computing Foundationに移管されている。早川氏はこのKubernetesについて、「他のコンテナオーケストレーションツールとは異なる点が2つある」と指摘する。
一つは、様々なOSSと組み合わせることにより、柔軟に機能拡張することが可能である点だ。Kubernetesの能力以上に、もっとリッチな監視の仕組みが欲しいとか、多くのコンテナから出力されるログを分析したいといったときにも、多くのデベロッパーが実装した機能を活用することができるほか、Kubernetesの適用領域を拡大して機械学習プラットフォームとして使ったり、分散ストレージとしてKubernetesを使うといったことも可能となっている。
もう一つは、Kubernetesの利用を始める上で、幅広い選択肢がある点だ。Kubernetesがデファクトスタンダードの地位を勝ち得た大きな要因として、Kubernetesクラスターを構築・運用管理の省力化を図るためのマネージドサービスを、グーグルやマイクロソフト、AWSといった主要クラウドベンダーが提供していることが挙げられる。あるいは自由にカスタマイズしたりエッジな要件に対応したい場合には、Kubernetes構築ツールを利用してインストールしたり、フルスクラッチでインストールしたりするなど、要件に応じて最適な環境を手に入れることができるのだ。
オラクルのKubernetesの優位性
このように昨今のクラウドアプリケーションの実行・運用管理に欠かせないKubernetesを活用するにあたり、“オラクルが提供するKubernetes”には優位性が3つある。
1つめは、要件に応じて、構築・運用管理の省力化にフォーカスしたマネージドKubernetesサービスである「Oracle Cloud Infrastructure」(以下、OCI)と、カスタマイズ性が高くGPUによる機械学習などのエッジな要件にも適用できる「Terraformインストーラ for OCI」という、2通りのデプロイ方式から選択することができる点だ。
2つめは、高性能次世代IaaSがもたらすエンタープライズグレードのハイパフォーマンスと可用性である。使用しているハードウェアは高速SSDを搭載したベアメタルサーバー。さらに、地理的に離れたデータセンターで稼働するこのハードウェア3つを使いAvailability Domains(以下、AD)を構成している。そのため、いずれかのハードウェアが落ちてしまったとしても、Kubernetesクラスターは残りのAD上のノードを使って機能を維持し続ける。
このようなエンタープライズで使用するクラウドに必須の可用性を、OCIがいかに実現しているかについては、本イベントの午前中に行われた基調講演で詳しく紹介された。また、OCIは可用性のほかにも、セキュア、多目的、常に高速、コスト削減を予測できる、総合的な管理、Oracleに最適化などのアドバンテージを持つという。
3つめは、Oracle Cloudの幅広いサービス群とKubernetesを組み合わせることによって、様々なユースケースに対応できる点が挙げられる。「クラウドでビジネスに合わせたシステムを構築しようとすると、非常にいろいろな構成要素を考えなければなりません。その場合、当然Kubernetesだけでは完結しません。オラクルの得意領域でもあるデータベースをはじめとする様々なサービス群を組み合わせることで、多様なニーズに対応できるシステムを構築できます」(早川氏)
AI開発におけるKubernetes活用事例
このような特長をもつオラクルのKuberenetesを活用し、今秋リリース予定のAIプラットフォーム「Gauss Foundation Platform」(以下、GFP)を構築しているのがGAUSS社だ。昨今のAI開発サイクルは、データ取得→アノテーション→学習→デプロイ→再学習となっているという。しかし、「ここには3つの課題があります」と株式会社GAUSS AIプラットフォーム部 部長の安田大地氏は語る。
「1つめはデータ取得について。お客様がデータを持っていればいいが、データがない場合には、データを取得するところから始めなければなりません。2つめはアノテーションのところで、教師データの作成にコストがかかってしまいます。そして3つめは再学習。継続的な学習にコストがかかりますし、一連の流れを手動で実行していると、お客様が増えてくると手が回らなくなってしまいます」(安田氏)
そこでGAUSSは、データの取得にやはり今話題の自動化ツール「RPA」を利用。教師データの作成にはアノテーションツールを使い、再学習では、継続的インテグレーション(CI)に活路を見出した。
これで課題は解消と言いたいところだったが、別の悩みも出てきてしまった。AWS上で運用していたDockerの本番運用において、高可用性、データ永続化、コンテナ管理、スケーリング、モニタリング、イメージ管理、障害対応など、数々の課題が浮き彫りになったのだ。
これらの課題を簡単に解決したのが、Oracle Cloudへの移行とKuberenetesの採用だった。中でも効果を発揮したのが、スケーリングと障害対応のところだ。スケーリングにおいては、CPUやメモリの使用量に応じて、リソースの最適化を図ることができるようになった。障害対応では、KubernetesのReplicaSetによって、稼働コンテナ数が保証されているため、Dockerがもし落ちたとしても、自動的に他のコンテナが立ち上がるようになった。加えて、ローリングアップデートによって、アプリコンテナが動かなくなっても、すぐに戻すことができるようになったのだ。
「そもそもKubernetesは難しい。インフラエンジニアとしてのスキルには自信があったものの、構築に1ヶ月半くらいかかってしまいました。しかしOKE(Oracle Container Engine for Kubernetes)を使うと、たった30分で立ち上げることができ、ショックを受けました。そのくらい素晴らしい環境になっています。これからもオラクルさんとGAUSSでAIの開発をもっとシンプルに、もっと簡単に提供していく予定です」(安田氏)
安田氏の言葉のとおり、Kuberenetesを扱うのはやさしくない。というより、Kuberenetesが扱っている対象システムが複雑で難しい。エンジニアである以上、新しいシステムアーキテクチャを理解していく努力は避けられない。しかし、ツールの力を借りて運用するのもエンジニアのスキルである。どれが最適かは、実際にトライしてみるのが一番だろう。その意味でも、取っつきやすいOKEは選択肢に入れておきたい。
ダウンロードできます - Oracle Cloud Platform各種資料
「Oracle Cloud Platform ダウンロード資料集」サイトでは、IaaS、PaaSの50を超えるサービス群を統合したOracle Cloud Platformに関する製品カタログ、事例集、調査レポート、ホワイトペーパー、各種ドキュメントなどを配布しています。ぜひお気軽にご覧ください。