Tinkoffマガゞンのアヌキテクチャずサヌビスの抂芁

カバヌ



こんにちは



Tinkoff誌は5幎間蚘事を発衚しおいたす。この間、WordPressのブログから、数十のプロゞェクトずツヌルの倧芏暡な自䜜システムに成長したした。私はT-Zで開発を管理しおいたす。今日は、雑誌のアヌキテクチャずそれが機胜するサヌビスに぀いお抂説したす。



T-Z Webサむトは、さたざたなサヌビスのおかげで機胜したす。



  1. サむト゚ンゞン-氎星。
  2. 最前線のモノリポゞトリ、たたは単にモノフロント。
  3. ゜ヌシャルプラットフォヌム。
  4. りラニアは教育プラットフォヌムです。
  5. 機胜-蚈算機、テスト、その他のむンタラクティブ機胜。
  6. モバむルアプリケヌション。
  7. Mediaservice。


スキヌム

T-Zが内郚からどのように機胜するか



次は、これらの各サヌビスの機胜ず、それらが互いにどのように盞互䜜甚するかに぀いおです。



氎星



メむンのバック゚ンドアプリケヌションT — Zはその゚ンゞンです。 2017幎にWordPressがWordPressから移行したずき、独自の゚ンゞンが必芁でした。この゚ンゞンは叀代ロヌマの富ず貿易の神を称えお氎星ず名付けられたした。 Python + Djangoで曞かれおいたす。



マヌキュリヌは、雑誌の読者が芋るペヌゞを収集したす。圌はペヌゞコンポヌネントのいく぀かを自分のdjangoテンプレヌトからのマヌクアップずスタむルに翻蚳したす。蚘事のコンテンツ、雑誌に関するペヌゞ、怜玢結果です。新しいコンポヌネントヘッダヌ、地䞋宀、プロファむルなどの堎合、圌はサヌビスレむダヌに移動したす。サヌビスレむダヌは、すでに私たちの正面からマヌクアップずスタむルを提䟛しおいたす。



Mercuryは、著䜜暩コンテンツ自䜓画像、蚘事、資料の線集構造、公開されたコンテンツの統蚈を保存および凊理したす。゚ディタずレむアりトデザむナに、このすべおのものを管理するためのむンタヌフェむス管理パネルを提䟛したす。



レむアりトデザむナヌは、html構文でゞャヌナル蚘事を入力したす。䟿宜䞊、管理パネルはショヌトコヌドもサポヌトしたす-それらはタグのようなものであり、特別なスタむルを備えたより耇雑な構文構造に展開されるだけです。管理パネルの蚘事の最初からのサヌビスのリストは、ショヌトコヌド[ol type = milchin] [/ ol]で蚘述されおいたす。



むンタヌフェヌス

レむアりトデザむナずずきどき゚ディタが連携するむンタヌフェヌス。



ダッシュボヌド

管理メむン画面。怜玢ず掚奚事項を打ち切るために䜿甚される同じボタン。次に、それらを最適化し、懐かしい理由でボタンを残したした。



ガむド

ショヌトコヌドなどのレむアりト資料のガむド。レむアりト蚭蚈者は、Googleドキュメントにも独自のマニュアルを甚意しおいたす。



蚘事が管理領域に保存されるず、タむポグラファヌがそれを通過したす。これは、テキストの構成の䞀郚を倉曎しお、雑誌のタむポグラフィず線集ポリシヌに準拠するようにするスクリプトです。たずえば、ルヌブル蚘号ず改行しないスペヌスを配眮したす。私たちは既補の゜リュヌションを䜿甚したしたが、結果が私たちに合うようにいく぀かのルヌルを曞き盎したした。



Mercuryは、コンテンツ、ホヌム、蚘事、その他のめったに倉曎されないペヌゞなど、ほずんどのデヌタをキャッシュしたす。この方法により、より倚くのナヌザヌを同時にオンラむンに保぀ために、高䟡な蚈算ずレンダリングを節玄できたす。



雑誌には、他の蚘事を組み合わせたペヌゞがありたす。次に䟋を瀺したす。



  • — , , ;
  • — , ;
  • , ;
  • .


これらのペヌゞを収集するためのルヌルもMercuryによっお凊理されたす。これらは、数匏、手動で蚭定した゚ディタヌ蚭定、たたはそれらの組み合わせです。このような蚭定に぀いおは、個別の構成もありたす。



トラベル

旅行に関する繁殖セクション。このトピックの新しい蚘事が自動的にここに描画され、線集者が遞択のブロックを蚭定したす。



カスタム甚品キット

遞択ショヌケヌス。線集者は圌女のために蚘事を集めたした。



怜玢結果

自動的に収集される怜玢結果。怜玢自䜓も氎星で実装されおいたす。



2020幎4月に、Mercury Retrogradeず呌ばれる新しいバヌゞョンの゚ンゞンのテストを開始したした。コヌドを完党に敎理し、いく぀かのサヌビスに分割しお、新機胜を導入したした。管理者のWeb゜ケット、怜玢の改善などです。Pythonでも蚘述したすが、FastAPIを䜿甚したす-他の倧きな雑誌のバック゚ンドず同様です。



モノフロント



ようやくWordPressからMercuryに移行したずき、雑誌のペヌゞにむンタラクティブ機胜を远加したいず考えたした。djangoテンプレヌトの可胜性は、実行時にペヌゞのコンテンツを倉曎できないため、ここでは制限されおいたす。



䞀連のカスタムペヌゞを開発しないようにするために、本栌的なフロント-Monofrontに投資するこずにしたした。



モノ-1぀のプロゞェクトで収集したため



  • 登録および承認むンタヌフェヌス。
  • コメント。
  • フッタヌ。
  • ヘダヌ。
  • 資料のメタ情報を衚瀺したす。
  • ナヌザヌプロファむル。
  • プロモヌションバナヌ。
  • サブスクリプションフォヌム。
  • サブスクリプション管理ペヌゞ。
  • 教育コヌス。


たた、ナヌザヌむベントのWebトラッキングのロゞックも凊理したす。぀たり、ナヌザヌがログペヌゞにアクセスした堎所、ログペヌゞで䜕をしたかなどです。



フロント゚ンドモノリポゞトリ

リポゞトリでどのように芋えるか。



2020幎には、耇数の独立したアプリケヌションをモノフロントから䜜成し、シンプルなりィゞェットをnpmパッケヌゞに匕き出し、実行時に耇雑なりィゞェットを匕き出しお、蚭蚈システムを高めたいず考えおいたす。テンプレヌトのフロントアプリケヌションを䜜成しお展開したしたが、マテリアルのレンダリングをそこに転送する準備をしおいたす。React、Redux、TypeScriptで䜜成したす。



゜ヌシャルプラットフォヌム



T-Zには、䜜成者のコンテンツだけでなく、ナヌザヌが䜜成したコンテンツもありたす。ナヌザヌは登録し、蚘事にコメントし、賌読し、特別なアンケヌトを通じお線集委員䌚に連絡したす。これはすべお゜ヌシャルプラットフォヌムのおかげで起こりたす。



ナヌザヌを登録たたは承認するために、゜ヌシャルプラットフォヌムは゜ヌシャルネットワヌクのAPIず察話したす。個人デヌタ名前、姓、郵䟿などを含む貎重なナヌザヌデヌタを保存したす。



私たちは圌のプロフィヌルでナヌザヌデヌタを線集するためのむンタヌフェヌスを開発しおいたす。圌の準備ができるたで、私たちは゜ヌシャルネットワヌクで名前ず写真をモデレヌトする責任をシフトしたした。゜ヌシャルネットワヌクが電話番号ぞのバむンドを芁求し始めたため、郚分的には、これがボットの問題を解決した方法です。しかし、問題は、システムが別の゜ヌシャルネットワヌクの1人を別のナヌザヌず芋なすずいう事実に残っおいたす。



ゞャヌナルの著者は通垞2぀のアカりントを持っおいたす。 1぀-マヌキュリヌでは、蚘事の著者を決定したす。 2぀目は、コメントに応答する゜ヌシャルプラットフォヌムです。将来的には1぀の共通アカりントに切り替えるず思いたすが、今のずころ、線集者にずっお少し楜になっただけです。Mercuryアカりントが゜ヌシャルプラットフォヌムで䜜成者のアカりントに関連付けられるず、圌のすべおの蚘事は自動的にそこからプルされたす。



ルヌルなくしおコミュニティは発展したせん。すべおのルヌルに違反者がいたす。したがっお、゜ヌシャルプラットフォヌムは、コメントをチェックしお違反者を犁止するためのむンタヌフェむスを線集者ずモデレヌタヌに提䟛したす。



管理むンタヌフェヌス

モデレヌタヌは、ロシア連邊の法埋たたはサむトの䜿甚芏則に反する堎合、コメントを削陀したり、コメントの䞀郚を停装したりできたす。



゜ヌシャルプラットフォヌムは、すべおのナヌザヌのコメントず関連情報いいね、嫌い、蚘事ぞのコメントか、スレッド内の他のナヌザヌぞの応答かを保存したす。コメント自䜓は特別なボットを介しおTelegramにブロヌドキャストされるため、モデレヌタヌはすばやく反応し、線集者はフィヌドバックを受け取るこずができたす。



倚くの堎合、私たちは読者に線集者ず䜕かを共有するこずを勧めたす圌らの職業、予算の管理方法、たたは圌らを激怒させるものに぀いお話したす。ここでは、フォヌムの質問に察する回答を保存するロゞックを操䜜し、それらが線集者に届くようにする必芁がありたす。以前は、Googleフォヌムを手動で開始し、デヌタ転送を前面からねじ蟌んでいたしたが、珟圚は゜ヌシャルプラットフォヌムでこれを自動化しおいたす。



投祚゚ディタヌ

線集者自身が新しい投祚を䜜成し、それを構成する質問を線集し、ショヌトコヌドから投祚を組み立おるこずができたす。



りラニア



2019幎に、独自の教育プラットフォヌムを立ち䞊げるこずを決定したした。新しい実䜓がすぐに珟れたした孊生、コヌス、レッスン、詊隓。それらを䜜成および線集するために、独立したバック゚ンドおよび管理パネル-Uraniaを開発したした。圌らは叀代神話のトピックを続けたかっただけです。しかし、䞀般的には、りラニアを単なる教科曞ず呌ぶこずがよくありたす。



孊生が登録するずき、私たちはすでに゜ヌシャルプラットフォヌムにある同じアカりントを圌の識別子ずしお䜿甚したす。䞊蚘には、珟圚のメヌル、孊生が取っおいるコヌス、および孊習の進捗状況が远加されおいたす。この方法では、デヌタを混合したせんが、同時に、゜ヌシャルプラットフォヌムず単玔に同期できたす。同じコメントで、゜ヌシャルプラットフォヌムず教科曞のデヌタは䞊べお䜿甚されたす。たずえば、圌が修了したコヌスのナヌザヌにメダルを匕くためです。このデヌタは䞀床に1぀のIDを取埗するず䟿利です。



コヌス自䜓の内容は、りラニアがただ氎星から取っおいたす。コヌスはレッスンで構成されおおり、レッスンは実際には巧劙なスタむルの蚘事です。メむンコヌスペヌゞずすべおのコヌスの次のコヌスペヌゞで、りラニアは独自に䜜業したす。



投資コヌスのメむンペヌゞ

コヌス「投資方法」のホヌムペヌゞ。



投資コヌスレッスン

ブロヌカヌの遞び方に関するレッスンの断片。



コヌス詊隓を投資する

各レッスンの最埌-資料を統合するためのテスト。コヌスの最埌-詊隓、テスト圢匏。



ゞャヌナルの定期的なテストは衚面でのみ機胜したすが、コヌスでは裏面の解答もチェックしたす。チュヌトリアルは、質問、回答の遞択肢、および正解を栌玍するだけでなく、テストずは別のアプリケヌションであるため、それらを操䜜したす。それらに぀いおもう少しお話したす。



特城



T — Gでは、蚈算機、マップ、テスト、投祚、その他のむンタラクティブな資料が公開されたす。これらは、そのような個別の最前線のアプリケヌションです。私たちはそれらを別のチヌムずしお開発し、Monofrontにドラッグしたせん。機胜はJavaScriptバンドルで収集され、Mercuryは蚭定に関する情報ずずもにペヌゞでそれらを眮き換えたす。



機胜の読み蟌み

ip-calendar.jsにはむンタラクティブのすべおのロゞックが含たれおおり、SPが時間通りにレポヌトを送信するのに圹立ちたす。 CDN䞊のバンドルの完党なアドレスにはハッシュが含たれおいたす。これは、むンタラクティブのバヌゞョン管理をサポヌトする方法です。



ほずんどのむンタラクティブ機胜は、最倧2぀の堎所で䜿甚されたす。別のペヌゞず同じトピックの蚘事内です。しかし、それらのいく぀かは、私たちがそれらを䜕十回も䜿甚するほど根づきたした。たずえば



  • 読者が䟡倀のある富の皮類を芋぀けたり、知識を教育コヌスに統合したりするのに圹立぀テスト。
  • コメントで議論を巻き起こす投祚。
  • 珟圚の為替レヌトで珟地通貚からルヌブルに䟡栌を倉換し、その倀を商品に代入する通貚亀換機。
  • 1぀のセットからすべおのブラりザずすべおのデバむスに絵文字を提䟛する絵文字サヌビス。


倖貚䞡替

通貚亀換噚はすべおの䟡栌を珟圚の為替レヌトでルヌブルに換算したす。線集者はこれを通貚機胜ず呌んでいたす。



投祚䟋

蚘事の最埌にあるサンプル調査。



モバむルアプリケヌション



私たちが䜜ったアプリケヌションは開発䞭たたはクロヌズドベヌタテスト䞭です。しかし、あなたはすでに䜕かを蚀うこずができたす。



たず、クラむアントパヌツは既にマガゞンにあるすべおのバック゚ンドを積極的に䜿甚したす。マヌキュリヌのコンテンツ、゜ヌシャルプラットフォヌムのナヌザヌ、りラニアの孊生の進捗状況を取埗したす。次に、特別なアプリケヌションコンテンツを凊理し、プッシュ通知を解決する独自のバック゚ンドがありたす。



アプリケヌション自䜓は、React NativeずTypeScriptで蚘述されおいたす。バック゚ンドはNode.jsずTypeScriptに基づいおいたす。



コヌスアプリ

これは、モバむルアプリケヌションぞの投資に関するコヌスのレッスンのようです。アプリケヌションには別のバック゚ンドがありたす。そこでは、アプリケヌション内のみのコンテンツを凊理したす。コヌス終了埌に远加で読むためのオヌディオレッスンず蚘事です。プッシュ通知にも同じバック゚ンドを䜿甚したす。



ゞャヌナルアプリフィヌド

これは、雑誌のモバむルアプリケヌションの最初のバヌゞョンです。これたでのずころ、䞻な機胜はコレクションをサブスクラむブするこずです。このアプリケヌションのバック゚ンドは、ナヌザヌ蚭定を保存および凊理し、プッシュ通知も担圓したす。



メディアサヌビス



雑誌の䞻なメディアファむルは画像です。メディアサヌビスは各画像をチェックし、webpずpngに倉換し、サむズを最適化し、構成からテンプレヌト甚にトリミングしお、CDNにアップロヌドしたす。それに応じお、圌は凊理結果ぞのリンクを受け取りたす-元のフォヌマットから取埗されたさたざたなフォヌマットずサむズの画像。サヌビスは、残りのメディアファむルをCDNに䞁寧に配眮したす。



Mediaserviceは、サヌバヌレスモデルで特に泚目に倀したす。サヌバヌやクラりドに配備される本栌的なバック゚ンドではありたせん。Googleのクラりド機胜ずpub / subパタヌンのみを䜿甚したす。



Mediaserviceは、コメントずプロフィヌルのカスタム写真に゜ヌシャルプラットフォヌムを䜿甚しおいたす。この機胜はただ生産段階ではありたせんが、珟圚取り組んでいたす。



次は䜕ですか



次の蚘事では、サヌビス、むンフラストラクチャ、チヌムプロセスに぀いお詳しく説明したす。



空宀T — Zh。

ギタブT-Zh。



All Articles