小さなサービスを作り、軽量な仕組みを構築し、配置を独立させ、拡張性と移植性を確保するためにマイクロサービスアーキテクチャを採用する場合、Erhan Ekici氏が言うには、Dockerのようなコンテナ技術が、配置や性能、分離の管理、ライフサイクルを考える上で理想的な環境だと考えている。
IBMで働いている氏は、コンテナ技術を仮想マシンの中核コンポーネントとOSの分離サービスを持つ軽量な実行環境として考えている。パッケージングを簡単にし、サービスの実行をスムーズにするよう設計されているのだ。
コンテナやDockerが検討に値する理由として、氏は次を挙げている。
- 他のプラットフォームに移植できるコンテナを使うことで、アプリケーションとすべての依存物をコンテナ内に乗せ、移植性を高めることができる。
- コンテナをアプリケーションと依存物だけで構成することで、リソースの使用を効率的にする。
- コンテナは仮想化技術を使わずに、厳密にリソースを管理できる。
- Dockerをリーダーとするコンテナ技術は新しい技術であり、多くの大企業がDockerとパートナーシップを組んでいる。
GigaSpacesのプロダクトチームのリーダーであるUri Cohen氏はDockerをプロセスやサービスをコンテナで分離するので、マイクロサービスに最適な仕組みだと言う。ひとつのサービスやプロセスを意図的にコンテナ化することで、サービスの更新と管理が容易になる。それゆえ、複雑なシナリオを管理するための開発フレームワークになるのは不思議ではない。
Uri氏が挙げる例は、Kubernetesだ。KubernetesはDockerの機能を拡張したマイクロサービスのために設計されたオープンソースプロジェクトだ。同じタイプの複数のDockerのコンテナを管理、配置する。しかし、一般的なシナリオは複数の層で構成される仕組みを管理することであり、Kubernetesで実現するのは難しい。Uriが考える機能のギャップはTOSCAで埋められる。TOSCAはもっと複雑な管理で使われる。
Adrian Cockcroft氏はDockerカンファレンスの基調講演で、Dockerを標準化された移植可能なコンテナとして紹介した。また、次世代のアプリケーションの管理機能についても話した。