Uberは、複数のデータセンターとクラウド環境にわたって、Apache MesosからKubernetesへの大規模な移行を無事完了した。ライドシェアの大手であるUberのエンジニアリングチームは、技術ブログ投稿シリーズでその包括的な移行過程を詳細に説明し、数千のマイクロサービスと大規模計算ワークロードの移行における課題、解決策、学んだ教訓を明らかにした。
この移行は、Uberのインフラストラクチャアーキテクチャにおける根本的な変化を表しており、配車サービスからフードデリバリーまで、グローバル市場での数千ものサービスに影響を与える。Apache Mesosに基づく従来のコンピューティングプラットフォームは、急成長期にUberにとって有効だったが、組織がよりクラウドネイティブなアプローチに進化するにつれて制限が生じた。
「この移行は単なる技術的な変更ではなく、コンピューティングインフラストラクチャの運用方法の完全な再構築だった」とUberのエンジニアリングチームは説明した。プロジェクトは数年にわたり、重要なサービスのゼロダウンタイム移行を確保するために多数のエンジニアリングチーム間で慎重な調整が必要だった。
UberのKubernetes移行へのアプローチは、サービスの信頼性を移行速度よりも優先する慎重でリスク回避的な方法だった。エンジニアリングチームは、既存のMesosベースのサービスとの完全な後方互換性を維持しながら、段階的なサービス移行を可能にする高度な移行フレームワークを開発した。
移行戦略は以下の主要な原則に基づいていた。
- 移行中のサービスの信頼性の維持
- 既存のツールとワークフローとのシームレスな統合の確保
- 新しいKubernetes環境における堅牢な監視および可観測性機能の確立
チームはデュアルスタックアプローチを実施し、移行期間中にMesosとKubernetesの両方でサービスを同時に実行してリスクを最小化した。
もっとも重要な技術的課題の一つは、Uberの広範な内部ツールとプラットフォームをKubernetesで動作するように適応させることだった。これには、Mesosエコシステムと緊密に統合されていたデプロイメントパイプライン、監視システム、サービスディスカバリメカニズムの再実装が含まれていた。
UberのエコシステムをMesosからKubernetesへ移行
標準的なマイクロサービスの移行を超えて、Uberは機械学習モデルのトレーニング、データ処理パイプライン、分析ワークロードなどの重要なビジネス機能を支える大規模なコンピューティングワークロードの移行という複雑な課題に直面した。これらのコンピューティング集約型アプリケーションは、そのリソース要件とパフォーマンスの感度のために独自の課題を提示した。
エンジニアリングチームは、Kubernetesでこれらのワークロードを処理するための専門的なソリューションを開発した。例えば、DSWセッションをKubernetesのカスタムリソース定義(CRD)としてモデル化し、ネットワーク構成を最適化し、スケジューリング能力を強化した。Uberのエンジニアはまた、Federatorを使用して高度なリソース割り当てメカニズムを実装した。Federatorは、Kubernetesバッチクラスターの抽象化を提供するクラスターフェデレーションレイヤーである。これにより、大規模バッチジョブがリアルタイムサービスと効率的に共存し、ユーザー向けアプリケーションに影響を与えることなく実行可能だった。
フェデレーションを使用しない場合と使用する場合のKubernetesクラスタの使用状況
移行への道のりは重大な技術的障害なしには進まなかった。Uberのエンジニアリングチームは、ネットワークの複雑さ、スケールでのリソース管理、異なるインフラストラクチャパラダイム間でのパフォーマンスベンチマークの維持に関連する課題に直面した。同社のグローバル展開はさらなる複雑さをもたらし、複数のリージョンとクラウドプロバイダーで一貫して機能するソリューションが必要だった。
特に厳しい課題の一つは、新しいプラットフォームへのサービス移行中にUberの厳しいレイテンシ要件を維持することだった。チームは包括的なパフォーマンステストと段階的な展開戦略を実施し、移行プロセス全体でサービス品質が一貫して維持されるようにした。
エンジニアリングチームはまた、数百人のエンジニアにKubernetesの概念を訓練し、クラウドネイティブなプラクティスに合わせて開発ワークフローを更新するなど、文化的および運用上の課題にも対処する必要があった。
移行の完了は、多方面で大きな利益をもたらした。Uberは運用効率の向上、開発者の生産性の向上、インフラ全体でのリソース利用の改善を報告している。Kubernetesへの移行は、クラウドネイティブ技術とプラクティスをより効果的に活用するための基盤を提供し、迅速なイノベーションと柔軟な展開戦略を可能にした。
新しいプラットフォームは拡張性の向上を提供し、Uberがトラフィックの急増や季節的な需要の変動をより効率的に処理可能にした。さらに、移行はUberのインフラ管理を簡素化し、運用の負担を軽減し、チームがプラットフォームの維持ではなく製品開発に集中できる。
他の大企業もコアインフラをKubernetesに移行している。Figmaはコアサービスを12か月でKubernetesに移行し、CERNはCMSWEBクラスターをKubernetesに移行した。これらの例とUberの成功したKubernetes移行は、同様の移行を検討している他の大規模組織にとって貴重なケーススタディとなる。同社がKubernetes移行の過程を詳細に記録したドキュメントは特に大規模で運用している組織にとって、エンタープライズKubernetes採用のベストプラクティスに関する洞察を提供している。