コンテナの外で

Docker とマイクロサービスで、データ センターがより俊敏で経済的に

大企業は、Docker のような新しいコンテナ技術の可能性を模索しています。ジュニパーは、このようなトレンドをデータ センターのイノベーションにおける重要な節目と捉え、クラウドをサービスとして提供している大企業向けに効率性、生産性、俊敏性の大きなメリットを提供しています。

Kubernetes のような関連技術の進化も進み、コンテナ化アプリケーションとマイクロサービス アーキテクチャの組み合わせは、このような企業にとって 2016 年に大きな期待が見込めます。

コンテナとマイクロサービス

コンテナ化アプリケーションの主な目的は、ソフトウェア チームの効率を高め、従業員の連携を容易にしながら、コミュニケーションのオーバーヘッドを削減することです。大企業のアプリケーション、たとえば、ERP や CRM ソフトウェア スイートなどは当初はシンプルなプロジェクトのことがよくあります。ただし、時間が経つとすぐに使いづらくて非効率になり、モノリシックなコード ベースが開発チームの進捗を遅らせます。

この非効率を克服するために、これまでとは違う新しいアプローチによって、アプリケーションをマイクロサービスと呼ばれるバイトサイズの小さなコンポーネントに分割します。マイクロサービス アーキテクチャを採用すると、各アプリケーション コンポーネントのコード ベースが小さくなるため、開発チームの俊敏性と運用の効率性が高まります。

マイクロサービス アーキテクチャを採用すると、各アプリケーション コンポーネントのコード ベースが小さくなるため、開発チームの俊敏性と運用の効率性が高まります。

ソフトウェアは、開発のさまざまな段階を通るときに、開発者の PC からラボやテスト環境に移動する場合があります。物理環境から仮想環境に、最終的には本番環境に移動します。このすべてで、アプリケーションのパフォーマンスに一貫性が必要です。コンテナは、異なるコンピューティング環境でソフトウェアが動作する仕組みに関連した問題に対処します。コンテナを使用すれば、ソフトウェア開発者がアプリケーションのコンポーネントを単一の軽量なパッケージにカプセル化できます。本質的には Linux をベースとしているコンテナは、あるコンピューティング環境から別のコンピューティング環境や仮想環境、物理環境に移しても、一貫した動作を実現します。

DevOps アプローチの一部

マイクロサービスによって IT 部門は DevOps 文化に移行し、開発チームと運用チームがアプリケーションをライフサイクル全体でサポートするために緊密に連携します。コンテナは、開発者とシステム管理者双方にとって最適な DevOps ツールでもあります。コンテナによって解放される開発者は自分の中核技術に集中でき、運用スタッフには柔軟性、データ センターの設置面積縮小、オーバーヘッドの削減というメリットがあります。

コンテナは、それぞれが単一のプロセスに割り当てられた場合に最適に機能します。この理由から、大規模なアプリケーションやソフトウェア プロジェクトにマイクロサービス アーキテクチャを最初に設定する場合に、リソースが多く使用されることがあります。しかし、その見返りは俊敏性です。俊敏性の一部は、数ミリ秒から数秒までのコンテナ導入のスピードに起因します。コンテナ内のアプリケーション ワークロードには、ホスト サーバーの OS カーネルが使用され、スタートアップ プロセスの一環としての OS 取得が不要です。

コンテナによって解放される開発者は自分の中核技術に集中でき、運用スタッフには柔軟性、データ センターの設置面積縮小、オーバーヘッドの削減というメリットがあります。

コンテナ化アプリケーションを使用するもう 1 つの実質的なメリットは、メモリ スペースがほとんど必要ないため、どちらの組織でもデータ センターのスペースと電力の点で効率性を得られることです。VM(仮想マシン)はフル OS とシステム イメージを必要とし、ホスト CPU のオーバーヘッドが増加するのに対し、コンテナは軽量です。コンテナはホスト カーネル OS を共有し、CPU とメモリを VM の場合よりも効率的に使用できるため、コンピューティング コストが低下するうえに、データ センターで必要な電力と設置面積も減少します。

クラスターの管理

コンテナを実行可能な物理マシンや仮想マシンのグループをクラスターと呼びます。クラスターには、何らかの管理が必要です。コンテナ技術が進化したため、企業は OpenShift や、Google によって開発された Kubernetes(Docker とあわせて動作)などのクラスター管理ツールを採用できます。コンテナの実行エンジンとして機能する Docker もまたファイル システムの管理を提供します。

Kubernetes などのクラスター管理ツールは通常、アプリケーション レベルで抽象化を実行します。この抽象化は、pod と呼ばれ、1 つまたは複数のコンテナ、共有ストレージ、コンテナ実行方法のオプションからなる 1 つのグループで構成されます。クラスター内のマシンで pod スケジューリングのアクションを実行すると、Docker がコンテナを実行します。

コンテナ用ネットワークの構築

ネットワークはコンテナ化で重要な役割を果たします。マルチテナント環境に不可欠なニーズの 1 つは、ネットワーク フローのアクセス コントロール機能と監査機能を提供することです。ネットワークによって提供されるアクセス コントロールが、アプリケーションをベースとした認証と許可のメカニズムを補います。これが連携して、異種混合の認証方法に共通のレイヤーを提供します。仮想化ファイアウォールのようなサードパーティー製ソフトウェアを使用している環境や、複数世代のソフトウェア技術を同時に実行している場合によく見られる要件には、この機能が対処します。

ジュニパーはコンテナに大きな可能性があると考え、ファイアウォール機能でセキュリティ保護された、マイクロサービス アーキテクチャとコンテナ化アプケーションを採用する IT 組織が増加すると予想しています。

ネットワークのアクセス コントロールとレイヤー 3~7 のセキュリティを組み合わせた場合、コンテナ化されたワークロードを実行しているクラスターと、既存の OpenStack、ベアメタル サーバーなどの外部環境を網羅する必要があります。このような異種混合の環境で異なる要素をまとめるのが、ネットワークです。

この機能の良い例がジュニパーの Contrail Networking のような技術です。Contrail にはコンテナ エコシステムのマイクロセグメント化機能があり、マルチテナント環境のネットワークをセキュアに分離します。Contrail では、クラスター管理ツールがコンテナおよび VM で実行しているアプリケーション間のさまざまな仮想ネットワークを接続できます。レガシー インフラストラクチャ、あるいはベアメタル サーバーで実行しているデータベースのようなクラスター管理ツール外の要素も接続できます。

コンテナ技術が成熟すると、コンテナ化アプリケーションをサポートするためのネットワーク技術が登場します。アプリケーション コンポーネントと同じスピードで実行可能なコンテナ技術など、このような環境で拡張可能なセキュリティのニーズは増えていくでしょう。

ジュニパーはコンテナに大きな可能性があると考え、ファイアウォール機能でセキュリティ保護された、マイクロサービス アーキテクチャとコンテナ化アプケーションを採用する IT 組織が増加すると予想しています。ジュニパーの使命は、ネットワークをエンドツーエンドで保護しながら、複雑なネットワーク構築の問題を自動化し、この技術の採用に道筋を開く堅牢でオープンなプラットフォームを開発することです。

コンテナ化アプリケーションの詳細と、コンテナ化アプリケーションをサポートするネットワークの構築方法については、この記事のリソースを参照してください。