ソフトウェア業界で長年仕事をしてきた経験から、ソフトウェア開発におけるパターンに気づきました。私たち全員がDRY(Don’t Repeat Yourself:同じことを繰り返さない)が従うべき基本原則であることを知っていますが、新製品の開発を始めるたびに、私たちは常に同じことを繰り返しています。以下でこれについて説明します。
10年以上にわたり、複数の製品およびエンタープライズアプリケーションの開発に携わってきた私の見解を述べます。ほぼすべてのアプリケーションで必要となる一連の機能、モジュール、および動作があり、新しいアプリケーションを開始するたびに、それらを再度開発することで同じことを繰り返しています。信じられないですか?私が携わってきた大規模なエンタープライズアプリケーションのリストを以下に示します。
上記のリストでわかるように、機能の70%以上が繰り返されていますが、毎回それらを再構築しています。もし、現代のソフトウェアで最も一般的に必要とされる機能を提供するパッケージがあるとしたらどうでしょうか?npmの依存関係として簡単にインストールでき、すべてのAPIをすぐに利用できる、事前構築済み、再利用可能、構成可能、拡張可能、そしてオープンソースのマイクロサービスのパッケージです。それこそが、SourceFuseによるARCです。
ARCとは何ですか?
SourceFuseによるARCは、反復的な作業を排除し、DRY原則に従うことで、エンタープライズアプリケーションの市場投入までの時間を短縮することを目的とした、事前構築済みのマイクロサービスのコレクションです。大規模な企業は通常、デジタル変革の一環として、クラウドネイティブアプリの開発やプラットフォーム、または新製品の作成時に、同様の一連の課題に直面します。ARCは、これらの課題に繰り返し時間を費やすことを避け、コアとなる問題ステートメントに集中できるように支援します。その結果、製品の市場投入までの時間が平均で35%短縮されます。
現在、ARCは12のエンタープライズグレードのマイクロサービスを提供しています。
- 認証サービス — さまざまな安全で標準的な認証戦略のために、事前構築済みで構成可能なAPIを提供するマイクロサービス。これには、Oauth 2.0、JWT、ソーシャルログイン(Google、Instagram、Facebook、Apple ID)、Keycloak、AWS Cognito、MFA(Google Authenticatorを使用)などが含まれます。コアインターフェースを変更せずに、必要な他のカスタム戦略を使用するように完全に構成および拡張できます。
- 監査サービス — ユーザーアクションの監査に使用されるマイクロサービス。挿入、更新、削除などのすべてのユーザーアクションを監査できます。これは、他のサービスに統合できるmixinを提供する@sourceloop/audit-logをベースとして使用します。このサービスは、監査されたデータを挿入および読み取るためのAPIを公開します。
- ユーザー管理サービス — ユーザーとそのID管理APIを提供するマイクロサービス。また、マルチテナンシーをサポートし、テナント管理APIを提供します。さらに、RBACおよびABACのACLデータも管理します。
- 通知サービス — SES、SNS、Pubnub、Socket.io、FCM、APNS、Nodemailerなどのいくつかの一般的なプロバイダーを使用して、電子メール、SMS、およびプッシュメカニズムを介して通知、アラート、および更新を送信できるようにするマイクロサービス。SMS、電子メール、またはプッシュのいずれであっても、あらゆる種類の通知を公開するための単一の標準APIインターフェースを公開し、基盤となるプロバイダーに自動的に適応します。標準インターフェースを変更せずに、他の外部プロバイダーの統合もサポートします。
- ワークフローサービス — 業界標準のBPMNワークフローを、Camundaのような強力なエンジンを使用して管理、デプロイ、および実行できる、事前構築済みのマイクロサービス。このサービスを使用すると、あらゆるエンタープライズアプリケーションで必要なさまざまなビジネスワークフローを自動化し、開発作業なしで更新することもできます。これも他のサービスと同じアダプターパターンで構築されているため、Camunda以外のBPMNエンジンでも使用できます。
- 決済サービス — 主に決済の請求とトランザクションの管理に使用されるマイクロサービスで、直接またはサブスクリプションベースの支払いをサポートします。基盤となる決済ゲートウェイに関係なく使用できる標準APIインターフェースを提供します。現在、StripeおよびRazorpayとの統合があります。これも他のサービスと同じアダプターパターンで構築されており、他の決済ゲートウェイを使用するように構成できます。
- フィーチャートグルサービス — 環境レベル、テナントレベル、およびユーザーレベルの複数のレベルでフィーチャーフラグを維持する機能を提供するマイクロサービス。@sourceloop/feature-toggleと連携して、すべてのサービスのAPIレイヤーでフィーチャーアクセスチェックを提供します。
- 検索サービス — PostgreSQLおよびMySQLデータベースの組み込みの全文検索を使用して、構成されたモデルを検索するための標準APIサポートを提供するマイクロサービス。全文検索は、クエリを満たす自然言語ドキュメントを識別し、オプションでクエリとの関連性によってそれらをソートする機能を提供します。
- メッセージング/チャットサービス — ユーザー間のP2Pまたはグループでのメッセージ、会話、およびチャットスレッドを管理するためのマイクロサービス。オフラインスレッドとして使用することも、上記の通知サービスからのリアルタイムサービスと統合すると、リアルタイムのチャットおよびメッセージングアプリを入手できます。リアルタイムを除いて、slack、messengerなどの同様の機能を提供します。
- スケジューラーサービス — カレンダーでイベント/会議をスケジュールし、リマインダーを設定し、iCalをエクスポートおよびインポートし、Outlook、Googleカレンダーなどの外部プロバイダーと統合できるマイクロサービス。これを以下に言及されているビデオ会議サービスと統合すると、Zoomのような完全な仮想会議スケジューリングアプリを入手できます。
- ビデオ会議サービス — ビデオ会議通話の設定、実施、および管理、録音の保存、および通話のアクセス管理のためのAPIを提供するマイクロサービス。Vonageのような外部プロバイダーを統合して使用します。これも他のサービスと同じアダプターパターンで構築されており、他のビデオ通話サービスを使用するように構成できます。
- インメールサービス — LinkedInのInMailと同様に、あらゆるアプリケーションで電子メールのような機能を持つためのシンプルで基本的なAPIを提供するマイクロサービス。インメールを作成したり、下書きを表示したり、受信者を追加したり、インメールを読んだり、既読としてマークしたり、返信を送信したりできます。
さらに、これらのサービスはすべて、組み込みのセキュリティおよび非機能的な機能を備えています。
- ソフトデリート
- エンティティレベルでのキャッシュ
- 業界標準のCasbinを使用したACL、RBAC、ABAC
- APIのレート制限
- helmetjsを使用したセキュリティヘッダー
- 最適化されたDockerfileを備えた100%クラウドネイティブ
- Open API仕様
- Winstonを使用したロギング
- swagger-statsを使用した可観測性と監視
- オープンテレメトリーまたはNew Relicを使用した分散トレース
- 国際化(i18n)
何よりも、ARCは、数分で複数のマイクロサービスを備えたまったく新しいモノレポをスキャフォールドできる独自のコマンドラインツール@sourceloop/cliも提供します。
ARCはどのように役立ちますか?
これで、ARCサービスとその機能について理解できました。ここで、以前のエンタープライズアプリケーションリストの評価に戻り、ARCで利用可能なすべての機能を置き換えると、どれだけのDRYを実現できるか、開発労力と納期をどれだけ節約できるかを見てみましょう。
上記の最後の行は、これらのアプリケーションでARCマイクロサービスによって事前構築および提供される作業の割合を示しています。ご覧のとおり、ARCをデプロイすると、全体的な労力のほぼ80%が削減されます。これこそがARCが提供できる力です。