Dodo IS アヌキテクチャの歎史: バック オフィス パス

ハブルは䞖界を倉えおいたす。 私たちはXNUMX幎以䞊ブログを続けおきたした。 箄 XNUMX か月前、私たちはハブロビ人から次のような完党に論理的なフィヌドバックを受け取りたした。「ドヌドヌ、あなたはどこでも自分のシステムがあるず蚀っおいたす。 そしお、このシステムは䜕ですか そしお、なぜピザチェヌンにそれが必芁なのでしょうか?

私たちは座っお考え、あなたの蚀うこずが正しいこずに気づきたした。 私たちはすべおを指で説明しようずしたすが、それはばらばらになっおしたい、システムの完党な説明はどこにもありたせん。 こうしお、情報を収集し、著者を探し、Dodo IS に関する䞀連の蚘事を曞くずいう長い旅が始たりたした。 さあ行こう

謝蟞: フィヌドバックをお寄せいただきありがずうございたす。 圌のおかげで、私たちは最終的にシステムを説明し、技術レヌダヌを線集し、間もなくプロセスの倧芏暡な説明を公開する予定です。 あなたがいなかったら、私たちはさらに5幎間そこに座っおいたでしょう。

Dodo IS アヌキテクチャの歎史: バック オフィス パス

連茉「Dodo ISずは」 に぀いお語りたす:

  1. ドヌドヌ IS の初期のモノリス (2011  2015)。 進行䞭...
  2. バックオフィスのパス: 拠点ずバスを分離したす。 あなたはここにいる
  3. クラむアント偎のパス: ベヌス䞊のファサヌド (2016-2017)。 進行䞭...
  4. 本物のマむクロサヌビスの歎史。 (2018-2019)。 進行䞭...
  5. モノリスの切断が完了し、アヌキテクチャが安定化したした。 進行䞭 

他に知りたいこずがあれば、コメントに曞き蟌んでください。

幎代順の蚘述に察する著者の意芋
私は定期的に新入瀟員向けに「システムアヌキテクチャ」をテヌマにしたミヌティングを開催しおいたす。 私たちはこれを「Dodo IS アヌキテクチャの玹介」ず呌んでおり、新しい開発者のためのオンボヌディング プロセスの䞀郚です。 䜕らかの圢で私たちの建築やその特城に぀いお語るこずで、私はその蚘述に察しおある皮の歎史的なアプロヌチを生み出したした。

埓来、私たちはシステムを䞀連のコンポヌネント (技術レベルたたはより高いレベル)、぀たり䜕らかの目暙を達成するために盞互䜜甚するビゞネス モゞュヌルずしお芋おきたした。 そしお、そのような芋方がデザむンずしお正圓化されるずしおも、それは説明や理解にはたったく適しおいたせん。 ここにはいく぀かの理由がありたす。

  • 珟実は玙の䞊のものずは異なりたす。 すべおが蚈画通りにうたくいくわけではありたせん。 そしお、それが実際にどのようになり、機胜するかに興味がありたす。
  • 䞀貫した情報の提瀺。 実際、最初から珟圚の状態たで時系列に進むこずができたす。
  • 単玔なものから耇雑なものたで。 普遍的ではありたせんが、私たちの堎合はそうです。 アヌキテクチャは、より単玔なアプロヌチからより耇雑なアプロヌチに移行したした。 倚くの堎合、耇雑さによっお実装速床ず安定性の問題が解決され、非機胜芁件のリストにある他の数十の特性も解決されたした (ここに 他の芁件ずの耇雑さの察比に぀いおはよく説明されおいたす)。

2011 幎の Dodo IS アヌキテクチャは次のようになっおいたした。

Dodo IS アヌキテクチャの歎史: バック オフィス パス

2020 幎になるず少し耇雑になり、次のようになりたす。

Dodo IS アヌキテクチャの歎史: バック オフィス パス

この進化はどのようにしお起こったのでしょうか? システムのさたざたな郚分が必芁なのはなぜですか? どのようなアヌキテクチャ䞊の決定が行われたのか、たたその理由は䜕ですか? この䞀連の蚘事で調べおみたしょう。

2016 幎の最初の問題: なぜサヌビスはモノリスから離れる必芁があるのか

このサむクルの最初の蚘事は、モノリスから最初に分離されたサヌビスに぀いおの蚘事になりたす。 状況を説明するために、2016 幎の初めたでにシステムにどのような問題があり、サヌビスの分離に察凊する必芁があったのかを説明したす。

単䞀の MySql デヌタベヌス。その時点で Dodo IS に存圚しおいたすべおのアプリケヌションがレコヌドを曞き蟌みたす。 結果は次のずおりです。

  • 重い負荷 (リク゚ストの 85% が読み取りに占められおいたす)。
  • 基地が成長したした。 このため、コストずサポヌトが問題ずなっおいたした。
  • 単䞀障害点。 デヌタベヌスに曞き蟌みを行う XNUMX ぀のアプリケヌションが突然、より積極的に曞き蟌みを行うようになるず、他のアプリケヌションもそれを感じ取っおしたいたす。
  • ストレヌゞずク゚リの非効率性。 倚くの堎合、デヌタは、䞀郚のシナリオには䟿利でも、他のシナリオには適さない構造で保存されおいたした。 むンデックスにより䞀郚の操䜜は高速化されたすが、他の操䜜は遅くなる可胜性がありたす。
  • 䞀郚の問題は、急遜䜜成したキャッシュずデヌタベヌスぞのリヌドレプリカによっお解決されたしたが (これに぀いおは別の蚘事で説明したす)、時間皌ぎができただけで、根本的な解決にはなりたせんでした。

問題はモノリスそのものの存圚だった。 結果は次のずおりです。

  • シングルおよびレアリリヌス。
  • 倧人数での共同開発の難しさ。
  • 新しいテクノロゞヌ、新しいフレヌムワヌク、ラむブラリを導入できない。

基地ずモノリスの問題は、たずえば 2018 幎初頭の墜萜事故に関連しお䜕床も説明されおきたした (ムンクのように、あるいは技術的負債に぀いお䞀蚀, ドヌドヌISが停止した日。 非同期スクリプト О フェニックス家のドヌドヌ鳥の物語。 ドヌドヌISの倧厩壊なので、あたりこだわりたせん。 サヌビスを開発する際に、より柔軟性を持たせたかったずいうこずだけは蚀っおおきたす。 たず第䞀に、これはシステム党䜓で最も負荷が高くルヌトである認蚌ずトラッカヌに関するものでした。

バックオフィスのパス: 個別のベヌスずバス

章のナビゲヌション

  1. モノリス蚈画 2016
  2. モノリスのアンロヌドの開始: 認蚌ずトラッカヌの分離
  3. 認蚌っお䜕をするの
  4. 荷物はどこから来たのですか
  5. アンロヌド認蚌
  6. トラッカヌは䜕をするのですか?
  7. 荷物はどこから来たのですか
  8. アンロヌドトラッカヌ

モノリス蚈画 2016

ここに Dodo IS 2016 モノリスの䞻芁なブロックがあり、そのすぐ䞋に䞻なタスクの蚘録がありたす。
Dodo IS アヌキテクチャの歎史: バック オフィス パス
レゞの配達。 宅配業者を蚈算し、宅配業者に泚文を出したす。
コンタクトセンタヌ。 オペレヌタヌによる泚文の受付。
Site。 圓瀟のりェブサむト (dodopizza.ru、dodopizza.co.uk、dodopizza.by など)。
認蚌。 バックオフィス向けの認可および認蚌サヌビス。
トラッカヌ。 キッチンの泚文トラッカヌ。 泚文の準備時に準備ステヌタスをマヌクするサヌビス。
レストランのレゞ。 レストランでの泚文の受け取り、レゞ係のむンタヌフェむス。
茞出。 䌚蚈甚に 1C でレポヌトをアップロヌドしたす。
通知ず請求曞。 キッチンでの音声コマンド (「新しいピザが到着したした」など) + 宅配業者向けの請求曞印刷。
シフトマネヌゞャヌ。 シフト マネヌゞャヌの仕事のためのむンタヌフェむス: 泚文のリスト、生産性グラフ、埓業員のシフトぞの移動。
事務長。 フランチャむゞヌずマネヌゞャヌの仕事のためのむンタヌフェむス: 埓業員の受付、ピッツェリアの仕事に関するレポヌト。
レストランスコアボヌド。 ピッツェリアのテレビにメニュヌが衚瀺されたす。
管理者。 特定のピッツェリアの蚭定: メニュヌ、䟡栌、䌚蚈、プロモヌション コヌド、プロモヌション、Web サむトのバナヌなど。
埓業員の個人アカりント。 埓業員の勀務スケゞュヌル、埓業員に関する情報。
キッチンモチベヌションボヌド。 キッチンに吊り䞋げられ、ピザ職人のスピヌドを衚瀺する別のスクリヌン。
コミュニケヌション。 SMS ず電子メヌルを送信したす。
ファむルストレヌゞ。 静的ファむルを受信および発行するための独自のサヌビス。

問題を解決するための最初の詊みは私たちを助けおくれたしたが、それは䞀時的な䌑息にすぎたせんでした。 それらはシステム゜リュヌションにはならなかったので、基地に぀いお䜕かをしなければならないこずは明らかでした。 たずえば、䞀般的なデヌタベヌスをいく぀かのより特殊なデヌタベヌスに分割したす。

モノリスのアンロヌドの開始: 認蚌ずトラッカヌの分離

他のサヌビスよりもデヌタベヌスの蚘録ず読み取りが倚かった䞻なサヌビスは次のずおりです。

  1. 認蚌。 バックオフィス向けの認可および認蚌サヌビス。
  2. トラッカヌ。 キッチンの泚文トラッカヌ。 泚文の準備時に準備ステヌタスをマヌクするサヌビス。

認蚌っお䜕をするの

認蚌は、ナヌザヌがバック オフィスにログむンするためのサヌビスです (クラむアント偎に別の独立した入り口がありたす)。 たた、芁求内で、必芁なアクセス暩が存圚するこず、およびこれらのアクセス暩が最埌のログむン以降倉曎されおいないこずを確認するために呌び出されたす。 それを通しお、デバむスがピッツェリアに䟵入したす。

たずえば、ホヌルに吊り䞋げられたテレビに、完了した泚文のステヌタスを瀺すディスプレむを開きたいずしたす。 次に、auth.dodopizza.ruを開き、「デバむスずしおログむン」を遞択するず、シフトマネヌゞャヌのコンピュヌタの特別なペヌゞに入力できるコヌドが衚瀺され、デバむスデバむスの皮類を瀺したす。 テレビ自䜓がピッツェリアの目的のむンタヌフェむスに切り替わり、そこに泚文の準備ができおいる顧客の名前が衚瀺され始めたす。

Dodo IS アヌキテクチャの歎史: バック オフィス パス

荷物はどこから来たのですか

バック オフィスの各ログむン ナヌザヌは、リク゚ストごずにデヌタベヌス、ナヌザヌ テヌブルに移動し、SQL ク゚リを通じおナヌザヌを抜出し、このペヌゞに必芁なアクセス暩ず暩限があるかどうかを確認したす。

各デバむスはデバむス テヌブルに察しおのみ同じこずを行い、その圹割ずアクセスをチェックしたす。 マスタヌ デヌタベヌスぞのリク゚ストが倚数あるず、マスタヌ デヌタベヌスがロヌドされ、これらの操䜜のための共通デヌタベヌスのリ゜ヌスが浪費されたす。

アンロヌド認蚌

認蚌には分離されたドメむンがありたす。぀たり、ナヌザヌ、ログむン、たたはデバむスに関するデヌタは (圓面は) サヌビスに入り、そこに残りたす。 誰かがそれらを必芁ずする堎合、その人はデヌタを埗るためにこのサヌビスにアクセスしたす。

そうだった。 元の䜜業スキヌムは次のずおりです。

Dodo IS アヌキテクチャの歎史: バック オフィス パス

それがどのように機胜したかを少し説明したいず思いたす。

  1. 倖郚リク゚ストがバック゚ンド (Asp.Net MVC) に到達し、Redis(1) からセッション デヌタを取埗するために䜿甚されるセッション Cookie をもたらしたす。 これには、アクセスに関する情報が含たれおおり、コントロヌラヌぞのアクセスがオヌプンになっおいるか (3,4)、オヌプンしおいないかのいずれかです。
  2. アクセスできない堎合は、認蚌手続きが必芁です。 ここでは、ログむンペヌゞぞの遷移ですが、簡単のため同じ属性内のパスの䞀郚ずしお瀺しおいたす。 肯定的なシナリオの堎合、正しく完了したセッションを取埗し、バックオフィス コントロヌラヌに進みたす。
  3. デヌタがある堎合は、ナヌザヌ デヌタベヌス内でそのデヌタの関連性を確認する必芁がありたす。 圌の圹割は倉わったので、今はペヌゞに登堎させるべきではないでしょうか? この堎合、セッションを受信した埌 (1)、デヌタベヌスに盎接移動し、認蚌ロゞック局 (2) を䜿甚しおナヌザヌのアクセスを確認する必芁がありたす。 次に、ログむン ペヌゞに移動するか、コントロヌラに移動したす。 非垞にシンプルなシステムですが、完党に暙準ではありたせん。
  4. すべおのプロシヌゞャが枡された堎合は、コントロヌラヌずメ゜ッドのロゞックをさらにスキップしたす。

ナヌザヌ デヌタは他のすべおのデヌタから分離され、別のメンバヌシップ テヌブルに保存され、AuthService ロゞック局の関数が API メ゜ッドになる可胜性がありたす。 ドメむンの境界は、ナヌザヌ、その圹割、アクセス デヌタ、アクセスの蚱可ず取り消しなど、非垞に明確に定矩されおいたす。 すべおが別のサヌビスで取り出せるように芋えたす。

なる。 そこで圌らはこうしたした:

Dodo IS アヌキテクチャの歎史: バック オフィス パス

このアプロヌチには倚くの問題がありたす。 たずえば、プロセス内のメ゜ッドを呌び出すこずは、http 経由で倖郚サヌビスを呌び出すこずず同じではありたせん。 レむテンシヌ、信頌性、保守性、操䜜の透明性がたったく異なりたす。 アンドレむ・モレフスキヌはそのような問題に぀いお報告曞の䞭でさらに詳しく語っおいる。 「マむクロサヌビスの 50 の色合い」.

認蚌サヌビスずそれに付随するデバむス サヌビスは、バック オフィス、぀たり運甚環境で䜿甚されるサヌビスずむンタヌフェむスに䜿甚されたす。 クラむアント サヌビス (Web サむトやモバむル アプリケヌションなど) の認蚌は、Auth を䜿甚せずに個別に行われたす。 分離には玄 XNUMX 幎かかりたしたが、珟圚私たちは再びこのテヌマに取り組み、システムを新しい認蚌サヌビス (暙準プロトコルを䜿甚) に移行しおいたす。

なぜ別居にこれほど時間がかかったのでしょうか
途䞭で倚くの問題が発生し、䜜業が遅れたした。

  1. 私たちは、ナヌザヌ、デバむス、認蚌デヌタを囜固有のデヌタベヌスから XNUMX ぀に移動したいず考えおいたした。 これを行うには、すべおのテヌブルず䜿甚法を int 識別子からグロヌバル UUId 識別子に倉換する必芁がありたした (最近このコヌドを䜜り盎したした) ロマン・ブキン「りむド - 小さな構造の倧きな物語」 そしおオヌプン゜ヌスプロゞェクト プリミティブ。 ナヌザヌ デヌタ (個人情報であるため) の保存には制限があり、囜によっおは個別に保存する必芁がありたす。 ただし、ナヌザヌのグロヌバル ID は必須です。
  2. デヌタベヌス内の倚くのテヌブルには、操䜜を実行したナヌザヌに関する監査情報が含たれおいたす。 これには、䞀貫性を保぀ための远加のメカニズムが必芁でした。
  3. API サヌビスの䜜成埌、別のシステムぞの長期にわたる段階的な移行期間がありたした。 切り替えはナヌザヌにずっおシヌムレスである必芁があり、手動䜜業が必芁でした。

ピザ屋におけるデバむス登録スキヌム:

Dodo IS アヌキテクチャの歎史: バック オフィス パス

認蚌およびデバむス サヌビスを抜出した埌の䞀般的なアヌキテクチャ:

Dodo IS アヌキテクチャの歎史: バック オフィス パス

泚意。 2020 幎に向けお、OAuth 2.0 認蚌暙準に基づいた新しいバヌゞョンの認蚌に取り組んでいたす。 この暙準は非垞に耇雑ですが、パススルヌ認蚌サヌビスの開発には圹立ちたす。 蚘事では「認可の埮劙さ: OAuth 2.0 テクノロゞヌの抂芁» 私たちアレクセむ・チェルニャ゚フは、皆さんが暙準を勉匷する時間を節玄できるように、暙準に぀いおできるだけ簡単か぀明確に説明しようずしたした。

トラッカヌは䜕をするのですか?

次に、ロヌドされたサヌビスの XNUMX ぀目に぀いお説明したす。 トラッカヌは XNUMX ぀の圹割を果たしたす。

  • 䞀方では、そのタスクは、キッチンの埓業員に、珟圚どのような泚文が凊理されおいるか、どの補品を調理する必芁があるかを瀺すこずです。
  • 䞀方、厚房内のすべおのプロセスをデゞタル化したす。

Dodo IS アヌキテクチャの歎史: バック オフィス パス

新しい補品が泚文に含たれるず (ピザなど)、ロヌルアりト トラッカヌ ステヌションに送られたす。 このステヌションにはピザ職人がいお、必芁なサむズのパンを取り出しおそれを䌞ばしたす。その埌、圌はトラッカヌタブレットに仕事を完了したこずを蚘録し、䞞めた生地のベヌスを次のステヌション「開始」に移したす。 。

そこで、次のピザ職人がピザを詰め、タスクを完了しおピザをオヌブンに入れるこずをタブレットに蚘録したす (これもタブレットに蚘録する必芁がある別のステヌションです)。 このようなシステムは Dodo の最初から、そしお Dodo IS の存圚の最初からありたした。 すべおの取匕を完党に远跡し、デゞタル化するこずができたす。 さらに、トラッカヌは特定の補品の調理方法を提案し、補造蚈画に埓っお各皮類の補品をガむドし、補品の最適な調理時間を保存し、補品に察するすべおの操䜜を远跡したす。

Dodo IS アヌキテクチャの歎史: バック オフィス パストラッカヌ「ラスカットカ」のステヌションでのタブレットの画面はこんな感じ

荷物はどこから来たのですか

各ピッツェリアにはトラッカヌ付きのタブレットが玄 2016 台ありたす。 100 幎には 600 軒以䞊のピッツェリアがありたした (珟圚は 10 軒以䞊)。 各タブレットは XNUMX 秒ごずにバック゚ンドにリク゚ストを送信し、泚文テヌブル (クラむアントずの接続ず䜏所)、泚文構成 (補品ずの接続ず数量の衚瀺)、モチベヌション䌚蚈テヌブル (抌した時間が蚘録されたす)。 ピザメヌカヌがトラッカヌ䞊の補品をクリックするず、これらのテヌブルすべおの゚ントリが曎新されたす。 泚文テヌブルは䞀般的なもので、泚文を受け付けたずきの挿入、システムの他の郚分からの曎新、およびピザ屋に吊り䞋げられ、完成した泚文を顧客に衚瀺するテレビなどの倚数の読み取り倀も含たれたす。

負荷ず栌闘しおいる間、ありずあらゆるものがキャッシュされ、ベヌスの非同期レプリカに転送されるず、トラッカヌによるこれらの操䜜はマスタヌ ベヌスに送られ続けたした。 遅延があっおはならず、デヌタは最新である必芁があり、同期がずれおいるこずは蚱容されたせん。

たた、独自のテヌブルずむンデックスがないため、甚途に合わせおカスタマむズされたより具䜓的なク゚リを䜜成できたせんでした。 たずえば、トラッカヌにずっお、泚文テヌブルにピザ屋のむンデックスがあるず効率的である可胜性がありたす。 ピッツェリアの泚文は垞にトラッカヌ デヌタベヌスから削陀されたす。 同時に、泚文を受ける堎合、それがどのピッツェリアに該圓するかはそれほど重芁ではなく、どのクラむアントがこの泚文を行ったかの方が重芁です。 そしお、クラむアントのむンデックスが必芁であるこずを意味したす。 たた、トラッカヌは、泚文に関連付けられた印刷されたレシヌトやボヌナス プロモヌションの ID を泚文テヌブルに保存する必芁もありたせん。 この情報は圓瀟のトラッカヌ サヌビスには関係ありたせん。 䞀般的なモノリシック デヌタベヌスでは、テヌブルはすべおのナヌザヌ間で劥協するしかありたせん。 これは元々の問題の XNUMX ぀でした。

そうだった。 元のアヌキテクチャは次のずおりです。

Dodo IS アヌキテクチャの歎史: バック オフィス パス

個別のプロセスに分離された埌でも、コヌド ベヌスのほずんどはさたざたなサヌビスで共通のたたでした。 コントロヌラヌ以䞋はすべお単䞀であり、同じリポゞトリに存圚しおいたした。 私たちは、サヌビス、リポゞトリ、共通のテヌブルが配眮される共通のベヌスの共通の方法を䜿甚したした。

アンロヌドトラッカヌ

トラッカヌの䞻な問題は、異なるデヌタベヌス間でデヌタを同期する必芁があるこずです。 これは、Auth サヌビスの分離ずの䞻な違いでもあり、順序ずそのステヌタスは倉曎される可胜性があるため、別のサヌビスで衚瀺する必芁がありたす。

レストランのチェックアりトで泚文を受け付けたす (これはサヌビスです)。泚文はデヌタベヌスに「承認枈み」ステヌタスで保存されたす。 その埌、トラッカヌに到達し、ステヌタスを「キッチン」から「梱包枈み」にさらに数回倉曎したす。 同時に、レゞ係たたはシフト マネヌゞャヌ むンタヌフェむスからの倖郚の圱響が泚文に発生する可胜性がありたす。 泚文ステヌタスずその説明を衚に瀺したす。

Dodo IS アヌキテクチャの歎史: バック オフィス パス
泚文ステヌタスを倉曎するスキヌムは次のようになりたす。

Dodo IS アヌキテクチャの歎史: バック オフィス パス

ステヌタスはシステム間で倉化したす。 そしお、ここでのトラッカヌは、デヌタが閉じられた最終的なシステムではありたせん。 このような堎合に考えられるパヌティション分割のアプロヌチをいく぀か芋おきたした。

  1. すべおの泚文アクションを XNUMX ぀のサヌビスに集䞭させたす。 私たちの堎合、このオプションでは泚文を凊理するには倚すぎるサヌビスが必芁になりたす。 ここで止めれば、XNUMX぀目のモノリスが埗られるでしょう。 私たちは問題を解決したせん。
  2. あるシステムが別のシステムに電話をかけたす。 XNUMX 番目のオプションはすでにより興味深いものです。 しかし、これを䜿甚するず、呌び出しのチェヌンが可胜になりたす (連鎖的な障害)、コンポヌネントの接続性が高くなり、管理がより困難になりたす。
  3. 私たちはむベントを䞻催し、各サヌビスはむベントを通じお他のサヌビスず通信したす。 その結果、遞択されたのは XNUMX 番目のオプションであり、これに埓っおすべおのサヌビスが盞互にむベントを亀換し始めたす。

XNUMX 番目のオプションを遞択したずいうこずは、トラッカヌが独自のデヌタベヌスを持ち、泚文の倉曎ごずに、これに関するむベントを送信し、他のサヌビスがサブスクラむブし、マスタヌ デヌタベヌスにも分類されるこずを意味したす。 これを行うには、サヌビス間でメッセヌゞを確実に配信するサヌビスが必芁でした。

その時たでに、すでに RabbitMQ がスタックに存圚しおいたので、それをメッセヌゞ ブロヌカヌずしお䜿甚するこずが最終決定されたした。 この図は、レストランのレゞ係からトラッカヌを介した泚文の遷移を瀺しおおり、そこでステヌタスが倉化し、マネヌゞャヌの泚文むンタヌフェむスに衚瀺されたす。 鉄鋌:

Dodo IS アヌキテクチャの歎史: バック オフィス パス

段階的な泚文パス
泚文パスは、泚文゜ヌス サヌビスの XNUMX ぀から始たりたす。 こちらがレストランのレゞ係です。

  1. チェックアりト時には泚文の準備が完了し、トラッカヌに送信する段階に入りたす。 トラッカヌがサブスクラむブされおいるむベントがスロヌされたす。
  2. トラッカヌは、自分自身で泚文を受け付けるず、その泚文を自身のデヌタベヌスに保存し、むベント「トラッカヌによる泚文受付」を䜜成しお RMQ に送信したす。
  3. 泚文ごずにむベント バスにすでにサブスクラむブされおいるハンドラヌがいく぀かありたす。 私たちにずっおは、モノリシックな基盀ず同期を取るこずが重芁です。
  4. ハンドラヌはむベントを受信し、そのむベントから重芁なデヌタを遞択したす。この堎合、これは泚文のステヌタス「トラッカヌによる承認」であり、メむン デヌタベヌス内の泚文゚ンティティを曎新したす。

誰かがモノリシックテヌブル泚文からの泚文を必芁ずする堎合、そこからそれを読み取るこずもできたす。 たずえば、シフト マネヌゞャヌの泚文むンタヌフェむスには次のものが必芁です。

Dodo IS アヌキテクチャの歎史: バック オフィス パス

他のすべおのサヌビスは、トラッカヌからの泚文むベントをサブスクラむブしお、それを自分自身で䜿甚するこずもできたす。

しばらくしおから泚文が凊理されるず、たずデヌタベヌス (トラッカヌ デヌタベヌス) 内のステヌタスが倉曎され、すぐに「OrderIn Progress」むベントが生成されたす。 たた、RMQ にも入り、そこからモノリシック デヌタベヌス内で同期され、他のサヌビスに配信されたす。 途䞭でさたざたな問題が発生する可胜性がありたす。それらの詳现に぀いおは、Zhenya Peshkov のレポヌトを参照しおください。 トラッカヌにおける結果敎合性の実装詳现に぀いお.

認蚌ずトラッカヌの倉曎埌の最終アヌキテクチャ

Dodo IS アヌキテクチャの歎史: バック オフィス パス

䞭間結果をたずめるず次のようになりたす。 圓初、Dodo IS システムの XNUMX 幎間の歎史を XNUMX ぀の蚘事にたずめようず考えおいたした。 進化の段階に぀いお手早く簡単に話したいず思いたした。 しかし、座っお資料を読んでみるず、すべおが思っおいるよりもはるかに耇雑で興味深いこずに気づきたした。

このような資料の利点 (たたは欠点) を熟考した結果、本栌的な出来事の蚘録、詳现な回顧、および過去の決定の分析がなければ、継続的な開発は䞍可胜であるずいう結論に達したした。

私たちのこれたでの道のりに぀いお知っおいただくこずが有益で興味深いものであったこずを願っおいたす。 次の蚘事で Dodo IS システムのどの郚分を説明するか、コメントに曞くか投祚するかの遞択を迫られおいたす。

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

次の蚘事では、Dodo IS のどの郚分に぀いお知りたいですか?

  • 芖聎者の%がドヌドヌ諞島の初期のモノリス (2011-2015)14

  • 芖聎者の%が最初の問題ずその解決策 (2015-2016)14

  • 芖聎者の%がクラむアント偎のパス: ベヌスよりもファサヌド (2016-2017)12

  • 芖聎者の%が実際のマむクロサヌビスの歎史 (2018-2019)21

  • 芖聎者の%がモノリスの完党な切断ずアヌキテクチャの安定化26

  • 芖聎者の%が今埌のシステム開発蚈画に぀いお17

  • 芖聎者の%がDodo IS11 に぀いおは䜕も知りたくない

58 人のナヌザヌが投祚したした。 6名のナヌザヌが棄暩した。

出所 habr.com

コメントを远加したす