Uberのドメむン駆動型マむクロサヌビスアヌキテクチャ

箄 transl。Uber Engineeringの最近の蚘事では、この倧䌁業がマむクロサヌビスアヌキテクチャの改良版に向けお進んだこずに぀いお説明しおいたす。䞀郚のむンタヌネットナヌザヌは、新しいアプロヌチを「マむクロサヌビスにDDDの原則を適甚するだけ」ず考えおいたしたが、この蚘事は開発者コミュニティや他の゚ンゞニアから倧きな関心を集めたした。そのため、habrのために特別に甚意されたロシア語版をご玹介できるこずをうれしく思いたす。







前曞き



最近、サヌビス指向アヌキテクチャ、特にマむクロサヌビスアヌキテクチャMAの欠点が掻発に議論されおいたす。ほんの数幎前、独立した展開ずいう圢での柔軟性、透過的な所有暩、システムの安定性の向䞊、懞念事項のより良い分離など、倚くの利点があるため、倚くの人がMAに移行するこずをいずわなかった。ただし、最近状況が倉化したした。マむクロサヌビスアプロヌチは、耇雑さが倧幅に増加する傟向があるこずで批刀され始めおおり、些现な機胜でも実装が困難な堎合がありたす。これに぀いおは、「マむクロサヌビスKubernetesを䜿甚しおいる堎合でも、サむズが重芁」ずいう講挔で話したした-箄Transl。



Uberには珟圚玄2,200の重芁なマむクロサヌビスがあり、このアプロヌチのすべおの長所ず短所を自分たちで経隓したした。過去2幎間、Uberは、アヌキテクチャの利点を維持しながら、マむクロサヌビスランドスケヌプの耇雑さを軜枛しようず詊みおきたした。この投皿では、ドメむン指向マむクロサヌビスアヌキテクチャDOMAず呌ばれるマむクロサヌビスアヌキテクチャぞの䞀般的なアプロヌチを玹介する予定です。



近幎、マむクロサヌビスアヌキテクチャの欠点を批刀するこずは䞀般的ですが、完党に攟棄すべきであるずあえお宣蚀する人はほずんどいたせん。それらの運甚䞊の利点はすべお非垞に重芁です。さらに、このアプロヌチに代わるものはないたたは非垞に限られおいるようです。私たちの䞀般的なアプロヌチの目暙は、MAの柔軟性を維持しながら、システム党䜓の耇雑さを軜枛したい組織を支揎するこずです。



この蚘事では、DOMA、Uberでこのアプロヌチに぀ながった課題、プラットフォヌムおよび補品チヌムにずっおの利点、そしお最埌に、このアヌキテクチャぞの移行を怜蚎しおいる人のためのヒントに぀いお説明したす。



マむクロサヌビスずは䜕ですか



マむクロサヌビスは、サヌビス指向のアヌキテクチャの拡匵です。 2000幎代のかなり倧きな「サヌビス」ずは異なり、マむクロサヌビスは特定の狭いタスクを実行したす。これらのアプリケヌションはホストされ、ネットワヌク経由でアクセス可胜であり、明確に定矩されたむンタヌフェむスを提䟛したす。他のアプリケヌションは、リモヌトプロシヌゞャコヌルRPCを䜿甚しおこのむンタヌフェむスにアクセスしたす。



MAの重芁な特城は、コヌドの投皿、呌び出し、および展開の方法です。倧芏暡なモノリシックアプリケヌションは通垞、明確に定矩されたむンタヌフェむスを備えたカプセル化されたコンポヌネントに分割されたす。これらのむンタヌフェむスは、ネットワヌク経由ではなく、プロセス内から盎接呌び出されたす。この意味で、マむクロサヌビスは、その関数のいずれかを呌び出すずきに、パフォヌマンスが䜎い䞀皮のラむブラリず芋なすこずができたすネットワヌクの遅延ず時間のシリアル化/逆シリアル化ぞの圱響のため。



このようにマむクロサヌビスを考えるず、なぜマむクロサヌビスアヌキテクチャが必芁なのか疑問に思うかもしれたせん。この質問に察する叀兞的な答えは、個々のコンポヌネントを個別に展開し、それらを簡単にスケヌリングできるためです。..。倧芏暡なモノリシックアプリケヌションの堎合、組織はすべおのコヌドを同時に展開たたはリリヌスする必芁がありたす。その結果、新しいバヌゞョンごずに倚くの倉曎が加えられおいたす。展開にはリスクず時間がかかりたす。間違いがあるず、システム党䜓がダりンする可胜性がありたす。



したがっお、䌁業はパフォヌマンスを犠牲にしながら䜿いやすさのためにマむクロサヌビスに移行しおいたす。たた、マむクロサヌビスに必芁なむンフラストラクチャを維持するための远加コストも負担する必芁がありたす。経隓によれば、倚くの状況でそのような劥協は理にかなっおいたす。同時に、それはMAぞの時期尚早な移行に察する匷力な議論です。



動機



マむクロサヌビスぞの移行時2012幎から2013幎頃、Uberには2぀の䞻芁なモノリシックサヌビスがあり、マむクロサヌビスが正垞に解決できる倚くの運甚䞊の問題に盎面したした。



  • 可甚性のリスク。モノリスのコヌドベヌスに誀りがあるず、システム党䜓この堎合はUber党䜓がドロップする可胜性がありたす。
  • リスクずコストのかかる展開。それらは実行するのが非垞に難しく、しばしば前のバヌゞョンにロヌルバックしなければなりたせんでした。
  • 責任範囲の分離が䞍十分。巚倧なコヌドベヌスで誰が䜕を担圓したかを远跡するこずは非垞に困難でした。指数関数的な成長に䌎い、急いでロゞックずコンポヌネントの間の境界線ががやけるこずがありたした。
  • 非効率的な䜜業。䞊蚘の問題が合わさっお、チヌムが独立しお、たたは互いに独立しお䜜業するこずが困難になりたした。


蚀い換えれば、Uberの゚ンゞニア数が数十人から数癟人に増加し、テクノロゞヌスタックの独自の郚分を所有する倚数のチヌムが出珟したこずを背景に、モノリシックアヌキテクチャはこれらのチヌムの運呜をたすたす結び付け、チヌムが独立しお䜜業するこずを蚱可したせんでした。



そのため、MAに切り替えるこずにしたした。その結果、私たちのシステムはより柔軟になり、チヌムはより自埋的になるこずができたした。



  • システムの信頌性。MAぞの移行に䌎い、システム党䜓の信頌性が向䞊したす。個々のサヌビスは、システム党䜓をクラッシュさせるリスクを冒すこずなく、クラッシュする可胜性がありたす以前のバヌゞョンにロヌルバックするこずもできたす。
  • . - : « ?», — .
  • . , . , , , , .
  • . .
  • . .


MAがなければ、Uberは珟圚の芏暡ず品質レベルに到達できなかったず蚀っおも過蚀ではありたせん。



しかし、䌚瀟が成長を続け、゚ンゞニアの数が数癟人から数千人に増えるに぀れお、システムの倧幅な耇雑化に関連する倚くの問題に気づき始めたした。 MAの堎合、機胜がい぀でも倉曎されお予期しない動䜜が発生する可胜性がある倚数の「ブラックボックス」ず匕き換えに、単䞀のモノリシックコヌドベヌスを犠牲にしたす。



たずえば、゚ンゞニアは問題の根本を突き止めるために、12の異なるチヌムにわたっお玄50のサヌビスを分析する必芁がありたした。



サヌビス間の䟝存関係を理解するこずは、サヌビスが倚くのレベルで盞互に䜜甚する可胜性があるため、非垞に困難になる可胜性がありたす。 n番目の䟝存関係の遅延が急増するず、アップストリヌムサヌビスで問題が発生する可胜性がありたす。さらに、適切なツヌルがなければ、䜕が起こったのかを理解するこずは䞍可胜です。これらすべおがデバッグを非垞に困難にしたす。





Jaegerによる2018幎半ば珟圚のUberのマむクロサヌビスアヌキテクチャ



最も単玔な機胜を実装するために、゚ンゞニアは倚くの堎合、倚くのサヌビスを操䜜する必芁がありたすが、完党に異なるチヌムず人々がそれらに責任を負いたす。その結果、チヌムワヌク、䌚議、蚭蚈コンサルテヌション、およびコヌドレビュヌコアレビュヌの敎理に倚くの時間が費やされたす。チヌムが継続的に互いのサヌビスに䟵入し、デヌタモデルを倉曎し、さらにはサヌビス所有者に代わっお展開するに぀れお、所有暩の透明性の最初の利点は埐々に曖昧になっおいたす。これにより、サヌビスが独立しおいるように芋えるネットワヌクモノリスを䜜成できたすが、実際には、安党に倉曎を加えるには、サヌビスを䞀緒に展開する必芁がありたす。





簡単に統合できる10個のタッチポむントを備えたUber〜2018のこのような耇雑なシステムの䟋DOMAの前でも。



その結果、開発プロセスの速床が䜎䞋し、サヌビスオヌナヌが䞍安定になり、移行に時間がかかるなどの問題が発生したす。残念ながら、すでにMAに切り替えた組織には埌戻りはありたせん。この状況は、「圌らず䞀緒に暮らすこずは䞍可胜であり、圌らを撃぀こずはできない」ずいうよく知られたフレヌズによっお完党に説明されおいたす。



ドメむン固有のマむクロサヌビスアヌキテクチャ



マむクロサヌビスをI / Oリンクラむブラリず考え、マむクロサヌビスアヌキテクチャを巚倧な分散アプリケヌションず考えおください。この堎合、よく知られたアヌキテクチャ゜リュヌションを䜿甚しお、コヌドを敎理する最善の方法を考えるこずができたす。



したがっお、ドメむン指向のマむクロサヌビスアヌキテクチャDOMAは、ドメむン指向の蚭蚈、クリヌンアヌキテクチャ、サヌビス指向のアヌキテクチャ、オブゞェクト指向およびむンタヌフェむス指向の開発パタヌンなど、確立されたコヌド線成方法に䟝存できたす。DOMAは、倧芏暡な組織のグロヌバルに分散されたシステムで既存の蚭蚈原則を掻甚する比范的新しい方法であるずいう意味で革新的であるず考えおいたす。



DOMAの基本的な抂念ず関連甚語は次のずおりです。



  1. 個々のマむクロサヌビスではなく、それらのグルヌプを調べおいたす。そしお、それらをドメむン ドメむンず呌びたす。
  2. 次に、いわゆるレむダヌ レむダヌのドメむンを結合したす。ドメむンが属するレむダヌによっお、そのドメむンのマむクロサヌビスで䜿甚できる䟝存関係が決たりたす。結果ずしお埗られるマルチレむダヌの アヌキテクチャヌをレむダヌデザむンのず呌びたす。
  3. , . (gateways).
  4. , , , 'hardcode' , . (, - ), (extension architecture) .


蚀い換えるず、構造化アヌキテクチャ、ドメむンゲヌトりェむ、および事前に構築されたDOMA拡匵ポむントは、マむクロサヌビスアヌキテクチャを、耇雑なものから具䜓的で具䜓的なもの、぀たり柔軟で再利甚可胜な階局型コンポヌネントの構造化されたセットに倉換したす。



この蚘事の残りの郚分では、UberによるDOMAの実装ずその利点に焊点を圓おたす。このアプロヌチを採甚したい䌁業にも実践的なアドバむスが提䟛されたす。



Uberでの実装



ドメむン



Uberドメむンは、機胜の論理的な組み合わせに基づいおリンクされた1぀以䞊のマむクロサヌビスのコレクションです。ドメむンの倧きさずいう疑問が自然に生じたす。この堎合、指瀺はありたせん。䞀郚のドメむンには数十のサヌビスを含めるこずができ、その他のドメむンには1぀だけを含めるこずができたす。ここでは、各関連付けの論理的な圹割に぀いお慎重に怜蚎するこずが重芁です。たずえば、地図䞊の怜玢サヌビス、運賃サヌビス、遞択サヌビス運転手ず乗客の比范を別々のドメむンにグルヌプ化したした。さらに、圌らは垞に䌚瀟の組織構造を繰り返すわけではありたせん。Uber Mapsは3぀のドメむンに分割され、80のマむクロサヌビスが3぀の異なるゲヌトりェむの背埌に隠されおいたす。



レむダヌベヌスのアヌキテクチャ



倚局アヌキテクチャは、MAUberの境界内でどのサヌビスずどのサヌビスが通信できるかずいう問題に答えたす。぀たり、責任範囲のグロヌバルな分散、たたはグロヌバルな䟝存関係管理のメカニズムず芋なすこずができたす。



階局化されたアヌキテクチャは、障害埌の損傷の範囲を理解し、䟝存するサヌビスUberの数に関する補品の特異性を反映するのに圹立ちたす。あなたに䞋から䞊ぞず移動し、障害が発生した堎合に圱響を受けるサヌビスの数が枛少し、アプリケヌションが狭くの補品の範囲れたす。逆に、より倚くのサヌビスが䞋䜍レベルの機胜に䟝存しおいるため、障害の結果ずしおの損傷の範囲は原則ずしお倧きくなり、解決されるビゞネスタスクの範囲は広くなりたす。次の図は、この抂念を瀺しおいたす。





䞊䜍レベルは特定の狭いナヌザヌ゚クスペリ゚ンスを担圓する機胜モバむル機胜などに焊点を圓おおおり、䞋䜍レベルにはよりグロヌバルなビゞネス機胜アカりント管理やラむドシェアリングマヌケットプレむスの移動などが存圚するこずを想像できたす。 ..。各レむダヌは、䞋にあるレむダヌのみに䟝存したす。これにより、爆颚半埄やドメむン統合などの抂念が明確になりたす。



このグラフでは、機胜が狭いものから広いものぞず䞋に移動するこずがよくあるこずに泚意しおください。芁件が進化するに぀れお、時間の経過ずずもにより重芁になる「プラットフォヌム」いく぀かの単玔な機胜を想像するこずができたす。実際、この皮の䞋方移行が予想され、Uberのコアビゞネスプラットフォヌムの倚くは、ドラむバヌたたは乗客向けの機胜ずしお始たり、時間の経過ずずもに成長し、新しいビゞネスラむンUberEatsやUberFreightなどずしおより䞀般化されたした。 そしおより倚くの䟝存関係をそれらに接続したす。



Uber内では、次の5぀のレベルを区別したす。



  1. . , . — Uber , .
  2. -. , Uber , , Rides (), Eats ( ) Freight ( ).
  3. . , , . , «request a ride» ( ) , Rides: Rider, Rider «Lite», m.uber.com, ..
  4. . , (/), .
  5. . Uber . .


ご芧のずおり、埌続の各レベルは、機胜のグルヌプ化がたすたす狭くなり、ヒット半埄が小さくなっおいたす぀たり、このレむダヌ内の機胜に䟝存するコンポヌネントが少なくなっおいたす。



ゲヌトりェむ



APIゲヌトりェむずいう甚語は、マむクロサヌビスアヌキテクチャですでに十分に確立されおいたす。私たちの定矩は、定評のある定矩ずそれほど倉わりたせん。ただし、ゲヌトりェむを、察応するサヌビスグル​​ヌプドメむンず呌びたすぞの単䞀の゚ントリポむントず芋なす傟向がありたす。ゲヌトりェむの成功は、適切に蚭蚈されたAPIアヌキテクチャに䟝存したす。





この図は、ゲヌトりェむの高レベルの蚭蚈を瀺しおいたす。ドメむンの内郚構造の詳现䞀連のサヌビス、デヌタを含むテヌブル、ETLパむプラむンなどから抜象化したす。他のドメむンは、むンタヌフェむスにのみアクセスできたす。メッセヌゞングシステムでのリモヌトプロシヌゞャ呌び出し、むベント、および芁求甚のAPIです。



アップストリヌムコンシュヌマヌは1぀のサヌビスでのみ実行されるため、ゲヌトりェむは、アップストリヌムサヌビスの䟝存関係が1぀しかない堎合耇数のダりンストリヌムサヌビスに䟝存するのではなく、将来の移行、怜出可胜性、およびシステムの耇雑さの党䜓的な削枛ずいう点で倚くの利点を提䟛したす。ドメむンに存圚する可胜性がありたす。OO蚭蚈の芳点から芋るず、ゲヌトりェむはむンタヌフェむス定矩であり、内郚の「実装」぀たり、マむクロサヌビスのグルヌプを䜿甚しお必芁なこずを実行できたす。



拡匵機胜



拡匵機胜拡匵機胜は、その名前が瀺すように、ドメむンを拡匵するためのメカニズムです。このようなアドオンの基本的な定矩は、サヌビスの内郚を倉曎したり、党䜓的な信頌性に圱響を䞎えたりするこずなく、サヌビスの機胜を拡匵するためのメカニズムを提䟛するこずです。Uberには、ロゞック ロゞック拡匵ずデヌタベヌス デヌタ拡匵の2぀の拡匵モデルがありたす。拡匵コンセプトにより、耇数のチヌムが互いに独立しお䜜業できるようにアヌキテクチャを拡匵できたした。



論理拡匵



論理拡匵は、サヌビスの基瀎ずなるロゞックを拡匵するためのメカニズムを提䟛したす。それらに぀いおは、サヌビスごずに個別に定矩されたむンタヌフェむスを備えた䞀皮のプロバむダヌたたはプラグむンパタヌンを䜿甚したす。これにより、チヌムはむンタヌフェむスのみを䜿甚し、メむンのプラットフォヌムコヌドに干枉するこずなくロゞックを実装できたす。



たずえば、ドラむバヌがオンラむンであるずしたす。通垞、さたざたなチェックを行っお、オンラむンステヌタスセキュリティ、コンプラむアンスなどが蚱可されおいるこずを確認したす。それぞれに独自のチヌムがありたす。これを行う1぀の可胜な方法は、各コマンドに同じ゚ンドポむントでロゞックを曞き蟌むように匷制するこずですが、これにより耇雑さが増す可胜性がありたす。各チェックには、異なるそしお完党に無関係なロゞックが必芁になりたす。オンラむンにする



ずいう論理゚ンドポむント拡匵の堎合各拡匵機胜が事前定矩された芁求および応答タむプに準拠するこずが期埅されるむンタヌフェヌスを定矩したす。各チヌムは、このロゞックの実装を担圓する拡匵機胜を登録したす。この堎合、ドラむバヌに関する情報を取埗しお論理倀boolを返すだけで、ドラむバヌがオンラむンステヌタスに「倀する」かどうかを刀断できたす。そしお、゚ンドポむント自䜓オンラむンになるは、これらの回答を単玔に繰り返し、それらのいずれかが停であるかどうかを確認したす。



このアプロヌチは、コアコヌドを拡匵機胜から分離し、それらを分離したす。ただし、拡匵機胜は、実行されおいる他のロゞックを認識しおいたせん。これにより、可芳枬性や機胜のフラグ付けなど、远加の機胜を簡単に䜜成できたす。



デヌタ駆動型拡匵機胜



このタむプの拡匵機胜は、基盀ずなるプラットフォヌムのデヌタモデルが䞍必芁に肥倧化するのを防ぐために、任意のデヌタをむンタヌフェむスに添付するためのメカニズムを提䟛したす。デヌタ拡匵では、ProtobufのAnyなどの機胜を積極的に䜿甚しお、リク゚ストに任意のデヌタを远加できるようにしたす。倚くの堎合、サヌビスはこのデヌタを保存したり、論理拡匵に枡したりするため、メむンプラットフォヌムは、この任意のコンテキストに぀いお逆シリアル化するこずはありたせんしたがっお、䜕も「認識」したせん。どの実装でも、より匷力な型指定ず匕き換えに、むンフラストラクチャのオヌバヌヘッドが発生したす。より簡単な代替手段は、任意のデヌタを衚すJSON圢匏です。





任意の補足



ブヌル拡匵ずデヌタ拡匵に加えお、Uberの倚くのチヌムは、ドメむンに䞀臎するカスタム拡匵テンプレヌトを開発したした。たずえば、プレれンテヌションアヌキテクチャに関連する統合のほずんどは、DAGベヌスのタスク実行ロゞックを䜿甚したす。



利点



DOMAは、ほがすべおの䞻芁なUberビゞネスにある皋床圱響を䞎えおきたした。過去1幎間、私たちは䞻にビゞネス局に焊点を圓おおきたした。これは、䌁業のさたざたな事業分野に䞀般化されたロゞックを提䟛したす。



DOMAはUberにずっお比范的新しいものであり、将来的には、より倚くの情報ずアヌキテクチャの䟋を確実に共有する予定です。最初の結果は心匷いものでした。開発者の䜜業が倧幅に簡玠化され、システムの党䜓的な耇雑さが軜枛されたした。



補品ずプラットフォヌム



DOMAは、Uberのさたざたな補品チヌムずプラットフォヌムチヌム間の共同䜜業の結果です。倚くの堎合、プラットフォヌムのサポヌトコストは倧幅に枛少しおいたす。補品チヌムは、特異性ず加速された開発の恩恵を受けおいたす。



たずえば、拡匵アヌキテクチャの初期のプラットフォヌムコンシュヌマヌは、コヌドのレビュヌ時間を短瞮し、スケゞュヌルを蚭定し、消費者教育を加速するこずで、新機胜の優先順䜍付けず統合にかかる時間を3日から3時間に短瞮できたした。



耇雑さの軜枛



以前は、補品チヌムはドメむン内の倚くのダりンストリヌムサヌビスず連携する必芁がありたしたが、珟圚は1぀を呌び出すだけで枈みたす。新機胜を導入する際のタッチポむントの数を枛らすこずで、実装時間が25〜30短瞮されたした。さらに、70のドメむンに2,200のサヌビスを配垃するこずができたした。それらの玄半分は実装されおおり、倧郚分は䜕らかの圢で実装する蚈画がありたす。



将来の移行



Uberでは、マむクロサヌビスの半枛期は1。5幎であるず蚈算しおいたす。蚀い換えれば、毎幎半幎、私たちのサヌビスの50が関連性を倱っおいたす。ゲヌトりェむがないず、マむクロサヌビスアヌキテクチャは移行の地獄になる可胜性がありたす。絶えず倉化するマむクロサヌビスには、絶え間ないアップストリヌムの移行が必芁です。ゲヌトりェむを䜿甚するず、チヌムはダりンストリヌムドメむンサヌビスぞの䟝存を回避できたす。぀たり、これらのサヌビスはアップストリヌムに移行しなくおも倉曎できたす。



過去1幎間のUberの最倧のプラットフォヌムアップグレヌドの2぀は、ゲヌトりェむの背埌で発生したした。これらのプラットフォヌムには䜕癟もの䟝存サヌビスがあり、ゲヌトりェむがなければ、既存のすべおの消費者を移行する必芁がありたす。それは信じられないほど高䟡であり、プラットフォヌムの完党な再蚭蚈を非珟実的にしたす。



新しい業皮ず補品



DOMAベヌスのフレヌムワヌクは、はるかに拡匵性が高く、保守が容易であるこずが蚌明されおいたす。DOMAに切り替えたUberのほずんどのチヌムは、新しい事業を維持するには費甚がかかりすぎたために切り替えたした。



実甚的なアドバむス



このセクションでは、DOMAに関心があるかもしれない䌁業のためのいく぀かの実甚的なヒントをたずめたした。ここでの指針ずなる原則は、私たちの経隓では、成熟した思慮深いマむクロサヌビスアヌキテクチャは、適切なタむミングで適切な方向に段階的にシフトするこずに基づいおいるずいうこずです。実際には、MAを完党に「曞き換える」こずはほずんど䞍可胜です。



したがっお、MAの進化は、「ヘッゞを切る」䞀皮のプロセスず芋なされたす。そのおかげで、MAは、1回限りの自発的な取り組みではなく、正しい方向に成長したす。それは動的で段階的なプロセスです。



スタヌトアップ



ここでの重芁な質問は、「い぀MAに移行する必芁があるか」です。および「これは私たちの組織にずっお意味がありたすか」䞊で芋たように、マむクロサヌビスは倚数の゚ンゞニアがいる組織で運甚䞊の利点を提䟛したすが、党䜓的な耇雑さを増し、新しい機胜の実装を困難にする可胜性もありたす。



小芏暡な組織では、運甚䞊の利点がアヌキテクチャの耇雑さの増倧を補う可胜性はほずんどありたせん。さらに、MAは通垞、それらをサポヌトするために専甚の゚ンゞニアリングリ゜ヌスを必芁ずしたす。これは、初期段階の䌁業には高すぎるか、優先順䜍付けの点で単に最適ではない可胜性がありたす。



そうは蚀っおも、マむクロサヌビスぞの移行をしばらく延期するのが賢明かもしれたせん。組織がマむクロサヌビスに切り替えるこずを決定した堎合は、倧芏暡な分散アプリケヌションのアナロゞヌを䜿甚し、問題領域をサヌビス間で分割するこずを事前に怜蚎するこずをお勧めしたす。たた、最も初期のマむクロサヌビスは、ビゞネスの重芁な郚分を説明しおいるため、最も重芁で長寿呜である可胜性が高いこずにも泚意しおください。



ミディアムビゞネス



MAの有甚性は、倚くのチヌムを持぀䞭芏暡の䌁業で増加したす。䞭芏暡の䌁業では、さたざたな機胜やプラットフォヌム間で責任の境界線が埐々に曖昧になっおいたす。



ここから、マむクロサヌビスの階局に぀いお考え始めるこずができたす。䞀郚のサヌビスはビゞネスの運営にずっおはるかに重芁になり、より倚くのチヌムがそれらに䟝存するようになるため、䟝存関係の管理が前面に出おくる可胜性がありたす。



プラットフォヌムぞの初期の投資は、埌で配圓を支払うこずができたす。他の補品に䟝存しないビゞネスプラットフォヌムを䜜成するこずで、技術的な負債の蓄積や、プラットフォヌムのメむンサヌビスぞの任意の補品ロゞックの浞透を回避できたす。おそらく、この目暙を達成するために、この段階で拡匵メカニズムを導入する必芁がありたす。



マむクロサヌビスの数がただ少ないこずを考えるず、それらを䞀緒にバンドルするこずはただ意味がないかもしれたせん。ただし、ここで泚目に倀するのは、UberでのDOMA実装のコンテキストのドメむンには、単䞀のサヌビスが含たれおいる可胜性があるため、「ドメむン指向」の䞀連の思考が害を及がすこずはありたせん。



倧䌁業



倧芏暡な゚ンゞニアリング組織には、䜕癟ものスペシャリスト、マむクロサヌビス、および倚くの䟝存関係がありたす。DOMAがその朜圚胜力を最倧限に発揮するのは、このような状況です。確かに、そのような䌁業には、ゲヌトりェむが前にあるドメむンに簡単に組み合わせるこずができるマむクロサヌビスの明らかなクラスタヌがありたす。レガシヌサヌビスでは、倚くの堎合、リファクタリング/曞き換えずその埌の移行が必芁です。これは、ゲヌトりェむが移行の容易さの点でたもなく真のメリットをもたらし始めるこずを意味したすもちろん、ゲヌトりェむがすでに展開されおいる堎合。



透過的で理解しやすい階局の重芁性も高たりたす。䞀郚のサヌビスは特定の機胜たたは機胜のグルヌプの「補品」になり、他のサヌビスは耇数の補品をサポヌトしお「プラットフォヌム」ずしお機胜したす。この段階では、プラットフォヌムチヌムぞの倚倧な運甚䞊のストレスを回避し、グロヌバルシステムの䞍安定性のリスクを最小限に抑えるために、任意の補品ロゞックをプラットフォヌムから分離しおおくこずが重芁です。



最終的な考え



Uberでは、より倚くのチヌムがDOMAに移行するに぀れお、積極的にDOMAを開発し続けおいたす。 DOMAの背埌にある䞻な考え方は、マむクロサヌビスアヌキテクチャは1぀の倧きな分散プログラムにすぎないずいうこずです。そしお、他の゜フトりェアず同じ原則をその進化に適甚するこずができたす。 DOMAは、これらの原則に぀いお実践的に考えるための単なるアプロヌチです。お圹に立おば幞いです。フィヌドバックをお埅ちしおおりたす。



DOMA自䜓は、Uber党䜓からの60人近くの゚ンゞニアによる機胜暪断的な取り組みの結果です。過去2幎間、この䜜業に貢献しおくれた以䞋の人々に特に感謝したす。



Alex Zylman、Alexandre Wilhelm、Allen Lu、Ankit Srivastava、Anthony Tran、Anupam Dikshit、Anurag Biyani、Daniel Wolf、Deepti Chedda、Dmitriy Bryndin、Gaurav Tungatkar、Jacob Greenleaf、Jaikumar Ganesh、Jennie Ngyabuae、Joeoshier 、Kusha Kapoor、Linda Fu、Madan Thangavelu、Nimish Sheth、Parth Shah、Shawn Burke、Simon Newton、Steve Sherwood、Uday Kiran Medisetty、Waleed Kadous



謝蟞この䜜業は、業界の倚くの既存の蚭蚈パタヌンを組み合わせおUberの問題を解決し、いく぀かの新しいパタヌン拡匵機胜なども提案したした。私たちはそれらに取り組んでくれた業界に感謝しおいたす。たた、Superblocksの経隓を私たちず共有しおくれたLinkedinの゚ンゞニアにも感謝したす。



翻蚳者からのPS



私たちのブログも読んでください






All Articles