QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 4

Josh Evans が、Netflix マむクロサヌビスの混沌ずし​​たカラフルな䞖界に぀いお、マむクロサヌビスの構造、分散システムに関連する課題、その利点ずいった基本的なこずから始めお語りたす。 この基盀に基づいお、圌はマむクロサヌビスの習埗に぀ながる文化、アヌキテクチャ、運甚の実践を探求したす。

QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 1
QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 2
QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 3

運甚䞊のドリフトずは異なり、サヌビスの囜際化のための新しい蚀語やコンテナヌなどの新しいテクノロゞヌの導入は、環境に新たな耇雑さを加えるための意識的な決定です。 私の運甚チヌムは、Java ず EC2 に基づいた事前定矩されたベスト プラクティスに組み蟌たれた Netflix の最適なテクノロゞヌ ロヌドマップに基づいお暙準化したしたが、ビゞネスが成長するに぀れお、開発者は Python、Ruby、Node-JS、Docker などの新しいコンポヌネントを远加し始めたした。

QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 4

私たちは、お客様からの苊情を埅たずに、圓瀟の補品が優れた機胜を発揮するこずを最初に提唱したこずを非垞に誇りに思っおいたす。 すべおは非垞に単玔に始たりたした。私たちは Python で動䜜するプログラムず、Ruby でいく぀かのバックオフィス アプリケヌションを䜿甚しおいたした。しかし、Web 開発者が JVM を廃止しお Web に移行するず発衚したずき、事態はさらに面癜くなりたした。アプリケヌションを Node ゜フトりェア プラットフォヌム.js に倉換したす。 Docker の導入埌、状況はさらに耇雑になりたした。 私たちはロゞックに埓い、私たちが思い぀いたテクノロゞヌは、非垞に理にかなったものであったため、顧客に実装したずきに珟実になりたした。 なぜそうなるのか説明したす。

実際、API Gateway には、UI 開発者の゚ンドポむントずしお機胜できる優れたスクリプトを統合する機胜がありたす。 これらの各スクリプトは、倉曎を加えた埌に本番環境にデプロむしおからナヌザヌのデバむスにデプロむできるように倉換され、これらすべおの倉曎は API ゲヌトりェむで実行される゚ンドポむントず同期されたした。

ただし、これにより、API サヌビスがコヌドで過負荷になり、さたざたな障害シナリオが発生する新しいモノリスを䜜成するずいう問題が繰り返し発生したした。 たずえば、䞀郚の゚ンドポむントが削陀されたか、スクリプトがランダムに生成した䜕かのバヌゞョンが倚すぎお、そのバヌゞョンが API サヌビスの䜿甚可胜なメモリをすべお占有したずしたす。

これらの゚ンドポむントを取埗しお API サヌビスから匕き出すのは論理的でした。 これを行うために、Docker コンテナヌで小さなアプリケヌションずしお実行される Node.js コンポヌネントを䜜成したした。 これにより、これらのノヌド アプリケヌションによっお匕き起こされる問題やクラッシュを切り分けるこずができたした。

これらの倉曎のコストは非垞に倧きく、次の芁玠で構成されたす。

  • 生産性向䞊ツヌル。 新しいテクノロゞの管理には新しいツヌルが必芁でした。これは、UI チヌムが非垞に優れたスクリプトを䜿甚しお効率的なモデルを䜜成したため、むンフラストラクチャの管理に倚くの時間を費やす必芁がなく、スクリプトを䜜成しお機胜をチェックするだけでよかったからです。
    機䌚の掞察ず分類 - 重芁な䟋は、パフォヌマンスを促進する情報を明らかにするために必芁な新しいツヌルです。 プロセッサがどれだけ占有されおいるか、メモリがどのように䜿甚されおいるかを知る必芁があり、この情報を収集するにはさたざたなツヌルが必芁でした。
  • 基本むメヌゞの断片化 - シンプルな基本 AMI はより断片化され、特殊化されたした。
  • ノヌド管理。 クラりドでノヌドを管理できる既補のアヌキテクチャやテクノロゞヌは存圚しないため、スケヌラブルで信頌性の高いコンテナのデプロむメントず Amazon AWS ずのクラりド統合を提䟛するコンテナ管理プラットフォヌムである Titus を構築したした。
  • ラむブラリたたはプラットフォヌムの重耇。 プラットフォヌムの同じコア機胜を備えた新しいテクノロゞヌを提䟛するには、それをクラりドベヌスの Node.js 開発者ツヌルに耇補する必芁がありたした。
  • 孊習曲線ず業界での経隓。 新しいテクノロゞヌの導入により、必然的に新しい課題が生じ、克服し、そこから孊ばなければなりたせん。

したがっお、私たちは XNUMX ぀の「舗装道路」に限定するこずはできず、技術を進歩させるための新しい方法を垞に構築する必芁がありたした。 コストを抑えるために、䞀元的なサポヌトを制限し、JVM、新しいノヌド、Docker に重点を眮きたした。 私たちは効果的な圱響を優先し、意思決定にかかるコストに぀いおチヌムに通知し、すでに開発した圱響力の高い゜リュヌションを再利甚する方法を探すよう奚励したした。 私たちは、補品を海倖の顧客に提䟛するためにサヌビスを倖囜語に翻蚳するずきにこのアプロヌチを䜿甚したした。 䟋には、自動的に生成できる比范的単玔なクラむアント ラむブラリが含たれおいるため、Python バヌゞョン、Ruby バヌゞョン、Java バヌゞョンなどを非垞に簡単に䜜成できたす。

私たちは、ある堎所や他の同様の状況で実瞟のある実蚌枈みのテクノロゞヌを䜿甚する機䌚を垞に探しおいたした。

最埌の芁玠、぀たり倉曎たたはバリ゚ヌションに぀いお話したしょう。 補品の消費量が、曜日ごず、および 9 日を通しお時間ごずにどのように䞍均䞀に倉化するかを芋おください。 システムの負荷が最倧に達する午前 XNUMX 時は、Netflix にずっお最も困難な時間垯であるず蚀えたす。

QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 4

サヌビス提䟛を䞭断したり、顧客に䞍䟿を䞎えたりするこずなく、゜フトりェア むノベヌションの高速実装、぀たりシステムに垞に新しい倉曎を加えるにはどうすればよいでしょうか? Netflix は、新しいグロヌバルなクラりドベヌスの管理および継続的配信 (CD) プラットフォヌムである Spinnaker を䜿甚するこずでこれを達成したした。

QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 4

重芁なこずに、Spinnaker はベスト プラクティスを統合するように蚭蚈されおいるため、コンポヌネントを本番環境に導入する際に、出力をメディア配信テクノロゞヌに盎接統合できたす。

QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 4

私たちは、自動カナリア分析ず段階的デプロむメントずいう、私たちが高く評䟡しおいる XNUMX ぀のテクノロゞヌをデリバリヌ パむプラむンに組み蟌むこずができたした。 カナリア分析ずは、少量のトラフィックを新しいバヌゞョンのコヌドに送り、残りの実皌働トラフィックを叀いバヌゞョンに枡すこずを意味したす。 次に、新しいコヌドがタスクにどのように察凊するかを確認したす (既存のコヌドよりも良いか悪いか)。

段階的ロヌルアりトずは、あるリヌゞョンのロヌルアりトに問題がある堎合、別のリヌゞョンのロヌルアりトに移動するこずを意味したす。 この堎合、䞊蚘のチェックリストを本番パむプラむンに含める必芁がありたす。 時間を節玄したすので、このトピックに぀いおさらに詳しく知りたい堎合は、私の前回の講挔「クラりドでのグロヌバル Netflix 運甚の゚ンゞニアリング」を参照するこずをお勧めしたす。 スピヌチのビデオ録画は、スラむドの䞋郚にあるリンクからご芧いただけたす。

QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 4

講挔の最埌に、Netflix の組織ずアヌキテクチャに぀いお簡単に説明したす。 圓初は、NRDP 1.x メディア ストリヌミングの最初のバヌゞョンである、Electronic Delivery ず呌ばれるスキヌムがありたした。 ここで「バックストリヌム」ずいう甚語が䜿甚されるのは、最初はナヌザヌが埌でデバむス䞊で再生するためにコンテンツをダりンロヌドするこずしかできなかったためです。 2009 幎圓時、Netflix の最初のデゞタル配信プラットフォヌムは次のようなものでした。

QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 4

ナヌザヌデバむスには、NRDP プラットフォヌム (Netflix Ready Device Platform) に基づいた、UI むンタヌフェむス、セキュリティ モゞュヌル、サヌビスのアクティブ化ず再生で構成される Netflix アプリケヌションが含たれおいたした。

圓時のナヌザヌむンタヌフェむスは非垞にシンプルでした。 これには Queque Reader ず呌ばれるものが含たれおおり、ナヌザヌはサむトにアクセスしお Queque に䜕かを远加し、远加されたコンテンツを自分のデバむスで衚瀺したす。 良い点は、フロント゚ンド チヌムずバック゚ンド チヌムが同じ電子配信組織に属しおおり、緊密な協力関係があったこずです。 ペむロヌドは XML に基づいお䜜成されたした。 同時に、DVD ビゞネス甚の Netflix API が䜜成され、サヌドパヌティのアプリケヌションがトラフィックを圓瀟のサヌビスに誘導するようになりたした。

ただし、Netflix API は、すべおのコンテンツのメタデヌタや芖聎可胜な映画に関する情報を含む革新的なナヌザヌ むンタヌフェむスを提䟛するために十分に準備されおおり、芖聎リストを生成する機胜が䜜成されたした。 これには、JSON スキヌマに基づく汎甚 REST API、最新のアヌキテクチャで䜿甚されおいるものず同じ HTTP 応答コヌド、および圓時フロント゚ンド アプリケヌションに必芁であった OAuth セキュリティ モデルがありたした。 これにより、ストリヌミング コンテンツ配信のパブリック モデルからプラむベヌト モデルぞの移行が可胜になりたした。

QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 4

移行の問題は断片化でした。これは、珟圚、私たちのシステムがたったく異なる動䜜原則に基づいお XNUMX ぀のサヌビスを運甚しおいるためです。XNUMX ぀は Rest、JSON、OAuth に基づいおおり、もう XNUMX ぀は RPC、XML、および NTBA トヌクン システムに基づくナヌザヌ セキュリティ メカニズムに基づいおいたす。 これは最初のハむブリッド アヌキテクチャでした。

圓初は API が NCCP でうたく拡匵できず、これがチヌム間の摩擊に぀ながったため、XNUMX ぀のチヌムの間には本質的にファむアりォヌルがありたした。 違いはサヌビス、プロトコル、回路、セキュリティ モゞュヌルにあり、開発者は完党に異なるコンテキスト間を切り替える必芁があるこずがよくありたした。

QConカンファレンス。 カオスをマスタヌする: マむクロサヌビスに関する Netflix ガむド。 パヌト 4

この点に関しお、私は䌚瀟の䞊玚゚ンゞニアの XNUMX 人ず䌚話し、「長期的に適切なアヌキテクチャは䜕であるべきですか?」ずいう質問をしたずころ、圌は逆質問をしたした。組織ぞの圱響に぀いお – これらを統合しお、私たちがうたくやろうず孊んだこずが壊れたらどうなるでしょうか? このアプロヌチは、「システムを蚭蚈する組織は、その組織のコミュニケヌション構造を再珟する蚭蚈によっお制玄される」ずいうコンりェむの法則に非垞に関連しおいたす。 これは非垞に抜象的な定矩なので、もっず具䜓的な定矩を奜みたす。「゜フトりェアはすべお、それを䜜成した組織構造を反映したす。」 私のお気に入りの Eric Raymond の蚀葉は次のずおりです。「XNUMX ぀の開発チヌムがコンパむラヌに取り組んでいる堎合、最終的には XNUMX パスのコンパむラヌが完成したす。」 そうですね、Netflix には XNUMX パス コンパむラがあり、それが私たちの仕事のやり方です。

この堎合、犬は尻尟を振っおいるず蚀えたす。 私たちの最優先事項は゜リュヌションではなく組織であり、私たちのアヌキテクチャを掚進するのは組織です。 埐々に、寄せ集めのサヌビスから、ブレヌド ランナヌず呌ばれるアヌキテクチャに移行したした。ここでは、゚ッゞ サヌビスず、Zuul プロキシ、API ゲヌトりェむ、および察応する機胜に盎接分離しお統合できる NCCP の機胜に぀いお話しおいるからです。 「ピヌス」は、より高床なセキュリティ、再生、デヌタ䞊べ替えなどの機胜を備えた新しいマむクロサヌビスに倉わりたした。

このように、郚門構造ず䌁業のダむナミクスは、システム蚭蚈を圢成する䞊で重芁な圹割を果たしおおり、倉化を促進たたは阻害する芁因であるず蚀えたす。 マむクロサヌビス アヌキテクチャは耇雑か぀有機的であり、その健党性は芏埋ず導入されたカオスに基づいおいたす。

いく぀かの広告

い぀もご宿泊いただきありがずうございたす。 私たちの蚘事が気に入っおいたすか? もっず興味深いコンテンツを芋たいですか? 泚文したり、友人に勧めたりしお私たちをサポヌトしおください。 開発者向けのクラりド VPS は 4.99 ドルから, 圓瀟があなたのために発明した、゚ントリヌレベルのサヌバヌのナニヌクな類䌌物です。 VPS (KVM) E5-2697 v3 (6 コア) 10GB DDR4 480GB SSD 1Gbps 19 ドルからの真実、たたはサヌバヌを共有する方法? (RAID1 および RAID10、最倧 24 コア、最倧 40GB DDR4 で利甚可胜)。

アムステルダムの゚クむニクス Tier IV デヌタセンタヌでは Dell R730xd が 2 倍安い? ここだけ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV 199 ドルから オランダで Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 ドルから! に぀いお読む むンフラストラクチャヌ䌁業を構築する方法730 ペニヌで 5 ナヌロの䟡倀がある Dell R2650xd E4-9000 vXNUMX サヌバヌを䜿甚したクラスですか?

出所 habr.com

コメントを远加したす