IDP構築のポイント(2):コンテナオーケストレーション
続いて、コンテナオーケストレーションについて、見ていこう。コンテナオーケストレーションは、「コンフィグレーション・プロビジョニング・可用性・拡張性・セキュリティ・リソース割り当て・負荷分散・ヘルスモニタリング」といった機能により、大規模なコンテナ運用の負荷を大幅に軽減し、アプリケーションの可用性・安定性を向上させる。
コンテナを実行する際には、コンテナオーケストレーションが自動でスケジュールを決め、最適なホストを選定し、コンテナランタイムによってデプロイが行われる。その後のコンテナライフサイクルもコンテナオーケストレーションによって自動化されるが、オーケストレーションツールによって、コンテナランタイムの種類や実行方法、細かい機能には差異があるため、システムやプラットフォームに最適なものを選択する必要がある。
3つの代表的なコンテナオーケストレーションを比較してみよう。
- Docker Swarm:Dockerネイティブなオーケストレーションツール。マネージャーと複数のノードで構成されており、各ノードのDockerデーモンによってコンテナが実行される。他の2つに比べ機能が限定的であるものの、学習コストが低く小規模なシステムで利用されることが多い。
- Apache Mesos:マスターと複数のエージェントデーモンで構成されている。マスターノードにスタンバイを用意しておくと、マスターがダウンしても復旧できるという高い可用性を実現している。コンテナだけでなく、コンテナ化されていないワークロードにも処理を分散できる。柔軟性が高く、ビッグデータの処理やマシンラーニングなどを統合管理するような超大規模なシステムで活用されることが多い。
- Kubernetes:コンテナオーケストレーションのデファクトスタンダード。学習コストが高い一方、機能が豊富で、コミュニティも活発である。AWS・GCP・Azureなどクラウド対応が充実しているが、中身のランタイムには差分があることをプラットフォームエンジニアは押さえておく必要がある。

最後に岡田氏は「開発者中心の組織において、開発者の効率性を向上させ、認知負荷を解消するためには、プラットフォームエンジニアリングという新しいアプローチが求められている。プラットフォームエンジニアリングの実現にはIDPの構築が必要であり、IDPのベースとなるコンテナからアプローチしていくことが有効だ」と語り、セッションを締め括った。