コンテナオーケストレーション
コンテナのデプロイ、スケーリング、ネットワーキングを自動管理するプラットフォーム
コンテナオーケストレーションとは
コンテナオーケストレーションは、コンテナのデプロイ、スケーリング、ネットワーキング、ヘルスチェックを自動管理するプラットフォームである。Kubernetes と Amazon ECS が代表例。
なぜ必要か
コンテナが 1 つなら docker run で十分だが、本番環境では数十〜数百のコンテナが稼働する。どのサーバーに配置するか、障害時にどう再起動するか、負荷に応じてどうスケールするかを手動で管理するのは現実的でない。オーケストレーターがこれらを自動化する。
コンテナ 1 つ: docker run で十分
コンテナ 100 個:
- どのサーバーに配置するか
- 障害時にどう再起動するか
- スケールアウトをどう制御するか
- コンテナ間の通信をどう管理するか
→ オーケストレーターが自動管理
ECS vs EKS vs Lambda
ECS と EKS vs Lambda の違いを以下にまとめる。
| 観点 | ECS (Fargate) | EKS | Lambda |
|---|---|---|---|
| 管理負荷 | 低い | 中〜高 | 最低 |
| スケーリング | Auto Scaling | HPA | 自動 |
| コスト (アイドル) | タスク数に比例 | クラスタ費用 | ゼロ |
| 実行時間 | 無制限 | 無制限 | 最大 15 分 |
| 用途 | 長時間処理、Web サーバー | K8s エコシステム | イベント駆動 |
オーケストレーターの機能
オーケストレーターはコンテナをどのノードに配置するかのスケジューリング、負荷に応じたコンテナ数の増減 (スケーリング)、不健全なコンテナの自動再起動 (ヘルスチェック)、コンテナ間の名前解決 (サービスディスカバリ)、ダウンタイムなしのローリングアップデート、環境変数の安全な注入 (シークレット管理) を担う。
Lambda vs コンテナの選択基準
Lambda とコンテナの選択基準の違いを以下にまとめる。
| ケース | 推奨 |
|---|---|
| イベント駆動、短時間処理 | Lambda |
| 長時間処理 (> 15 分) | ECS Fargate |
| 既存のコンテナアプリ | ECS Fargate |
| K8s エコシステムが必要 | EKS |
| コストゼロを目指す | Lambda |
実践的な知識は関連書籍でも得られる。
この記事は役に立ちましたか?
関連用語
ECS
AWS のマネージドコンテナオーケストレーションサービスで、Docker コンテナを実行・管理する
Docker
アプリケーションをコンテナとしてパッケージ化し、どの環境でも同じように実行できるプラットフォーム
Helm
Kubernetes のパッケージマネージャーで、アプリケーションのデプロイをテンプレート化して管理する
Init コンテナ
Kubernetes でメインコンテナの起動前に初期化処理を実行する特殊なコンテナ
コンテナ
アプリケーションとその依存関係をパッケージ化し、環境に依存しない一貫した実行環境を提供する仮想化技術
Kubernetes
コンテナのデプロイ、スケーリング、管理を自動化するオープンソースのオーケストレーションプラットフォーム
関連する記事
OS・低レイヤー本ガイド - コンピュータの仕組みを学ぶ技術書の選び方
OS、コンパイラ、ネットワークなど低レイヤーを学べる技術書の 4 ジャンルと、どこから始めるべきかの指針、賞味期限の見極め方を紹介します。
障害対応の夜に思い出す、あの本の 1 ページ
本番障害の緊迫した場面で、過去に読んだ技術書の知識が助けてくれた経験はありませんか。「いつか役立つ」知識が「今この瞬間」に変わる読書の価値を考えます。
バグを生むのは知識不足ではなく想像力不足である
バグの多くは、コードを書いた時点で「こういうケースもありうる」と想像できなかったことが原因です。想像力を鍛える読書法と、エッジケースへの感度を高める方法を解説します。