microservices-architectured-app - Express、Typescript、Nats-Streaming および Next を使用して作成されたイベント駆動型マイクロサービス アーキテクチャの e コマース アプリ.js

(Event-driven microservices architectured e-commerce app created using Express, Typescript, Nats-Streaming and Next.js)

Created at: 2021-12-08 19:31:43
Language: TypeScript

他のプロジェクトをチェックアウトする

トークハウス|WebRTCベースのピアツーピア音声、ビデオ通話、メッセージングWebアプリ

マイクロサービスアーキテクチャアプリ

イベント駆動型の非同期通信ベースのマイクロサービスアーキテクチャの電子商取引アプリで、エクスプレス、タイプスクリプト、natsストリーミングなどを使用して作成され.js

これは、何ですか。

これは、マイクロサービスアーキテクチャに基づいて市内で起こっているさまざまなライブイベントや楽しいイベントのチケットを売買するための電子商取引ベースのWebアプリです。アプリは複数の個別のサービスに分割され、イベント バス経由でイベントを公開することで相互に通信します。各サービスは、認証サービスが認証を処理し、注文サービスが注文を処理し、支払いサービスがユーザー支払いを実装し、これらすべてのサービスが動作し、イベントバス(nats-streaming)を介して非同期に通信してアプリ全体を実行するなど、アプリの特定の機能を処理および実装する責任があります。

マイクロサービスを使用する理由

マイクロサービス アーキテクチャを使用し、モノロイト パターンに依存しないようにすることで、アプリの耐久性、フォールト トレラント性、可用性が向上し、アプリの稼働時間が長くなります。そのため、サービスの 1 つがクラッシュしても、アプリの他の部分は引き続き機能し、ユーザーが利用できます。マイクロサービスと分散システムは、最新のソフトウェアおよびバックエンド エンジニアリングの中心です。

使用される技術

  • 次.jsサーバー側のレンダリングとフロントエンドの構築
  • Express.js はバックエンドの構築に使用されます
  • データベースとしてのモンゴッド
  • ORMとしてのマングース
  • Typescript 、バックエンドは完全にtypescriptで書かれており、無限の数のイベントがヒントなしで流れているときに発生する頭痛を防ぎます
  • 支払いを処理するためのストライプ
  • テストのためのジェストとスーパーテスト
  • コンテナ化のためのドッカー
  • Kubernetes
    for conatiner orchestration
  • Kubernetesネイティブアプリケーションの継続的な開発を容易にするSkaffoldコマンドラインツール。kubernetes およびさまざまな kubernetes サービスおよびデプロイメットの操作と管理がはるかに簡単になります。
  • NATS ストリーミングは、さまざまなサービスによって発行されるイベントを公開して処理するためのイベント バスまたはメッセージ キューとして使用されます。
  • Bull.jsは高速で堅牢なキューシステムです。これは、支払い期限タイマーを実装するために使用されます。

アプリのアーキテクチャ

アプリは、アプリの特定の機能を処理および実装する 7 つのサービスに分かれています。

  • auth
    アプリの認証と承認全体を処理します。JWTとクッキーベースの認証が使用されます。
  • expiration
    支払い期限タイマーを処理して、ユーザーが指定された時間枠内に支払いを行うようにします。
  • orders
    ユーザー注文の処理用
  • payments
    ストライプ支払の処理用
  • tickets
    チケットの処理(作成、更新、取得)用。製品を販売する代わりに、この電子商取引アプリは、市内で起こっているさまざまなライブイベントのチケットを販売しています。
  • common
    requireAuth、エラー処理、および異なるサービスによって共有されるその他のミドルウェアと関数などのすべての一般的な機能はグループ化されています。このサービスは npm パッケージとして公開され、使用する他のサービスにインストールされます。
  • client
    アプリのフロントエンドを処理して実装します。
  • infra
    アプリを実行するすべての kubernetes 展開およびサービス (.yaml) ファイルを管理します

Kubernetes と Docker Architecture

各サービス、mogongodbデータベース、およびnatsストリーミングサーバーは、ドッカーコンテナとしてドッカー化されます。ドッカー コナチナーは、infra ディレクトリ内のそれぞれの kubernetes deployment.yaml ファイルによって管理および調整されます。異なるkuberentesデプロイメント間の通信は、サービスObjectTypeによって管理されます。最後に、入力-nginx(NGINXを使用するKubernetesのイングレスコントローラ)をリバースプロキシおよびロードバランサとして使用して、着信要求をホスト名でそれぞれのサービスにプロキシまたは送信するイングレスサービス。Skaffold は、skaffold.yaml ファイルを使用する単一のコマンドで、すべての kubernetes デプロイメントとサービスを稼働させるために使用されます。

ticketing.dev
skaffold dev

取り付け

このプロジェクトをローカルマシンで起動して実行することは、悪名高いdfficultタスクです。それはドッカーとクベルネテスの生態系に関するいくつかの知識を必要とします。あなたがまだ挑戦のために立ち上がっている場合、またはあなたが人生を持っていない場合は、それを働かせてみてください。ドッカー、クベルネット、スカフォールドがインストールされていることを確認してください。必要な環境変数を設定し、次のコマンドを実行します。

skaffold dev

そしてブームアプリは起動して実行され、余分なセットアップや依存関係は必要ありません。

Skaffold によってデプロイされたリソースを削除し、すべてのデプロイ、サービス、およびコンテナーを停止するには、次のようにします。

skaffold delete

提案

あなたが人生を持っていない場合にのみ、ローカルでそれを実行してテストしてみてください。さもなければ、このイベント駆動型通信😑のこのマイクロサービスの混乱を理解しようとしている間にあなたの頭を😫掻いているのは私が責められるものではありません。

手記

このプロジェクトは、スティーブン・グライダーのウデミー・コースの一環として行いました。彼😊に感謝します