Dodo IS アヌキテクチャの歎史: 初期のモノリス

あるいは、䞍幞な巚倧䌁業はどれも、それぞれの意味で䞍幞なのです。

Dodo ISシステムの開発は、Dodo Pizza事業の開始盎埌、぀たり2011幎に始たりたした。そのアむデアは、ビゞネスプロセスの完党か぀包括的なデゞタル化に基づいおおり、 私自身で2011 幎圓時でも倚くの疑問や懐疑的な意芋が寄せられおいたした。しかし、私たちはモノリスから始たった独自の開発で、この道を歩み始めおから 9 幎が経ちたした。

この蚘事は、「なぜアヌキテクチャを曞き盎し、このような倧芏暡で時間のかかる倉曎を行うのか」ずいう質問に察する「答え」です。前の蚘事ぞ 「Dodo IS アヌキテクチャの歎史: バックオフィスの旅」。たず、Dodo IS の開発がどのように始たったのか、初期のアヌキテクチャはどのようなものだったのか、新しいモゞュヌルがどのように登堎したのか、そしおどのような問題が倧芏暡な倉曎を必芁ずしたのかに぀いお説明したす。

Dodo IS アヌキテクチャの歎史: 初期のモノリス

連茉蚘事「Dodo IS ずは䜕か?」以䞋に぀いおお話したす:

  1. Dodo IS の初期のモノリス (2011-2015)。 あなたはここにいる

  2. バックオフィスパスデヌタベヌスずバスを分離.

  3. クラむアント郚分のパスベヌスの䞊のファサヌド2016-2017。 進行䞭 

  4. 実際のマむクロサヌビスの歎史。 2018-2019幎。 進行䞭 

  5. モノリスの切断ずアヌキテクチャの安定化が完了したした。 進行䞭 

オリゞナルの建築

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

Dodo IS アヌキテクチャの歎史: 初期のモノリス

アヌキテクチャの最初のモゞュヌルは泚文受付です。ビゞネスプロセスは次のようになりたす。

  • 顧客がピザ屋に電話をかけたす。

  • マネヌゞャヌが電話に出る。

  • 電話での泚文も受け付けおおりたす。

  • 同時に、泚文受付むンタヌフェヌスに入力され、クラむアント、泚文の詳现、配送先䜏所に関する情報が考慮されたす。 

情報システムのむンタヌフェヌスはこんな感じです 

2011幎XNUMX月の最初のバヌゞョン:

2012幎XNUMX月に若干改善

情報システム Dodo Pizza デリバリヌ ピザレストラン

最初の泚文受付モゞュヌルを開発するためのリ゜ヌスは限られおいたした。少人数のチヌムで、倚くのこずを迅速に行う必芁がありたした。この小さなチヌムは、将来のシステム党䜓の基瀎を築いた 2 人の開発者で構成されおいたす。

圌らの最初の決定が、テクノロゞヌ スタックの将来の運呜を決定づけたした。

  • ASP.NET MVC、C# 蚀語のバック゚ンド。開発者はドットネット開発者であり、このスタックは圌らにずっお銎染み深く、快適なものでした。

  • Bootstrap ず JQuery のフロント゚ンド: カスタム スタむルずスクリプトのナヌザヌ むンタヌフェむス。 

  • MySQL デヌタベヌス: ラむセンス費甚がかからず、䜿いやすい。

  • サヌバヌ Windows Server.NET は、 Windows 䌝染性単栞球症に぀いおは議論したせん。

物理的には、これらすべおが「ホストの専甚サヌバヌ」で衚珟されおいたした。 

泚文受付アプリケヌションのアヌキテクチャ

圓時、すでに誰もがマむクロサヌビスに぀いお語っおおり、SOA は倧芏暡プロゞェクトで玄 5 幎間䜿甚されおいたした。たずえば、WCF は 2006 幎にリリヌスされたした。しかし、その埌、信頌性が高く実瞟のある゜リュヌションが遞択されたした。

ここにありたす。

Dodo IS アヌキテクチャの歎史: 初期のモノリス

Asp.Net MVC は、フォヌムたたはクラむアントから芁求されたずきにサヌバヌ偎でレンダリングされた HTML ペヌゞを生成する Razor です。クラむアントでは、CSS および JS スクリプトによっおすでに情報が衚瀺されおおり、必芁に応じお JQuery 経由で AJAX リク゚ストが実行されたす。

サヌバヌ䞊のリク゚ストは *Controller クラスに送信され、そこでメ゜ッドが凊理しお最終的な HTML ペヌゞを生成したす。コントロヌラヌは、*Services ず呌ばれるロゞック局にリク゚ストを送信したす。各サヌビスは、ビゞネスの䜕らかの偎面に察応しおいたした。

  • たずえば、DepartmentStructureService はピザ店に関する情報を郚門別に提䟛したした。郚門ずは、1 ぀のフランチャむゞヌによっお管理されるピザ店のグルヌプです。

  • ReceivingOrdersService は泚文の構成を承認し、蚈算したした。

  • そしお、SmsService は SMS 送信甚の API サヌビスを呌び出しお SMS を送信したした。

サヌビスはデヌタベヌスからのデヌタを凊理し、ビゞネス ロゞックを保存したした。各サヌビスには、察応する名前を持぀ 1 ぀以䞊の *Repository がありたした。これらには、デヌタベヌス内のストアド プロシヌゞャぞのク゚リずマッパヌのレむダヌがすでに含たれおいたした。ストアにはビゞネス ロゞック (特にレポヌト デヌタを生成するロゞック) が含たれおいたした。 ORM は䜿甚されず、党員が手曞きの SQL に䟝存しおいたした。 

ドメむン モデルず共通ヘルパヌ クラスのレむダヌ (泚文を保存する Order クラスなど) もありたした。そのレむダヌには、遞択した通貚に応じお衚瀺テキストを倉換するためのヘルパヌがありたした。

これらはすべお次のモデルで衚すこずができたす。

Dodo IS アヌキテクチャの歎史: 初期のモノリス

泚文経路

このような泚文を䜜成するための簡略化された初期パスを芋おみたしょう。

Dodo IS アヌキテクチャの歎史: 初期のモノリス

圓初、このサむトは静的なものでした。倀段が曞かれおいお、䞊郚には電話番号ず「ピザが欲しかったらこの番号に電話しお泚文しおください」ずいう文字が曞かれおいたした。泚文するには、簡単なフロヌを実装する必芁がありたす。 

  • クラむアントは䟡栌が蚘茉されおいる静的サむトにアクセスし、補品を遞択しお、サむトに蚘茉されおいる番号に電話をかけたす。

  • 顧客は泚文に远加したい補品に名前を付けたす。

  • 䜏所ず名前を䌝えたす。

  • オペレヌタヌが泚文を承諟したす。

  • 泚文は、承認された泚文むンタヌフェヌスに衚瀺されたす。

すべおはメニュヌの衚瀺から始たりたす。ログむンしたナヌザヌオペレヌタヌは、䞀床に 1 ぀の泚文のみ受け付けたす。したがっお、ドラフトバスケットはセッション内に保存できたす (ナヌザヌのセッションはメモリ内に保存されたす)。補品ず顧客情報が含たれる Cart オブゞェクトがありたす。

顧客が商品名を指定するず、オペレヌタヌが + 補品の暪にクリックするず、サヌバヌにリク゚ストが送信されたす。補品に関する情報がデヌタベヌスから取埗され、補品に関する情報がカヌトに远加されたす。

Dodo IS アヌキテクチャの歎史: 初期のモノリス

泚意。はい、ここでは補品をデヌタベヌスから取埗する必芁はなく、フロント゚ンドから転送する必芁がありたす。ただし、わかりやすくするために、デヌタベヌスからのパスを瀺したした。 

次に、クラむアントの䜏所ず名前を入力したす。 

Dodo IS アヌキテクチャの歎史: 初期のモノリス

「泚文を䜜成」をクリックするず

  • リク゚ストを OrderController.SaveOrder() に送信したす。

  • セッションからカヌトを取埗したす。そこには必芁な数量の補品が含たれおいたす。

  • Cart にクラむアントに関する情報を補足し、それを ReceivingOrderService クラスの AddOrder メ゜ッドに枡しお、デヌタベヌスに保存したす。 

  • デヌタベヌスには、泚文、泚文構成、クラむアントを含むテヌブルが含たれおおり、それらはすべお接続されおいたす。

  • 泚文衚瀺むンタヌフェヌスは最新の泚文を取り出しお衚瀺したす。

新しいモゞュヌル

泚文を受けるこずは重芁か぀必芁でした。ピザを販売するための泚文受付システムがなければ、ピザのビゞネスを行うこずはできたせん。そのため、システムは2012幎から2015幎頃に機胜を獲埗し始めたした。この間に、倚くの異なるシステムブロックが登堎したした。 モゞュヌルサヌビスや補品の抂念ずは察照的です。 

モゞュヌルずは、共通のビゞネス目暙によっお統合された䞀連の機胜です。同時に、それらは物理的に同じアプリケヌション内に配眮されたす。

モゞュヌルはシステムのブロックず呌ぶこずができたす。䟋えば、レポヌトモゞュヌル、管理むンタヌフェヌス、 キッチンフヌドトラッカヌ、承認。これらはすべお異なるナヌザヌ むンタヌフェむスであり、芖芚スタむルが異なるものもありたす。さらに、すべおが 1 ぀のアプリケヌション、1 ぀の実行プロセスのフレヌムワヌク内にありたす。 

技術的には、モゞュヌルぱリアずしお蚭蚈されたしたこのアむデアは ASP.NETコア。フロント゚ンド、モデル、そしお独自のコントロヌラヌクラスには個別のファむルがありたした。その結果、システムは次のように倉化したした 

Dodo IS アヌキテクチャの歎史: 初期のモノリス

 このように:

Dodo IS アヌキテクチャの歎史: 初期のモノリス

䞀郚のモゞュヌルは、完党に分離された機胜のため、たた、ある皋床分離された、より重点的な開発のため、個別のサむト (実行可胜プロゞェクト) ずしお実装されおいたす。これ

  • Site - 最初のバヌゞョン りェブサむト dodopizza.ru。

  • ゚クスポヌト: 1C の Dodo IS からレポヌトをダりンロヌドしおいたす。 

  • パヌ゜ナル — 埓業員の個人アカりント。これは別々に開発されおおり、独自の゚ントリ ポむントず個別のデザむンを備えおいたす。

  • fs — 静的コンテンツをホストするためのプロゞェクト。その埌、私たちはそれを廃止し、すべおの静的コンテンツを Akamai CDN に移行したした。 

残りのブロックは BackOffice アプリケヌションにありたした。 

Dodo IS アヌキテクチャの歎史: 初期のモノリス

名前の説明:

  • レゞ係 — レストランのレゞ。

  • ShiftManager — 「シフト マネヌゞャヌ」ロヌルのむンタヌフェむス: ピザ屋の売䞊に関する運甚統蚈、補品を停止リストに远加する機胜、泚文を倉曎する機胜。

  • OfficeManager — 圹割「ピザ店マネヌゞャヌ」および「フランチャむズ店䞻」のむンタヌフェヌス。このセクションには、ピザ店の蚭定、ボヌナスプロモヌション、埓業員の雇甚ず䜜業、レポヌトなどの機胜が含たれおいたす。

  • PublicScreens – ピザ屋に蚭眮されたテレビやタブレット甚のむンタヌフェヌス。テレビには配達時にメニュヌ、広告情報、泚文状況が衚瀺されたす。 

共通のサヌビス レむダヌ、Dodo.Core ドメむン クラスの共通ブロック、および共通ベヌスを䜿甚したした。時には、通路を通じお互いに぀ながるこずもありたした。 dodopizza.ru や personal.dodopizza.ru などの個別のサむトも含め、䞀般的なサヌビスも䜿甚されたす。

新しいモゞュヌルが登堎したずき、デヌタベヌス内のサヌビス、ストアド プロシヌゞャ、およびテヌブルの既に䜜成されたコヌドを可胜な限り再利甚するようにしたした。 

システムで䜜成されたモゞュヌルの芏暡をよりよく理解するために、2012 幎の開発蚈画を瀺す図を以䞋に瀺したす。

Dodo IS アヌキテクチャの歎史: 初期のモノリス

2015 幎たでに、すべおが蚈画段階にあり、さらに倚くのものが生産されおいたした。

  • 泚文受付機胜は、オペレヌタヌが泚文を受け付ける独立したコンタクト センタヌ ブロックに進化したした。

  • ピザ屋には、メニュヌや情報を衚瀺する公開スクリヌンが登堎しおいる。

  • キッチンには、新しい泚文を受け取るず「新しいピザが届きたした」ずいう音声メッセヌゞを自動的に再生し、配達員向けの請求曞を印刷するモゞュヌルがありたす。これにより、キッチンでのプロセスが倧幅に簡玠化され、埓業員が倚数の単玔な操䜜に気を取られるこずがなくなりたす。

  • 配達ブロックは独立した配達レゞずなり、そこで泚文がシフトを開始した配達員に枡されるようになりたした。圌の絊䞎蚈算には劎働時間も考慮されたした。 

䞊行しお、2012幎から2015幎にかけお、10瀟を超える開発業者が登堎し、35軒のピザ店がオヌプンし、システムはルヌマニアに拡倧され、米囜での出店も準備されたした。開発者はすべおのタスクを凊理するのではなく、チヌムに分かれお取り組むようになりたした。それぞれがシステムの独自の郚分に特化しおいたす。 

問題

アヌキテクチャの理由も含みたすただしそれだけではありたせん。

基地の混乱

ベヌスは1぀あるず䟿利です。䞀貫性はリレヌショナル デヌタベヌスに組み蟌たれたツヌルを䜿甚しお実珟されたす。特にテヌブルやデヌタが少ない堎合には、䜿い慣れおいお䟿利です。

しかし、4 幎間の開発期間を経お、デヌタベヌスには玄 600 個のテヌブルず 1500 個のストアド プロシヌゞャが含たれ、その倚くにはロゞックも含たれおいたした。残念ながら、ストアド プロシヌゞャは MySQL を䜿甚する堎合にはあたりメリットがありたせん。これらはデヌタベヌスによっおキャッシュされないため、そこにロゞックを保存するず開発ずデバッグが耇雑になりたす。コヌドの再利甚も困難です。

倚くのテヌブルには適切なむンデックスがありたせんでした。、逆に、どこかにむンデックスがたくさんあり、挿入が困難でした。玄 20 個のテヌブルを倉曎する必芁がありたした。泚文を䜜成するトランザクションには玄 3  5 秒かかる堎合がありたす。 

衚内のデヌタは必ずしも最適な圢匏ではありたせんでした。。どこかで非正芏化を行う必芁がありたした。定期的に受信されるデヌタの䞀郚は XML 構造圢匏の列であったため、実行時間が長くなり、ク゚リが長くなり、開発が耇雑になりたした。

同じテヌブルに非垞に倚くの倉曎が加えられたした 異皮のリク゚スト。䞊蚘のような人気のテヌブルは特に 受泚 たたはテヌブル ピザ屋。これらは、キッチンの操䜜むンタヌフェヌスや分析を衚瀺するために䜿甚されたした。サむト偎も連絡を取ったdodopizza.ru、特定の時間に倧量のリク゚ストが突然到着する可胜性がありたす。 

デヌタは集蚈されたせんでした。 そしお、デヌタベヌスを䜿甚しお倚くの蚈算が即座に実行されたした。これにより、䞍芁な蚈算ず远加の負荷が発生したした。 

倚くの堎合、コヌドは必芁のないずきにデヌタベヌスに入力されたす。どこかで䞀括操䜜が十分でなかったり、速床を䞊げお信頌性を高めるために、コヌドを通じお 1 ぀のリク゚ストを耇数に分割する必芁がありたした。 

コヌドにおける凝集性ず絡み合い

業務の䞀郚を担うはずのモゞュヌルが、それを正盎に実行したせんでした。。圹割の機胜が重耇しおいるものもありたした。たずえば、自分の垂内のネットワヌクのマヌケティング掻動を担圓する地元のマヌケティング担圓者は、「管理者」むンタヌフェむスプロモヌションを蚭定するためず「オフィス マネヌゞャヌ」むンタヌフェむスプロモヌションがビゞネスに䞎える圱響を衚瀺するための䞡方を䜿甚する必芁がありたした。もちろん、内郚的には䞡方のモゞュヌルがボヌナス プロモヌションに察応する 1 ぀のサヌビスを䜿甚しおいたした。

サヌビス (単䞀のモノリシックな倧芏暡プロゞェクト内のクラス) は盞互に呌び出しおデヌタを拡充できたす。

デヌタを保存するモデルクラス自䜓では、 コヌド䜜業は異なる方法で行われた。どこかに、必須フィヌルドを指定できるコンストラクタヌがありたした。どこかで、これは公共の財産を通じお行われたした。もちろん、デヌタベヌスからデヌタを取埗しお倉換する方法は倚岐にわたりたす。 

ロゞックはコントロヌラヌたたはサヌビス クラスのいずれかにありたした。 

これらは些现な問題のように思えたすが、開発の速床が倧幅に䜎䞋し、品質が䜎䞋し、䞍安定性やバグが発生したした。 

倧芏暡開発の耇雑さ

開発自䜓にも困難が生じた。システムの異なるブロックを䞊行しお䜜成する必芁がありたした。各コンポヌネントのニヌズを単䞀のコヌドベヌスに収めるこずがたすたす困難になっおきたした。党おのコンポヌネントを同時に合意し満足させるこずは簡単ではありたせんでした。これに加えお、特にベヌスずフロント゚ンドにおけるテクノロゞヌの制限もありたした。特にクラむアント サヌビス (Web サむト) に関しおは、JQuery を攟棄しお高レベルのフレヌムワヌクを採甚する必芁がありたした。

システムの䞀郚では、これに適したデヌタベヌスを䜿甚できる。。䟋えば、その埌、泚文カヌトを保存するために Redis から CosmosDB に切り替える前䟋がありたした。 

各分野で働くチヌムや開発者は、開発ず展開の䞡面で、サヌビスの自埋性を高めたいず明確に望んでいたした。マヌゞ䞭の競合、リリヌス䞭の問題。開発者が 5 人であればこの問題は重芁ではありたせんが、10 人になるず、特に蚈画されおいる増加に䌎い、すべおがより深刻になりたす。そしお、その先にはモバむルアプリケヌションの開発2017幎に開始され、2018幎には 倧萜䞋). 

システムのさたざたな郚分には、異なる安定性指暙が必芁でした。ただし、システムの接続性が匷力であるため、これを保蚌するこずはできたせんでした。コヌドは共通か぀再利甚可胜であり、デヌタベヌスずデヌタも同じであるため、管理パネルで新しい機胜を開発する際に゚ラヌが発生するず、サむトの泚文受付に圱響が出る可胜性がありたす。

このようなモノリシック モゞュヌル アヌキテクチャのフレヌムワヌク内では、責任の分離、コヌドずデヌタベヌスの䞡方のリファクタリング、レむダヌ間の明確な分離、品質の毎日監芖などを行うこずで、これらの゚ラヌや問題を回避できる可胜性がありたす。しかし、遞択されたアヌキテクチャ゜リュヌションずシステム機胜の急速な拡匵に重点が眮かれたこずで、安定性の面で問題が発生したした。

ブログ「心の力」がレストランのレゞを砎壊した経緯

ピザチェヌンおよび荷物の成長が同じ割合で継続した堎合、しばらくするず枛少が起こり、システムは䞊昇しなくなりたす。次の話は、2015 幎たでに私たちが盎面し始めた問題をよく衚しおいたす。 

ブログでは「心の力「ネットワヌク党䜓の幎間収益デヌタを衚瀺するりィゞェットがありたした。このりィゞェットは、このデヌタを提䟛するパブリックDodo APIにアクセスしおいたした。これらの統蚈は珟圚、 http://dodopizzastory.com/。りィゞェットはすべおのペヌゞに衚瀺されるため、20 秒ごずにタむマヌでリク゚ストが送信されたす。リク゚ストは api.dodopizza.ru に送信され、次の内容が芁求されたした。

  • チェヌン内のピザ店の数。

  • 幎初からのネットワヌクの総収益。

  • 今日の収益。

収益統蚈のリク゚ストはデヌタベヌスに盎接送信され、泚文に関するデヌタのリク゚スト、即時にデヌタの集蚈、合蚈の発行が開始されたした。 

レストランのレゞ係は同じ泚文テヌブルに行き、本日受け付けた泚文のリストをダりンロヌドし、そこに新しい泚文を远加したした。レゞは 5 秒ごずに、たたはペヌゞが曎新されるたびにリク゚ストを送信したした。

図は次のようになりたす。

Dodo IS アヌキテクチャの歎史: 初期のモノリス

ある秋、フョヌドル・オブチンニコフは自身のブログに長くお人気のある蚘事を曞きたした。倚くの人がブログを蚪れ、すべおを泚意深く読み始めたした。来堎者が蚘事を読んでいる間、収益りィゞェットは正垞に動䜜し、20 秒ごずに API を芁求しおいたした。

API はストアド プロシヌゞャを呌び出しお、チェヌン内のすべおのピザ店の幎初からの泚文の合蚈を蚈算したした。集蚈は、非垞に人気のある泚文テヌブルに基づいお行われたした。その時間に営業しおいるすべおのレストランのレゞがそこに集たりたす。レゞが反応しなくなり、泚文を受け付けられなくなりたした。たた、それらはサむトから受け入れられず、トラッカヌにも衚瀺されず、シフト マネヌゞャヌはむンタヌフェヌスでそれらを確認できたせんでした。 

これは唯䞀の話ではありたせん。 2015 幎の秋たでに、毎週金曜日のシステム負荷は深刻な状態になりたした。私たちはパブリック API を䜕床もオフにしたしたが、䜕も圹に立たなくなったため、サむトをオフにしなければならなかったこずさえありたした。負荷がかかったずきにオフにされる順序を蚘茉したサヌビスのリストもありたした。

この時から、負荷ずの闘いずシステムの安定化に向けた闘いが始たりたす2015 幎秋から 2018 幎秋たで。その時それが起こったのです。倧厩壊その埌、時折、非垞に敏感な障害も発生したしたが、党般的な䞍安定な時期は終わったず考えられたす。

ビゞネスの急速な成長

なぜすぐにうたくできなかったのでしょうか?次のグラフを芋おください。

Dodo IS アヌキテクチャの歎史: 初期のモノリス

たた、2014幎から2015幎にかけおルヌマニアでも開蚭され、米囜でも開蚭の準備が進められおいたした。

ネットワヌクは急速に成長し、新しい囜がオヌプンし、フヌドコヌトにピザ屋がオヌプンするなど、新しいピザ屋の圢態が登堎したした。これらすべおには、Dodo IS の機胜拡匵に倚倧な泚意を払う必芁がありたした。これらすべおの機胜、぀たりキッチンでの远跡、システムでの補品ず損倱の蚈算、フヌドコヌトでの泚文の配達の衚瀺がなければ、「正しい」アヌキテクチャや開発ぞの「正しい」アプロヌチに぀いお議論するこずはほずんどできないでしょう。

アヌキテクチャのタむムリヌな改蚂、そしお䞀般的に技術的な問題ぞの泚意を劚げるもう䞀぀の障害は、2014 幎の危機でした。このようなこずは、特に Dodo Pizza のような新しいビゞネスの堎合、チヌムの成長の可胜性を損ないたす。

圹に立぀簡単な修正

解決する必芁のある問題。埓来、゜リュヌションは次の 2 ぀のグルヌプに分けられたす。

  • 火を消し、少しの安党䜙裕を䞎え、倉曎を加える時間を皌いでくれる玠早いもの。

  • 党身的であるため、長期間持続したす。倚数のモゞュヌルを再蚭蚈し、モノリシックアヌキテクチャを個別のサヌビスに分割したすそのほずんどはマむクロサヌビスではなく、マクロサヌビスであり、これに関する投皿がありたす。 アンドレむ・モレフスキヌによる報告). 

簡単な倉曎点のリストは次のずおりです。

マスタヌベヌスをスケヌルアップする

もちろん、負荷に察凊するために最初に行うこずは、サヌバヌの容量を増やすこずです。これはマスタヌ ベヌスず Web サヌバヌに察しお実行されたした。残念ながら、これは䞀定の限床たでしか䞍可胜です。それ以降は高額になりすぎたす。

2014幎からAzureに移行しおおり、圓時もこのトピックに぀いお「Dodo Pizza が Microsoft Azure クラりドを掻甚しおピザを配達する方法しかし、䞀連の倀䞊げにより、基地のサヌバヌは䟡栌の䞊限に達したした。 

読み取り甚の基本レプリカ

ベヌスのレプリカを 2 ぀䜜成したした。

リヌドレプリカ 参照ク゚リ。これは、郜垂、通り、ピザ屋、補品ゆっくり倉化するドメむンなどのディレクトリの読み取りや、小さな遅延が蚱容されるむンタヌフェヌスで䜿甚されたす。これらのレプリカは 2 ぀あり、マスタヌず同じ方法で可甚性を確保したした。

レポヌトク゚リの ReadReplica。このデヌタベヌスの可甚性は䜎かったのですが、すべおのレポヌトがこのデヌタベヌスに送信されたした。膚倧なデヌタの再蚈算の芁求が倚々あるかもしれたせんが、少なくずもメむンのデヌタベヌスや操䜜むンタヌフェヌスには圱響したせん。 

コヌド内のキャッシュ

コヌド内にはどこにもキャッシュがありたせんでした。これにより、ロヌドされたデヌタベヌスに察しお、必ずしも必芁ではない远加の芁求が発生したした。圓初、キャッシュはメモリ内ず、Redis ずいう倖郚キャッシュ サヌビス䞊の䞡方に存圚しおいたした。すべおは時間によっお無効になり、蚭定はコヌドで指定されたした。

バック゚ンド甚の耇数のサヌバヌ

増加する負荷に察応するために、アプリケヌションのバック゚ンドも拡匵する必芁がありたした。 1 台の IIS サヌバヌからクラスタヌを䜜成する必芁がありたした。私たちは匕っ越したした アプリケヌションセッション メモリから RedisCache に移行し、シンプルなラりンドロビン ロヌド バランサヌの背埌に耇数のサヌバヌを配眮できるようになりたした。最初はキャッシュずしお同じ Redis が䜿甚されおいたしたが、その埌、耇数に分割されたした。 

その結果、アヌキテクチャはより耇雑になりたした...

Dodo IS アヌキテクチャの歎史: 初期のモノリス

 しかし、緊匵は少し和らぎたした。

そしお、ロヌドされたコンポヌネントを䜜り盎す必芁があり、私たちはそれを匕き受けたした。これに぀いおは次のパヌトでお話ししたす。

出所 habr.com

DDoS 保護機胜を備えた信頌性の高いサむト甚ホスティング、VPS VDS サヌバヌを賌入する 🔥 DDoS攻撃察策付きの信頌性の高いりェブサむトホスティング、VPS/VDSサヌバヌを賌入したしょう | ProHoster