SourceFuseのARCをご覧ください
このプロセスで使用する技術スタックはNodeJS、ExpressJS、LoopBack v4、そしてTypescriptです. ただし、これらのフレームワークすべてに精通している必要はありません。NodeJSとLoopback4の専門知識があれば十分です。Typescriptの基本的な構文とパターンの理解で十分であり、ExpressJSを全く知らなくても問題ありません。
以下の7つのステップに従って、ARCの認証サービスを1つのサービスとして含む、新しいマイクロサービスベースのAPIコードベースを初期化してセットアップする方法を見ていきましょう。
ステップ1:NodeJSのインストール
最新のNodeJS LTSバージョンをインストールします — https://nodejs.org/en/download/。
ステップ2:LoopBack CLIのインストール
LoopBackは非常に便利なコマンドラインユーティリティを提供しており、アプリケーション、モデル、サービスなどの開発を簡単にボイラープレートとして支援し、多くの時間を節約します。そのため、@loopback/cliをインストールしてください。
npm i -g @loopback/cli
ステップ3:ARC CLIのインストール
LoopBackと同様に、ARCも便利なコマンドラインユーティリティを提供しており、モノレポ(マイクロサービス用)、個別のサービス、拡張機能などを迅速にスキャフォールディングするのに役立ちます。@sourceloop/cliをインストールしましょう。
npm i -g @sourceloop/cli
ステップ4:マイクロサービス用のモノレポをスキャフォールディングする
すべてのマイクロサービスを維持するためにモノレポ戦略を使用することをお勧めします。これにより、管理と維持が必要な多くのリポジトリの混乱を避けることができます。
この推奨事項を理解するための良い読み物:
- https://fourtheorem.com/monorepo/
- https://semaphoreci.com/blog/release-management-microservices
- https://danoncoding.com/monorepos-for-microservices-part-1-do-or-do-not-a7a9c90ad50e
まず、基本的な構造とLernaをモノレポマネージャーとしてインストールしたモノレポをスキャフォールディングします。
sl scaffold my-project
以下のようないくつかのプロンプトが表示されます:

- プロンプト #1 – プレフィックスは、コミットメッセージの整形、commitizenを使用したチェックを設定し、従来のコミットメッセージガイドラインに従っていることを確認するためにスキャフォールドによって使用されます。これはJiraのプロジェクトキーを使用することもでき、Jiraのスマートコミットを統合することもできます。
- プロンプト #2 – ARCはbackstageの統合も提供しています。ただし、これはオプションです。
- プロンプト #3 – リポジトリの作成者/所有者。これはpackage.jsonに記載されます。
- プロンプト #4 – リポジトリの説明。これはpackage.jsonに記載されます。
その後、すべてをセットアップするのに数分かかります:

完了すると、以下の例のようなフォルダ構造が生成されます。

ご覧のとおり、スキャフォールドは多くのものを初期化してセットアップしています。例えば:
- .github内のGitHub PRテンプレート
- commitizen(.cz-config.js)、commitlint(commitlint-config.js)、およびgithooks用のhuskyを使用した従来のコミットの有効化
- ソースコードからファイルを無視するための.gitignore。セキュアコーディングとSCM(git)上のリポジトリをクリーンに保つために重要です
- lerna.jsonには、lernaコマンドのセットアップが含まれています。Lernaは今後、モノレポマネージャーとビルドツールになります。これは業界で最も人気のあるモノレポマネージャーの1つで、Jest、NestJS、LoopBack、Nxなどで使用されています
- npmが機能するためのpackage.jsonとpackage-lock.json
- facades、packages、servicesという3つのフォルダ:
- Facades はファサードマイクロサービスを保持します。これらはマイクロサービスコンポジションのアグリゲータパターンに基づいています
- Packages は、複数のマイクロサービスで必要な再利用可能なライブラリ、拡張機能などを保持します
- Services は実際のマイクロサービスを保持し、常に独自のデータベースから完全に独立しています。つまり、サービスごとに1つのDBパターンです。
ステップ5:作業ディレクトリの変更
モノレポを正常にスキャフォールディングしたので、作業ディレクトリをモノレポのルートに変更する必要があります。
cd my-project
ステップ6:認証マイクロサービスの作成
ここで、最初のマイクロサービス – auth-service をセットアップします。
sl microservice auth-service
再び、以下のようないくつかのプロンプトが表示されます:

- プロンプト #1 – これがファサードマイクロサービスかベースマイクロサービスかどうか
- プロンプト #2 – このマイクロサービスがARCマイクロサービスに基づいているか、上記のリストのproject-management-serviceのような独立したものかどうか。ARCの認証サービスを使用しているため、「はい」を選択しました。
- プロンプト #3 – 前のプロンプトで「はい」を選択した場合、リストから使用したいARCマイクロサービスを選択します

- プロンプト #4 – このサービス用に構築されたDockerイメージの一意のプレフィックス。はい、すでにDockerコンテナをサポートしており、それらのCI / CD関連のコマンドはpackage.jsonスクリプトの一部です。
- プロンプト #5 – DB接続用のデータソース名。
- プロンプト #6 – データソースタイプ。ARCは現在、PostgreSQLとMySQLをサポートしています。
- プロンプト #7 & #8 – ARCが提供する基礎的なデータベースマイグレーションを利用するか、カスタムマイグレーションを使用するか。カスタムマイグレーションの場合、packagesフォルダ内にmigrationsという新しいフォルダが作成されます。カスタムマイグレーションはより柔軟性があり、本番アプリケーションには推奨されます。
- プロンプト #9 & #10 – サービスで設定する説明とクラス名。
- プロンプト #11 – 必要な機能のセットアップ。これらの機能はLoopBack CLI自体によって提供され、ARC CLIはそれを公開しているだけです。つまり、すべての機能サポートはLoopBackに基づいています。
これが完了すると、次のようなプロンプトが表示されます。

以上です!事前構築されたAPIを使用してマイクロサービスを実行する準備がほぼ整いました。
ステップ7:環境変数のセットアップ
サーバーを実行する前の最後のステップは、.envファイルで環境変数をセットアップすることです。利用可能なすべての環境変数は.env.exampleファイルで定義されています。それを参照して、同じレベルに.envファイルを作成し、値を提供できます。

ステップ8:サーバーの実行
ターミナルに移動し、サービスフォルダにディレクトリを変更します:
npm start

http://[::1]:3000/を開きます。

できました!サービスが起動して実行中です。ご覧のとおり、このサービスにはデフォルトでOpenAPI仕様、OpenAPIエクスプローラー、モニタリングが有効になっています。
「explorer」をクリックすると、以下が表示されます:
DBに既に接続された既製のAPIも用意されています。
「monitor」をクリックすると、swagger-statsが開き、マイクロサービスにモニタリング機能を提供します:


ご覧のとおり、いくつかの基本的なコマンドとステップだけで、リポジトリ全体と1つの事前構築されたマイクロサービスをスキャフォールディングすることができました。同様に、sl microserviceコマンドを使用して、他のARCマイクロサービスも追加できます。
ARCはマイクロサービスベースのアプリケーションや製品にのみ適していますか?
いいえ。すべてのARCマイクロサービスはモノリシックアプリケーションでも使用できます。唯一の前提条件は、モノリシックアプリケーションがLoopBack4を使用して構築されていることです。
これにより、以下のコマンドを実行するだけで、上記の両方のサービスのすべてのAPIを準備できます。環境変数を個別に設定するだけです。
npm install @sourceloop/authentication-service
npm install @sourceloop/notification-service