イベント駆動型の非同期通信ベースのマイクロサービスアーキテクチャの電子商取引アプリで、エクスプレス、タイプスクリプト、natsストリーミングなどを使用して作成され.js
これは、マイクロサービスアーキテクチャに基づいて市内で起こっているさまざまなライブイベントや楽しいイベントのチケットを売買するための電子商取引ベースのWebアプリです。アプリは複数の個別のサービスに分割され、イベント バス経由でイベントを公開することで相互に通信します。各サービスは、認証サービスが認証を処理し、注文サービスが注文を処理し、支払いサービスがユーザー支払いを実装し、これらすべてのサービスが動作し、イベントバス(nats-streaming)を介して非同期に通信してアプリ全体を実行するなど、アプリの特定の機能を処理および実装する責任があります。
マイクロサービス アーキテクチャを使用し、モノロイト パターンに依存しないようにすることで、アプリの耐久性、フォールト トレラント性、可用性が向上し、アプリの稼働時間が長くなります。そのため、サービスの 1 つがクラッシュしても、アプリの他の部分は引き続き機能し、ユーザーが利用できます。マイクロサービスと分散システムは、最新のソフトウェアおよびバックエンド エンジニアリングの中心です。
次.js
サーバー側のレンダリングとフロントエンドの構築Express.js
はバックエンドの構築に使用されますモンゴッド
マングース
Typescript
、バックエンドは完全にtypescriptで書かれており、無限の数のイベントがヒントなしで流れているときに発生する頭痛を防ぎますストライプ
ジェストとスーパーテスト
ドッカー
Kubernetesfor conatiner orchestration
Skaffold
コマンドラインツール。kubernetes およびさまざまな kubernetes サービスおよびデプロイメットの操作と管理がはるかに簡単になります。NATS ストリーミング
は、さまざまなサービスによって発行されるイベントを公開して処理するためのイベント バスまたはメッセージ キューとして使用されます。Bull.jsは
高速で堅牢なキューシステムです。これは、支払い期限タイマーを実装するために使用されます。アプリは、アプリの特定の機能を処理および実装する 7 つのサービスに分かれています。
authアプリの認証と承認全体を処理します。JWTとクッキーベースの認証が使用されます。
expiration支払い期限タイマーを処理して、ユーザーが指定された時間枠内に支払いを行うようにします。
ordersユーザー注文の処理用
paymentsストライプ支払の処理用
ticketsチケットの処理(作成、更新、取得)用。製品を販売する代わりに、この電子商取引アプリは、市内で起こっているさまざまなライブイベントのチケットを販売しています。
commonrequireAuth、エラー処理、および異なるサービスによって共有されるその他のミドルウェアと関数などのすべての一般的な機能はグループ化されています。このサービスは npm パッケージとして公開され、使用する他のサービスにインストールされます。
clientアプリのフロントエンドを処理して実装します。
infraアプリを実行するすべての kubernetes 展開およびサービス (.yaml) ファイルを管理します
各サービス、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
あなたが人生を持っていない場合にのみ、ローカルでそれを実行してテストしてみてください。さもなければ、このイベント駆動型通信
このプロジェクトは、スティーブン・グライダーのウデミー・コースの一環として行いました。彼