モノリスモノグラム

3698 ワード


導入


https://github.com/kokospapa8/majestic-monolith-django
このプロジェクトは、巨匠を達成するためにスターターdjangoレポですmodular モノリスアーキテクチャ.主な目的は、中規模のアプリケーションにスケールすることができます迅速なプロトタイプ構造の足場スケルトンとサンプルアーキテクチャを提供することです.私は、バックエンドAPIサーバーを構築するのに役に立つテクニックとライブラリを遵守しました.
インスピレーションをMajestic monolith ○○Two Scoops of Django , この起動コードは、開発者の小さなチームのためのスケーラブルなアプリケーションを構築するのに役立ちます.

モノリス


MicroServiceはどこでも、疑いはなく、彼らは次の大きなことは、多くの開発者との同時機能のリリースを必要とする会社です.
しかしながら、MSAは多くの調整を必要とします、そして、作る準備は仕事です.あなたがチームの中の唯一の開発者であるならば、または、中間規模の建築に比較的小さなINAを開発して、MSAは圧倒的でありえます.
DDDの練習によって認知負荷を減らすことができます.コードの分離、データの分離といくつかの雲のアーキテクチャに役立つ、壮大なモノリスdjango(MMD)スケールと大きなチームの調整のために準備することができます.

アプリケーションの例


このrepoはusecaseに続くサンプルアプリケーションを提供します.


私は、アプリケーションを4つのモジュールに分解しましたauth ,畝user ,畝shipping ,畝distribution ) アプリケーションプロトタイピングに使用するテクニックの使用.

モジュール構造


コード


各ドメインは以下の構造からなる.
  • ジャンゴ・アドミン
  • アプリ:Djangoアプリの設定
  • 選択肢:モジュールで使用されるENUMファイル
  • 医者:ヤグ医者
  • イベント:Djangoモジュールから放出されるイベント
  • 例外:カスタム例外
  • モデル:普通のジャンゴモデル
  • マネージャ:Querysetマネージャ
  • シリアライズ: DRFシリアル
  • セレクタ:結合を必要とするクエリ
  • サービス:ドメインのためのBiz論理
  • ドメインサービス(ドメイン固有のビジネスロジック)
  • アプリケーションサービス
  • スキーマ:テストのためのAPIまたはモデルスキーマ
  • URL:Django URLリゾルバ
  • UtilsShell *: utilsメソッド
  • ビュー:DRFビュー
  • インフラ


    単一モノリスにおいてモジュール構造を実現するためには,モジュール間通信にeventbusを用いる必要がある.また、APIサーバの負荷を軽減するためにラムダ計算を完全に利用しています.Pythonのアプリケーションは、通常、ハートビート(cron)プロセスのセロリビートを利用していますが、それはラムダのハートビートAPIを呼び出すとEventBridgeのスケジュールを使用する方がずっと簡単です.
  • EventBus
  • モデルを分離するために、MmdはServerlessなイベントバスを使用します
  • 非同期計算用SAM
  • 通知
  • 長いrunnignタスク
  • ラムダへのラムダの呼び出し
  • クッキーカッター


    あなたはクッキーカッターを使用してレポを開始することができます.
    pip install cookiecutter
    cookiecutter https://github.com/kokospapa8/majestic-monolith-django.git --checkout cookie-cutter
    

    フューチャー藤堂

  • 非同期サポート
  • 依存性注入
  • バッチポストリクエストのためのSQS
  • TLドクター


    私のサンプルアプリケーションをお試しください!
    https://github.com/kokospapa8/majestic-monolith-django/