Uber、マイクロサービスをKubernetesとMesosを実行するマルチクラウドプラットフォームに移行

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

タイトル:プロフェッショナルソフトウェア開発における知識とイノベーションの普及を促進する

タグ:ソフトウェア開発、マイクロサービス、クラウドマイグレーション、インフラストラクチャ、Uber

この記事では、Uberがマイクロサービスを新しいマルチクラウドプラットフォームに移行する過程について説明しています。Uberは、自社のコンピューティングフットプリントの大部分をクラウドに移行する準備として、多くのコンテナ化されたマイクロサービスをµDeployからUpという新しいプラットフォームに移行しました。

Uberは、2014年に単一のアプリケーションとして始まりましたが、成長に伴いマイクロサービスアーキテクチャに移行しました。Uberは、スケールでのアプリケーションサービスのデプロイを標準化するためにµDeployを作成しました。この移行により、ホストの管理と配置の側面は抽象化されましたが、サービスの管理と配置は依然として非常に手動的であり、サービスエンジニアが特定のリージョンの特定のゾーン(物理データセンター)でサービスを実行するかどうかを決定する必要がありました。

UberのシニアスタッフエンジニアであるMathias SchwarzとエンジニアリングマネージャーであるAndrew Neverovは、Uberがエンジニアリングチームをインフラストラクチャから完全に分離することを決定した理由について説明しています。

Uberは、オンプレミスのデータセンターを運営しているため、チップの不足やサプライチェーンの問題により、長いリードタイムを経験しました。2023年2月13日、Uberはサプライチェーンの問題に対するリスクを分散し、減少させるためにOracleとGoogleと提携しました。この戦略を実行するには、ビジネスを支える数百のさまざまなサービスに取り組むUberの数千人のエンジニアに対して、基礎となるインフラストラクチャを抽象化するためのシステムが必要でした。

2018年、Uberのプラットフォームチームは、サービスの配置とインフラストラクチャレベルのマイグレーションを自動化するための新しいマルチクラウド、マルチテナントのフェデレーション制御プレーンの開発を開始しました。新しいプラットフォームであるUpは、サービスエンジニアがインフラストラクチャシステムと対話するための主要なツールになることを意図していました。また、ベストプラクティスを管理し、安全なコードの展開を推進するためにも使用されます。

Upプラットフォームは、ユーザーのインタラクションとシステムのメンテナンス(ワークロード管理やスケーリングなど)を担当するエクスペリエンスレイヤーと、エクスペリエンスレイヤーコンポーネントが使用する共通の抽象化と概念モデルを提供するプラットフォームレイヤー、およびホストマシンとコンピュートキャパシティの能力に基づいてサービスの配置制約を表現するために使用されるフェデレーションレイヤーから構成されています。変更管理コンポーネントは、ヘルスモニタリングによってサポートされる段階的な展開機能を提供します。最下層には、実際のクラスターインスタンスがあり、Peleton(Uber独自のオープンソースのコンテナオーケストレーションプラットフォームであり、Apache Mesosの上に構築されています)とKubernetesを使用しています。

クラウドへの移行に備えて、Uberは2年間かけてすべてのステートレスなマイクロサービスを移植可能にする作業を行いました。これにより、サービスエンジニアの関与なしでゾーンとリージョンでの配置を中央で管理できるようになりました。チームは既存のツールを使用して、サービスをゾーン間で移動できるようにしました。まず、サービスを元のゾーンに戻すことで移植性の問題を解決しましたが、解決した後は、サービスを定期的に移動して移植性を検証し、逆行を防ぎました。

移植可能になったマイクロサービスは、ほとんど自動的にUpに移行され、オートスケーリングと効率化の取り組みにより、大幅な費用削減が実現され、サービスチームのメンテナンス負荷も大幅に軽減されました。UberのほとんどのマイクロサービスプラットフォームがUpによって管理されるようになったことで、サービスチームにほとんど影響を与えることなくクラウドへの移行を開始することができます。また、自動化された継続的なデリバリーと展開の安全性にも注力したいと考えています。

この記事は、Uberがマイクロサービスの移行とクラウドマイグレーションをどのように実現したかについて興味深い洞察を提供しています。Uberの取り組みは、ソフトウェア開発業界における知識とイノベーションの普及を促進するための良い例となっています。

参考文献:

注意

コメントする