基調講演:The Cloud Native Journey @Apple - Alena Prokharchyk、Apple ソフトウェアエンジニア
このページのタイトル、字幕、要約、読書メモは保存済みの AI 翻訳です。誤りが含まれる場合があります。タイムスタンプは原文と同じです。原文の字幕を開き、元の動画と照合できます。
Appleの2020 Kubernetes移行に関する講演:名前空間ベースのアクセス、共有容量、プラットフォームの分離、そして導入に伴う組織的な取り組み。
文字起こしの出典: Vidleafによる自動音声認識(誤りを含む可能性があります)。AIによる句読点の付加はVidleafによるもの。読み上げテキストには名前の修正を反映済み。タイムスタンプのアンカーは保持されています。元の文字起こしは以下でご覧いただけます。
AI生成の要約
Alena Prokharchykは、Appleが社内コンテナプラットフォームからKubernetesへ移行した経緯を説明します。この講演では、柔軟でコミュニティに支えられたシステムの魅力を説明する一方で、学習曲線の急峻さや既存機能の再評価の必要性も認めています。プラットフォームへのアクセス、容量管理、分離、そして開発者と運用チームの異なるニーズを扱います。後半では、スケーリング、可観測性、開発者の生産性、オープンソースへの参加について議論します。この移行は組織的な物語でもあります。セキュリティ、リソース、信頼性に関する責任が、技術スタックとともに変化するのです。リンクされた章では、講演で説明された具体的な選択とトレードオフが保持されています。
要点
- [1:37] Kubernetesは、拡張可能なコンポーネントとオープンなコミュニティを備えた柔軟なプラットフォームとして提示されています。
- [5:54] 共有インフラストラクチャには、意図的な容量管理とテナント間の分離が必要です。
- [10:19] プラットフォームの導入は、基盤となる技術だけでなく、チームの責任も変化させます。
トランスクリプトから生成。リンクされた箇所は元の動画と照合してください。2026-10-20にVidleafがレビュー。概要と要点は2026-10-21にVidleafがレビュー。
全体概要
約一年前にKubernetesとクラウドネイティブプロジェクトに携わるためにAppleに入社したソフトウェアエンジニアのAlenaが、この役割に惹かれた理由を説明し、AppleがMesosと社内で構築したコンテナオーケストレーターJarvisからKubernetesへと至った道のりをたどります。Kubernetesは、プラグインベースのストレージ、ランタイム、ネットワークプロバイダー、CRDとカスタムコントローラー、そして透明性のあるコミュニティを備えた、より汎用的で柔軟なプラットフォームとして選ばれました。この講演は、急峻な学習曲線、以前に構築した機能をクラウドネイティブのベストプラクティスに照らして再評価すること、トレーニングリソースとサポートへの投資といったトレードオフについて率直に語っています。開発者、アプリケーションSRE、ハードウェアQAエンジニア、CPUとGPUを使用する機械学習およびバッチエンジニア、そしてFinanceを含むプラットフォームのユーザーに加え、クラスタ・アズ・ア・サービスとネームスペース・アズ・ア・サービスのアクセスモデル(後者が今日の主要なモデル)を取り上げ、さらに集中容量管理、マルチテナントのプライバシーとセキュリティ、CRD管理、クラウドネイティブツール、オープンソースのKubernetes PerfTest Cluster Loaderによるスケーリング、SIGスケジューリングへの貢献、多層防御のためのマイクロVMについて説明します。Appleの規模では、同社はセキュリティ管理コスト、リソースの非効率性、運用負担のためにCluster as a Serviceから離れ、共有Kubernetesインフラストラクチャ上でセルフサービスと仮想化されたコントロールプレーンおよびデータプレーンを提供する仮想クラスタなどの代替案の検討を始めました。マイクロVMにより、複数の信頼できないテナントがノードとコントロールプレーンを共有でき、二層の分離が実現します。フットプリントの拡大とデータセンター間の分散により、マルチクラスタのワークロード管理への需要が高まっており、チームはAPIプロキシソリューションを研究し、高いセキュリティと低いリソース使用率を維持しながらプラットフォームの複雑さを軽減するために、サーバーサイドWebAssembly上に構築されたFunction-as-a-Serviceソリューションに投資しています。可観測性を最優先事項とし、CI/CDと開発者ツールを通じてエンドユーザーの生産性を追求しています。大規模な採用は組織の変化をもたらしました。セキュリティチームは拡大し、共有責任モデルを維持するためにアプリケーションとKubernetesプラットフォームのセキュリティが分離され、容量計画は財務と連携する専任のリソース管理チームとともに再考され、SREチームはエンジニアリングへとシフトし、プラットフォームのアーキテクチャ設計においてより強い発言権を持つようになりました。さらに、チーム横断的な技術レビューボード、専任のインナーソースおよびオープンソースチーム、コード、CNCF TOCボード、Kubernetesリリースチーム、ドキュメント、イシューサポートを通じたコミュニティへの関与が協働を促進しています。この移行は最終的に、技術スタックだけでなく、関わる人々をも変えるのです。
タイムスタンプ付きの章の要約
クラウド規模に関するAppleのエンジニア
- [0:18] AlenaはAppleで働いています。
- [0:21] 彼女は約一年前にKubernetesとクラウドネイティブプロジェクトのソフトウェアエンジニアとして入社しました。
- [0:21] オープンソースコミュニティの多くの人々が、彼女がこの仕事のどこに最も惹かれたのかを尋ねました。
- [0:34] 彼女の答えは、クラウドインフラストラクチャの規模と、そこで実行される多様なアプリケーションです。
- [0:41] 彼女は以前、主にKubernetesクラスタのプロビジョニングに焦点を当てていました。
- [0:41] アプリケーションとエンドユーザーの側から物事を見ることで、円を完成させることができると考えました。
AppleのMesosの歴史とプラットフォームの統合
- [0:53] チームや会社の歴史を知ることは、現在の決定とトレードオフを説明するのに役立ちます。
- [1:00] AppleはJarvisと呼ばれる社内で構築したコンテナオーケストレーターとともに、五年以上にわたってMesosを使用していました。
- [1:06] Mesosはスケジューリングプラットフォームとして高い評判を持ち、バッチ、ステートフル、ステートレスサービスの複数のフレームワークをサポートするためにうまくスケールしました。
- [1:16] コンテナオーケストレーターはスキルと責任の委任におけるボトルネックとなり、他の選択肢の検討を促しました。
- [1:25] Appleは他のコンピュート管理ソリューションも使用しており、容量の利用率を高めるためにそれらを統一プラットフォームに統合したいと考えていました。
Kubernetesが選ばれた理由
- [1:37] オーケストレーターとして、Kubernetesが明らかな勝者であることが判明しました。
- [1:42] Kubernetesがより汎用的で柔軟であることで、チーム間の作業分担がより適切に行えるようになりました。
- [1:48] ストレージ、ランタイム、ネットワークのプロバイダーを選択することは、システム全体をリファクタリングすることなく再評価できる単なるプラグインの選択肢になりました。
- [2:04] 開発者は、CRDとカスタムコントローラーを通じてKubernetes APIとコア機能を拡張できることに魅力を感じました。
- [2:14] Kubernetesコミュニティはプラットフォームにとって大きな資産であり、その透明性と力が開発者に安心感を与えました。
- [2:25] 目標は、すでにKubernetesクラスターを運用しているチームや、Kubernetesを扱ったことはないがこの技術を信頼して採用したいと考えている人々を含む、多様なユーザーベースからの需要に応えることでした。
Kubernetes移行のトレードオフとチームの適応
- [2:41] この規模の変更には、移行を成功させるために必要なトレードオフについて正直であることが求められます。
- [2:50] Kubernetesの学習曲線は、エンドユーザーとプラットフォーム開発者の両方にとって急峻です。
- [2:57] 以前に構築されたすべてのプラットフォーム機能を再評価する必要がありました。
- [3:03] 機能は、クラウドネイティブのベストプラクティスとの整合性や新しいプラットフォームとの関連性について問われ、それは人々にとって居心地の悪いものになり得ます。
- [3:14] ソフトウェアは人によって作られるため、チームは現在のプロセスを変更する必要があり、人々が適応しなければならないことを受け入れました。
- [3:24] チームは、採用を成功させるためにトレーニングリソースに投資し、開発者を全面的にサポートする準備ができていました。
Apple Kubernetesプラットフォームのユーザー
- [3:34] Kubernetesは、Appleのコンピュート管理におけるプラットフォームの選択肢となりました。
- [3:40] 目標は、Appleのワークロードの大部分をKubernetes上で実行することです。
- [3:46] プラットフォームは、構築されながらもエンドユーザーへの焦点を維持することを目指しています。
- [3:51] ハードウェアとソフトウェアのインフラストラクチャ計画のための共通パターンを確立するには、プラットフォームユーザーを理解し分類する必要がありました。
- [4:00] ユーザーカテゴリの一つは、コンテナ内でアプリケーションをテストおよび実行したいJava、Python、Goの開発者です。
- [4:08] もう一つのカテゴリは、チーム向けの高度なデプロイメントワークフローの構築に注力するアプリケーションSREです。
- [4:16] ハードウェアQAエンジニアもその一例で、ハードウェアチームにとってデバイス検証を容易にするため、クラウドネイティブツールを用いた創造的なソリューションを模索しています。
- [4:29] 機械学習およびバッチワークロードのエンジニアは、機械学習モデルのトレーニングのためにCPUとGPUの両方を使用して、毎日数千のバッチジョブを実行しています。
- [4:39] 財務もプラットフォームのユーザーであり、配置の決定とキャパシティプランニングにおいて大きな役割を果たしています。
- [4:46] これらすべてのユーザーは、アプリのデバッグ、ログ記録、監視、トレースを改善するためのクラウドネイティブツールを求めています。
- [4:54] プラットフォーム開発者の責任は、安全なリソース分離と信頼性の高いスケジューリングを備えたスケーラブルなオーケストレーション層を提供することです。
Kubernetesプラットフォームのアクセスモデル
- [5:03] 高レベルの抽象化とCLIツールの構築も、プラットフォームの成功と採用のために必要です。
- [5:11] コンピュートとストレージリソースの大規模なインフラストラクチャプールはKubernetesによって管理され、クラスタ・アズ・ア・サービスとネームスペース・アズ・ア・サービスの二つの方法でユーザーに提供できます。
- [5:25] ネームスペース・アズ・ア・サービスが現在の主要なモデルです。
- [5:29] SREはマルチテナントKubernetesクラスタを管理し、ユーザーは一つまたは複数のネームスペースで操作するため、ユーザーはインフラストラクチャ管理のオーバーヘッドを回避し、アプリケーションのデプロイメントと開発に集中できます。
- [5:29] クラスターのプロビジョニングがコモディティ化されたため、一部のチームは依然としてクラスタ・アズ・ア・サービスを望むかもしれません。
集中型キャパシティ制御とマルチテナントセキュリティ
- [5:54] 集中型キャパシティ制御には、リソース管理を独自のシステムに抽象化する必要がありました。
- [6:00] このシステムは、将来のハイブリッドクラウド向けのソリューションを合理化するために、可能な限り汎用的に作られました。
- [6:06] このシステムは、クラスター、優先度、使用量、制限を動的にバランスさせて、ユーザーアプリケーションの最適な配置を見つけます。
- [6:17] リソース分離は、各ワークロードに優先度とクォータを割り当てることで処理されます。
- [6:22] マルチテナントクラスターでアプリケーションを実行することのプライバシーとセキュリティの懸念には、依然として対処する必要がありました。
- [6:29] プライバシーとセキュリティは、構成レベルとランタイムレベルの両方で対処する必要がありました。
- [6:34] ネームスペース・アズ・ア・サービスの制約にもかかわらず、ユーザーは自分のネームスペースで実行するクラウドネイティブツールを自由に選択できるようにする必要がありました。
- [6:42] 一部のツールはクラスターレベルのリソースであるCRDを必要とするため、そのデプロイを可能にする適切なCRD管理フローが必要でした。
プラットフォームと開発者向けのクラウドネイティブツール
Kubernetesのスケーリングとコミュニティへの貢献
- [7:15] 慎重な計画にもかかわらず、大規模に実行して初めて明らかになる問題もありました。
- [7:20] 彼らは、クラス3に挑戦するために、オープンソースのKubernetes PerfTestクラスターローダーツールを選択しました。
- [7:26] 開発者は独自のフレームワークを作成できますが、彼らはCluster Loaderが非常に強力であると感じました。
- [7:32] 彼らはコミュニティとより深く関わり、既存のツールを他の人が使えるように修正・拡張するために時間を投資したいと考えていました。
- [7:40] スケジューリングもまた、バッチワークロードを含む混合ワークロードを実行し、妥当なリソース使用率を望んでいたため、即座の焦点となりました。
- [7:51] SIGのスケジューリングに参加し、貢献し返すことは、可能な限り上流に近い状態を保つために重要です。
- [8:00] チームメンバーの中には、SIGの議論への参加や最初のイシューの起票を含め、上流のKubernetesへの貢献が初めての経験だった人もいました。
- [8:20] マルチテナント環境では、多くの顧客のワークロードが同じマシン上で実行されます。
MicroVMによる分離と仮想クラスタ
- [8:26] 多層防御は、セキュリティ要件を満たし、混在する信頼レベルを分離するための一般的なパターンです。
- [8:34] このレベルの分離を実現するためにMicroVMが使われています。
- [8:39] マイクロVMにより、複数の信頼できないテナントが同じノード上で実行され、同じコントロールプレーンを共有しながら、仮想マシンとコンテナという二層の分離を維持できます。
- [8:51] Cluster as a Serviceは、Appleの規模の企業では、セキュリティ管理コストの増大、リソース利用効率の悪化、運用負担の増加をもたらします。
- [9:02] その結果、彼らは仮想クラスタのような代替モデルの検討を始めました。
仮想クラスタとマルチクラスタ管理
- [9:07] 仮想クラスタは、共有Kubernetesインフラストラクチャ上で、ユーザー、セルフサービス、および仮想化されたKubernetesコントロールプレーンとデータプレーンを提供します。
- [9:15] これにより、セキュリティと運用上の懸念の大部分が解消されます。
- [9:20] デプロイメントフットプリントの増大とデータセンター間の分散が、マルチクラスタのワークロード管理への需要を駆動しています。
- [9:20] 彼らは、複数のクラスタにまたがってワークロードを管理するチームのために、自己修復性、利用効率、高レベルの障害、および開発者ワークフロー体験の改善を提供するAPIプロキシソリューションを研究しています。
- [9:42] 彼らは、高いセキュリティ基準と低いリソース利用を維持しながら、開発者とオペレーターのためにプラットフォームの複雑さを軽減したいと考えています。
- [9:42] これを実現するために、サーバーサイドWebAssemblyを活用したFunction as a Serviceソリューションに投資しています。
可観測性と開発者生産性の優先事項
技術導入による組織変革
- [10:19] 大規模に新しい技術を導入することは、マネージャー、財務、技術チーム、およびリーダーシップに影響を与える組織変革をもたらすことがよくあります。
- [10:32] この移行は多くの成長痛を伴う長い道のりです。
- [10:35] セキュリティチームは拡大し、追加の責任を担うようになりました。
- [10:44] アプリケーションセキュリティとKubernetesプラットフォームセキュリティは、責任共有モデルを維持するために明確な関心の分離を必要としました。
- [10:54] 目標の一つはキャパシティプランニングを再考することであり、財務と密接に連携する専任のリソース管理チームが必要でした。
- [11:03] 新しいチームがいくつか形成され、いくつかは規模と責任が拡大し、いくつかは新しい優先事項を打ち立てました。
- [11:11] SREチームは、運用とシステムへの注力から、エンジニアリングへの重点とプラットフォームのアーキテクチャ設計におけるより強い発言力へとシフトしました。
- [11:21] 堅固で安定したプラットフォームにより、顧客のニーズに集中し、より速くイノベーションを起こすことが可能になりました。
チーム横断レビューとオープンソース支援
- [11:30] イノベーションには協働が必要であり、クラウドネイティブプロジェクトのためのチーム横断技術レビューボードは、異なる背景を持つ人々からのピアフィードバックのための安全な場を提供します。
- [11:44] ボードメンバーは多様な専門知識を持ち、Kubernetesの機能開発に詳しい人もいれば、セキュリティなどの領域に詳しい人もいます。
- [11:52] 設計段階では、彼らの意見を組み合わせることが極めて有用です。
- [11:57] 共有プラットフォームでは、情報の共有が不可欠となり、Appleにはインナーソースとオープンソースの取り組みを管理する専任チームがあります。
- [12:06] そのチームは、Cloud NativeとKubernetesに関する社内トレーニングを実施し、初めてのオープンソース貢献者に助言し、長年の貢献者を支援しています。
- [12:21] このチームは人々をつなぎ、社内外の協働を成長させる手助けをしています。
- [12:27] 進行中の変革により内省の時間はほとんど残りませんが、内省は常に必要です。
- [12:33] 移行は誰もがやりたいことではありません。
クラウド移行とオープンソースコミュニティ
- [12:37] アプリケーションとプラットフォームの近代化に投資することは、既存の基盤の上でより多くのクラウドネイティブ技術の採用を可能にすることで、未来に貢献します。
- [12:47] 大規模な移行を通じて、チームはコミュニティのベストプラクティスと共有された学びを受け入れることを学び、彼らはさまざまな形の関与を通じて還元したいと考えました。
- [12:47] 関与の形には、コードの作成、CNCF TOCボードへの参加、Kubernetesリリースチームの支援、ドキュメントの改善、イシューの起票などがあります。
- [13:08] イノベーションは共有と協働によって駆動されます。
- [13:12] より広いオープンソースコミュニティと、インナーソースを通じて自社内の他のチームと共有することは、既存のソリューションの再利用を可能にし、冗長性を最小限に抑えるのに役立ちます。
- [13:23] 小さな変更でも、より大きな文化的変革を現実のものにし始めることができます。
- [13:28] 移行は最終的に、技術スタックだけでなく、それに関わる人々も変えるのです。
[0:00] ♪ ♪ 皆さん、こんにちは。私の名前はAlenaで、Appleで働いています。約一年前にKubernetesとクラウドネイティブプロジェクトに携わるソフトウェアエンジニアとして入社しました。それ以来、オープンソースコミュニティの多くの人々が、私の新しい仕事の何が最も魅力的だったのかを尋ねてきました。
[0:34] 答えは簡単です。それはクラウドインフラストラクチャの規模と、そこで実行されるアプリケーションの多様性です。以前は主にKubernetesクラスタのプロビジョニングに注力していました。アプリケーションとエンドユーザーの側から物事を見ることで、円を完成させるのに役立つと考えたのです。そういうわけで、ここにいます。新しいチームや会社に参加するとき、その歴史を知ることは、現在の決定とトレードオフを理解するのに役立ちます。AppleではJarvisと呼ばれる社内で構築したコンテナオーケストレーターとともに、五年以上にわたってMesosが使用されてきました。
[1:06] それはスケジューリングプラットフォームとして良い評判を持ち、Batch、Stateful、Statelessなど多様なサービスを実行するための複数のフレームワークをサポートするようにうまくスケールしていました。しかし、コンテナオーケストレーターはすぐにスキルと責任の委譲におけるボトルネックになったため、他の選択肢を検討し始めました。Mesosに加えて、Appleはコンピュート管理のために他のいくつかのソリューションを使用していました。移行とともに、それらを統合し、容量の利用率を高めるための統一プラットフォームを提供したいと考えました。
[1:37] オーケストレーターとしてKubernetesが明らかな勝者であることがわかりました。Kubernetesがより汎用的で柔軟であることは、チーム間で作業をよりうまく分割できることを意味しました。ストレージ、ランタイム、ネットワークなどのコアコンポーネントにどのプロバイダーを選ぶかは、もはや死活問題ではありませんでした。それが単なるプラグインの選択であり、システム全体をリファクタリングすることなくいつでも再評価できることを私たちは知っていました。開発者にとってのもう一つの大きな魅力は、CRDとカスタムコントローラーを活用してKubernetes APIとコア機能を拡張できることでした。
[2:14] Kubernetesコミュニティはプラットフォームにとって大きな資産でした。その透明性と力は非常に明白で、開発者に大きな安心感を与えました。目標は、多様なユーザーベースの需要に応えることでした。すでに自組織でKubernetesクラスタを成功裏に運用しているチームもありました。また、これまでKubernetesを使ったことがないものの、この技術を信頼し、導入したいと考えている人々もいました。このような規模の変化が起こるとき、移行を成功させるために必要なトレードオフについて正直であることが重要です。
[2:50] Kubernetesの学習曲線が急であることは、エンドユーザーだけでなくプラットフォーム開発者にとってもよく知られた事実です。過去に構築されたすべてのプラットフォーム機能を再評価する必要がありました。その機能の現在の設計はクラウドネイティブのベストプラクティスに沿っているか?その機能は新しいプラットフォームに関係があるのか?こうした質問をし、答えることは人々にとって居心地の悪いものになり得ます。そしてソフトウェアは人によって作られます。現在のプロセスを変える必要があり、人々が適応しなければならないという事実を受け入れる必要がありました。
[3:24] 私たちはこの決定の影響を認識していました。導入を成功させるために、トレーニングリソースへの投資や開発者への全面的なサポートなど、あらゆる準備を整えていました。その時点で、KubernetesはAppleにおけるコンピュート管理のプラットフォーム選択となりました。私たちの目標は、Appleのワークロードの大部分をKubernetes上で実行することです。プラットフォームを構築しながらも、エンドユーザーへのフォーカスを維持したいと考えています。そのためには、プラットフォームのユーザーを理解し分類し、ハードウェアとソフトウェアのインフラ計画のための共通パターンを確立する必要がありました。
[4:00] ユーザーの一つのカテゴリーは、コンテナ内でアプリケーションをテストし実行したいJava、Python、Goの開発者です。もう一つのカテゴリーは、チームのために高度なデプロイワークフローを構築することに注力するアプリケーションSREです。別の例としては、新しいことを試すことを恐れず、クラウドネイティブツールを使って創造的なソリューションを探求するハードウェアQAエンジニアがいます。ハードウェアチームがデバイスを検証しやすくするためのあらゆる取り組みです。また、機械学習モデルのトレーニングのためにCPUとGPUの両方を使用する数千のバッチジョブを毎日実行し、プラットフォームを日常的に活用している機械学習およびバッチワークロードのエンジニアもいます。
[4:39] 財務部門もプラットフォームのユーザーであり、配置の決定とキャパシティプランニングの大きな部分を担っています。これらのユーザーはすべて、アプリのデバッグ、ログ記録、モニタリング、トレーシングを改善するためにクラウドネイティブツールを導入したいと考えています。プラットフォーム開発者としての私たちの責任は、安全なリソース分離と信頼性の高いスケジューリングを備えたスケーラブルなオーケストレーション層を提供することです。高レベルの抽象化とCLIツールの構築も、プラットフォームの成功と導入には必要です。
[5:11] つまり、Kubernetesによって管理されるコンピュートとストレージリソースの大規模なインフラストラクチャプールがあります。これをユーザーに提供する方法は二つあります。クラスタ・アズ・ア・サービスとネームスペース・アズ・ア・サービスです。ネームスペース・アズ・ア・サービスが今日の主要なモデルです。SREはマルチテナントKubernetesクラスタを管理し、ユーザーは一つまたは複数のネームスペースで操作します。この方法により、ユーザーはインフラストラクチャ管理のオーバーヘッドを負わず、アプリケーションのデプロイメントと開発に集中できます。しかし、クラスタのプロビジョニングがコモディティ化された世界では、一部のチームが依然としてクラスタ・アズ・ア・サービスを望む可能性があることも認識しています。
[5:54] 集中的なキャパシティ管理を目標として、リソース管理を独自のシステムに抽象化する必要がありました。将来のハイブリッドクラウドのためのソリューションを合理化するために、できるだけ汎用的にしたいと考えました。このシステムは、クラスタ、優先度、使用量、制限の間で動的なバランシングを行い、ユーザーアプリケーションにとって最適な配置を見つけます。リソースの分離は、各ワークロードに優先度とクォータを割り当てることで処理されます。しかし、マルチテナントクラスタでアプリケーションを実行する際のプライバシーとセキュリティの懸念にも依然として対処する必要がありました。
[6:29] それは設定レベルとランタイムレベルの両方で行う必要がありました。ネームスペース・アズ・ア・サービスの制約があっても、ユーザーが自分のネームスペースで実行するクラウドネイティブツールを自由に選択できるようにしたかったのです。これらのツールの一部は、クラスタレベルのリソースであるCRDを必要とします。そのデプロイを可能にするために、適切なCRD管理フローを考える必要がありました。これらの技術的課題の解決は、多種多様なクラウドネイティブツールなしには不可能でした。プラットフォームレベルで使用するものと、アプリケーション開発者に推奨するものです。
[7:04] このリストは完全なものではなく、新しいプロジェクトを常に評価し、開発と統合の領域をさらに見つけるにつれて増え続けています。慎重な計画をすべて行っても、大規模に実行して初めて特定の問題が明らかになることがあります。私たちはオープンソースのKubernetes PerfTestクラスタローダーツールを選択しました。私たちのクラス3に挑戦するためです。開発者はいつでも独自のフレームワークを書くことができますが、私たちはCluster Loaderが非常に強力であることを発見しました。私たちはコミュニティとより多く関わり、他の人が使用できる既存のツールの修正と拡張に時間を投資したいと考えました。
[7:40] もう一つの即時の焦点はスケジューリングでした。私たちはバッチワークロードを含む混合タイプのワークロードをKubernetes上で実行し、合理的なリソース使用率を維持したいと考えています。SIGスケジューリングに参加し、還元することは私たちにとって非常に重要です。なぜなら、できるだけアップストリームに近い状態を保ちたいからです。私たちのチームの何人かにとって、それはアップストリームKubernetesへの初めての貢献経験であり、SIGに参加して議論するプロセスを経ることでした。最初のKubernetesイシューを提出し、コミュニティを支援するさまざまな方法を認識することは、すべて新しく刺激的でした。
[8:16] 現在の優先事項のいくつかを共有したいと思います。マルチテナント環境では、多くの顧客のワークロードが同じマシン上で実行されます。セキュリティ要件を満たし、混在する信頼レベルの間で分離を提供するために、一般的なパターンは多層防御を活用することです。私たちはマイクロVMでこのレベルの分離を実現しようとしています。これにより、複数の信頼できないテナントが同じノード上で実行され、同じコントロールプレーンを共有しながら、仮想マシンとコンテナという二層の分離を引き続き提供できます。
[8:51] クラスタ・アズ・ア・サービスには、セキュリティ管理の増加、リソース使用率の非効率性、運用負担というコストが伴います。Appleの規模の企業では。その結果、私たちは仮想クラスタのような代替モデルの探求を始めました。仮想クラスタでは、ユーザー、セルフサービス、仮想化されたKubernetesコントロールプレーンとデータプレーンが、共有Kubernetesインフラストラクチャの上に構築されます。これにより、セキュリティと運用上の懸念の大部分が解消されます。デプロイフットプリントの成長とデータセンター全体への分散に伴い、マルチクラスタのワークロード管理の需要が生じます。私たちは、複数のクラスタにまたがるワークロードを管理するチームのために、改善された自己修復、使用効率、高レベルの抽象化、開発者ワークフロー体験を提供するAPIプロキシソリューションを研究しています。
[9:42] 私たちは開発者と運用者のためにプラットフォームの複雑さを軽減したいと考えています。同時に、高いセキュリティ基準と低いリソース使用率を維持したいとも考えています。そこで私たちは、サーバーサイドWebAssemblyを活用したFunction as a Serviceソリューションに投資し、これを解決しています。新機能やユーザーワークロードが絶えず追加される中で、可観測性は最優先事項の一つとなっています。プラットフォームが成長するにつれて、プラットフォーム管理を健全に保ちたいと考えています。エンドユーザーの生産性と満足度が私たちの最終目標です。私たちは常に、魅力的なCI/CDと開発者ツールによってそれを改善する方法を模索しています。
[10:19] これほど大規模に新しい技術を採用することは、しばしば組織の変化と表裏一体です。マネージャーや財務部門から技術チーム、そして自分自身に至るまで、あらゆるものとあらゆる人を変える必要があります。それは多くの成長痛を伴う長い道のりです。私たちのセキュリティチームは拡大し、追加の責任を担うようになりました。マルチテナントクラスタにおけるセキュリティ保証は容易な課題ではありません。共有責任モデルを維持するために、アプリケーションセキュリティとKubernetesプラットフォームセキュリティの間で明確な関心の分離を図る必要がありました。
[10:54] 私たちの目標の一つは、キャパシティプランニングを再考することでした。財務部門と密接に連携する専任のリソース管理チームを持つことが必要でした。いくつかの新しいチームが結成され、いくつかは規模と責任が拡大し、またいくつかは新たな優先事項を打ち立てました。SREチームは以前はより運用寄りでシステムに焦点を当てていました。現在はエンジニアリングに重点を置き、プラットフォームのアーキテクチャ設計においてより強い発言力を持っています。堅牢で安定したプラットフォームを持つことで、顧客のニーズに集中し、より速くイノベーションを起こすことが可能になりました。
[11:30] イノベーションは協働なしには不可能です。クラウドネイティブベースのプロジェクトのためのクロスチーム技術レビューボードを形成することは、私たちにとって非常に価値がありました。そこは、異なるバックグラウンドを持つ人々からピアフィードバックを得られる安全な場です。Kubernetes向けの機能開発により多くの経験を持つ人もいれば、セキュリティのような特定の技術領域に深い専門知識を持つ人もいます。設計段階において、彼らの総合的な意見を取り入れることは極めて有用です。共有プラットフォームでは、情報共有が不可欠になります。ここAppleでインナーソースとオープンソースの取り組みを管理する専任チームがあることは幸運です。
[12:06] このチームは、クラウドネイティブとKubernetesに関する社内トレーニングに注力し、初めてのオープンソースコントリビューションを始めたい人々に助言し、しばらくオープンソースに貢献してきた人々を支援しています。このチームは人々をつなぎ、社内外の協働を成長させる手助けをします。進行中の変革は内省の時間をほとんど残しませんが、内省は常に必要です。移行は誰もがやりたいことではありません。
[12:37] しかし、アプリケーションとプラットフォームの近代化に投資する人々は、その基盤の上により多くのクラウドネイティブ技術を採用することで、将来恩恵を受けます。大規模な移行は、コミュニティのベストプラクティスと共有された学びを受け入れることを私たちに教えてくれました。私たちは恩返しをしたいと考え、関与には多くの形があることに気づきました。コードを書くこと、CNCFのTOCボードで務めること、Kubernetesリリースチームを手伝うこと、ドキュメントを改善すること、issueを報告することなど、さまざまです。
[13:08] イノベーションは共有と協働によって推進されます。オープンソースのより広いコミュニティとの共有、インナーソースを通じた自社内の別チームとの共有は、既存ソリューションの再利用を可能にし、冗長性を最小化するのに役立ちます。小さな変化でも、より大きな文化的変化を現実のものにし始めることができます。私たちは、最終的に移行が変えるのは技術スタックだけでなく、それに関わる人々でもあることに気づきました。ご質問があればお気軽にお問い合わせください。ありがとうございました。
英語の原文字幕を見る
[0:00] ♪ ♪ Hello everyone, my name is Alina and I work for Apple. I joined the company as a software engineer about a year ago to work on Kubernetes and cloud-native projects. Since then, so many people from the open-source community have asked me what attracted me the most to my new job.
[0:34] And the answer is easy. It is the scale of the cloud infrastructure and the variety of applications running on it. Before, I mainly focused on Kubernetes clusters provisioning. I thought that looking at things from the application and end-user end-guide scale would help to complete the circle, so here I am. When you join a new team or a company, getting to know its history helps to understand current decisions and trade-offs. Mesos has been used at Apple for over five years with an internally built container orchestrator called Jarvis.
[1:06] It had a good reputation as a scheduling platform and it scaled well to support multiple frameworks for running a variety of services like Batch, Stateful and Stateless. But the container orchestrator soon became a bottleneck for skills and responsibilities delegation, so we started considering other choices. In addition to Mesos, Apple used some other solutions for compute management. Along with the transition, we wanted to consolidate them and provide the unified platform for better capacity utilization.
[1:37] We found that Kubernetes was an obvious winner as an orchestrator. With Kubernetes being more generic and fluggable, it meant we could better divide work among teams. The decisions on what provider to choose for core components like storage, runtime, and network were no longer life or death decisions. We knew that it was just a plugin choice and the choice could always be re-evaluated without refactoring the entire system. Another big point of attraction for developers was an ability to extend Kubernetes APIs and core functionality by leveraging CRDs and custom controllers.
[2:14] The Kubernetes community was a huge asset to the platform. Its transparency and power was so obvious and provided a great level of comfort to developers. The goal was to meet the demand of diverse user base. We had teams who were already successfully running Kubernetes clusters in their organization. And we had people who had never worked with Kubernetes before, but trusted the technology and wanted to adopt it. When the change of this magnitude happens, it is important to be honest about the trade-offs that need to be made for successful migration.
[2:50] It is a known fact that Kubernetes' learning curve is steep, not only for end users, but for platform developers too. All the platform features that were built in the past had to be re-evaluated. Is the feature's current design aligned with the cloud-native best practices? Is this feature even relevant to the new platform? Asking and answering these questions can be uncomfortable for people. and software is built by people. We had to accept the fact that there would be a need for a change to the current processes, and people would have to adapt.
[3:24] We realized the impact of the decision. We were ready to invest in training resources and provide full support for developers, anything to make the adoption successful. At that point, Kubernetes became our platform choice for compute management at Apple. Our target goal is to make the majority of Apple workloads run on Kubernetes. We want to maintain end-user focus while building the platform. That required us to understand and categorize our platform users to establish common patterns for hardware and software infrastructure planning.
[4:00] One category of users are Java, Python, Go developers who want to test and run their applications in the containers. Another category are applications SREs whose focus is on building advanced deployment workflows for their teams. Another example is hardware QA engineers who are not afraid to try new things and explore creative solutions using cloud-native tools. anything to make it easier for hardware teams to validate devices. There are machine learning and batch workloads engineers who utilize the platform daily, running thousands of batch jobs that use both CPU and GPUs for training machine learning models.
[4:39] Finance is also a platform user as they're a big part of placement decisions and capacity planning. All of these users want to adopt cloud-native tools for better debugging, logging, monitoring, and tracing for their apps. Our responsibility as platform developers is to provide a scalable orchestration layer with secure resource isolation and reliable scheduling. Building high-level obstructions and CLI tools is also necessary for the platform's success and adoption.
[5:11] So we have this big infrastructure pool of compute and storage resources managed by Kubernetes. Providing it to users can be done in two ways: cluster as a service and namespace as a service. Namespace as a Service is our primary model today. SRE manages multi-tenant Kubernetes clusters and user operates in one or multiple namespaces. This way, users do not have an overhead of infrastructure management and can focus on application deployment and development. However, we realize that in the world where cluster provisioning has been commodified, some teams may still want cluster as a service.
[5:54] With the goal of centralized capacity control, we had to abstract resource management to its own system. We wanted to make it as generic as possible to streamline the solution for the hybrid cloud in the future. The system would do a dynamic balancing between clusters, priority, usage, and limits to find the best placement for the user application. Resource isolation would be handled by assigning priority and quota to each workload. However, we still had to address privacy and security concerns of running applications in multi-tenant clusters.
[6:29] It had to be done both on configuration and runtime levels. Even with the namespace as a service constraint, we wanted users to have a freedom to choose cloud-native tools to run in their namespaces. Some of these tools require CRDs, a cluster-level resource. We have to think of a proper CRD management flow to make that deployment possible. Solving these technical challenges would not have been possible without the wide array of cloud-native tools. those we use on the platform level, and those we recommend to application developers.
[7:04] This list is not complete and keeps on growing as we constantly evaluate new projects and find more areas for development and integration. With all the careful planning, only running things at scale could reveal certain issues. We have chosen open source Kubernetes PerfTest cluster loader tool. to challenge our class 3s. Developers can always write their own framework, but we found Cluster Loader being quite powerful. We wanted to engage more with the community and invest time in fixing and expanding the existing tool that could be used by others.
[7:40] Another area of immediate focus was scheduling. We run mixed types of workloads on Kubernetes, including batch workloads, and want to maintain a reasonable resource utilization. Participating in SIG scheduling and contributing back is very important to us, as we want to stay as close to the upstream as possible. For some people in our team, it was their very first experience contributing to Upstream Kubernetes, going through the process of joining SICK for discussions. Filing first Kubernetes issues and recognizing the various ways to help the community, it was all new and exciting.
[8:16] I would like to share some of our current priorities. In a multi-tenant environment, many customers' workloads run on the same machine. To meet security requirements and provide isolation between mixed level of trust, A common pattern is to leverage defense in depth. We are seeking to enable this level of isolation with microVMs. With that, multiple untrusting tenants can run on the same nodes and share the same control plane, while continuing to provide two layers of isolation: virtual machine and container.
[8:51] Cluster as a Service comes with the cost of increased security management, resource utilization inefficiency, and operational burden. in the companies of Apple's scale. As a result, we started exploring alternative models like virtual clusters. With Virtual Cluster, User, Self Services, Virtualized Kubernetes Control and Data Plane, on top of shared Kubernetes infrastructure. It eliminates the majority of security and operational concerns. With the deployment footprint growth and distribution across data centers, comes the demand for multi-cluster workload management. We are researching on API proxy solutions to offer improved self-healing, utilization efficiency, high-level obstructions, and developer workflow experiences for teams that manage workloads across multiple clusters.
[9:42] We want to reduce the platform complexity for developers and operators. At the same time, we want to maintain high security standards and low resource utilization. So we are investing in function as a service solution, leveraging server-side web assembly to solve this. With the constant additions of the new features and user workloads, observability becomes one of the top priorities. We want to keep the platform management sane as the platform grows. End-user productivity and happiness is our end goal. We are always looking into ways to improve it with compelling CI/CD and developer tooling.
[10:19] Adopting new technology on such a big scale often comes hand in hand with organizational changes. You need to change everything and everyone from managers and finance to tech teams and yourself. It is a long road with a lot of growing pains. Our security team grew and took on extra responsibilities. Insurance security in multi-attendant cluster is not a trivial task. We had to have a clear separation of concern between application security and Kubernetes platform security to maintain a shared responsibility model.
[10:54] One of our goals was to rethink capacity planning. Having a dedicated resource management team working close with the finance department was necessary. Some new teams were formed, some grew in size and responsibilities, and some developed a new set of priorities. SRE team used to be more operational and systems focused. Now it has an emphasis on engineering and a much stronger voice in the platform architectural design. Having a solid and stable platform made it possible to maintain focus on the customer's needs and innovate faster.
[11:30] Innovation is impossible without collaboration. Forming a cross-team technical review board for cloud-native based projects was invaluable to us. It is a safe place to get peer feedback from people having different backgrounds. Some have more experience with developing features for Kubernetes, and some have a deep expertise in a particular technical domain like security. Getting their combined input is extremely useful during the design stage. With a shared platform, sharing information becomes a necessity. We are lucky to have a dedicated team managing inner source and open source initiatives here at Apple.
[12:06] The team focuses on internal trainings on Cloud Native and Kubernetes, advises people who want to start making their first open source contributions, and supports those who have been contributing to open source for a while. The team helps to connect people and grow both internal and external collaborations. The ongoing transformation leaves very little time for reflection, but the reflection is always necessary. Migration is not something everyone wants to do.
[12:37] But those who invest in modernizing their application and platform benefit in the future by adopting more cloud-native technologies on top of the foundation. Migration at scale has taught us to embrace the community best practices and shared learnings. We wanted to give back and have realized that engagement comes in many forms: writing code, serving on TOC board for CNCF, helping Kubernetes release team, improving documentation, filing issues, and many more.
[13:08] Innovation is driven by sharing and collaboration. Sharing with a broader community in the open source, sharing with another team in your company through the inner source, helps to enable reuse of existing solutions and minimize redundancy. Even small change can begin to make larger cultural change a reality. We have realized that in the end the migration changes not just the technical stack, but the people involved in it. Please reach out to us if you have any questions. Thank you.
Vidleafワークベンチで開く
トランスクリプトを検索し、行を選択し、タイムスタンプ付きの引用をコピーし、翻訳します。
帰属
「基調講演: Appleにおけるクラウドネイティブの旅 - Alena Prokharchyk、Appleのソフトウェアエンジニア」by CNCF [Cloud Native Computing Foundation] (https://www.youtube.com/@cncf)、CC BY 3.0 (https://creativecommons.org/licenses/by/3.0/) の下でライセンスされています。ソース動画: https://www.youtube.com/watch?v=Tx8qXC-U3KM。このページは、段落区切りとタイムスタンプを追加した動画のテキストトランスクリプトです。作成者はVidleafと提携しておらず、Vidleafを推奨するものでもありません。VidleafはAIによる句読点の付加とAI生成の要約を追加しました。元の文言はこのページで引き続き利用可能です。本文には、Vidleafによるソースで検証された名前の修正も含まれています。
あなたは制作者または権利者ですか?訂正や削除をリクエストする:copyright@vidleaf.app(これらのページについてを参照)。
最終更新