NashTech

マイクロサービスとカスタムプラグイン

マイクロサービスとカスタムプラグイン

はじめに

私たちのチームは、従来のアプローチから脱却し、アプリケーションにマイクロサービス・アーキテクチャを適用しました。 私たちは、クライアントのビジネス機能を複数の独立したモジュールに分離し、それぞれ独立した特定のタスクを実行するようにしました。

タイドについて

タイドはビジネス金融プラットフォームで、英国のデジタル・ビジネス・バンキング・サービスのトップ・プロバイダーであり、市場シェアは6%である。 当社は英国におけるデジタル・ビジネス・バンキング・サービスのリーディング・プロバイダーであり、英国で最も急成長しているフィンテックの1つです。 インドでも同様のサービスを提供するつもりだ。

タイドは現在、インド準備銀行(RBI)の規制下にあるRBL銀行が提供する貯蓄銀行口座を提供している。 英国の中小企業経営者の20人に1人以上が当行と取引しており、当行はグローバルに展開し、あなたのような起業家に力を与える準備が整っています。 このモデルによって、より幅広い商品とサービスを組合員に提供することができ、組合員の財務管理にかかる時間(と費用)の節約に貢献できると考えています。

インパクト

  • 新しい銀行口座開設の手続きは、モバイル・デバイスを使えばわずか10分で完了する。 これにより、企業は支店に出向く必要がなくなり、会社や口座を効率的に運営するための貴重な時間を節約することができる。
  • 口座開設に信用調査は必要ないため、会員が既存の口座と並行してタイドを試すことにリスクはない。
  • 登録無料、年会費・月会費無料。 このため、会員は経費を節約し、その分ビジネスに投資することができる。
  • GST登録、領収書インポーター、経費管理、経費チームカード、会計ソフト統合、請求書発行ツール、請求書保護、給与管理*など、ビジネス管理を行うTide Platform製品の全機能をご利用いただけます。
  • アカウント設定に成功すると、タイドの特典を受けることができる。

課題

マイクロサービスの助けを借りて、User-Rest-Service、Gravitee-Clientなどの他のサービスと通信する。

解決策

私たちのチームは、従来のアプローチから脱却し、アプリケーションにマイクロサービス・アーキテクチャを適用しました。 私たちは、クライアントのビジネス機能を複数の独立したモジュールに分離し、それぞれ独立した特定のタスクを実行するようにしました。

モジュールは、シンプルで簡単にアクセスできるAPI(アプリケーション・プログラミング・インターフェース)を通じて、グローバルに相互に通信することができる。 そして私たちは、この課題を克服するためにフェイク・クライアントを導入した。

Feign Client:ネットフリックスが開発したウェブサービス。 HTTPクライアントバインダーとHTTP API、クライアントをバインドするために使用される。 また、プラガブル・アノテーションのサポートやFeignアノテーションも提供する。 REST APIクライアントを作成するのに役立ち、ウェブサービス・クライアントをより簡単にする。 定型的なコードを書く代わりに、宣言的アノテーションを使ってRESTサービスを呼び出すことができる。

建築

Tideのために、我々はAPIゲートウェイで使用されるカスタムプラグインを以下のように維持している。

グラビティポリシー潮認証

  • モバイルクライアント認証、ウェブクライアント認証、パートナー認証、スタッフ認証がすべて処理されるか、まもなく処理される。
  • プラグインはゲートウェイですべてのv3ルートに適用される。 v1およびv2の認証は、依然としてJBEによって処理される。

グラヴィティ・レポーター・タイド

  • これは、HTTPログ・テーブルへのHTTPリクエストとレスポンスの非同期ロギングを処理する。

gravitee-policy-nr-transaction-naming

  • これは、NewRelic トランザクション名のカスタムグループ化を処理する。 一般的に、NewRelicはメトリクスのコールをうまく集計してくれますが、私たちのサブパスの中には番号やUUIDの規約に従っていないものがあり、NewRelicはそれらのコールをそのままグループ化してくれません。

gravitee-policy-secure-headers

  • これにより、APIレスポンスにデフォルトのセキュリティヘッダが追加されます。

Graviteeのアクセス管理ソリューションが、マルチユーザー認証に関して必要なすべての機能をすぐに提供してくれない場合、このプラグインリストはさらに増える可能性がある。

Graviteeは現在、Mavenアーキタイプを介して生成されたプラグインのみをサポートしているため、これらはGradleではなくMavenベースである。 リポジトリをチェックすると、集約された親モジュールと子モジュールがあることがわかる。 この構造が選ばれたのは、それぞれの子モジュールが実行時に他のモジュールと効果的にコミュニケーションを取るためだ。

Mavenインストールフェーズでは、Mavenアセンブリプラグインを使用してzipファイルを生成します。このzipファイルは、/home/USERPROFILE/.m2/repository/co/tide/gravitee-reporter-tide/1.0.0-SNAPSHOTなど、ローカルの.m2フォルダにあります(または、Bitbucketでデプロイフェーズを実行する場合は、s3 Mavenリポジトリにあります)。

このzipファイルは、APIMがカスタム機能を統合するために使用します。

tide-microservice

チームメンバーの流れを作る:

  • タイドは、既存のモバイル・アプリケーションから、新しいチーム・メンバーの追加リクエストを送信する。
  • 分散ロックは、会社とチームメンバーのEメールに基づいて確立されます。 これにより、他のタイドメンバーが同じ瞬間にチームメンバーを追加/割り当てたり、1社あたりのチームメンバーの制限を実行したりすることができなくなります。
  • 私たちは、アカウント所有者が自分の会社にチームメンバーを追加する権限があることを確認するために、タイドメンバーの詳細を取得します。
  • チームメンバーがすでに存在するかどうかによって、一から作成するか、更新して会社へのアクセス権を割り当てるかのどちらかになります。
  • 権限は、割り当てられた役割によって許可されるユーザーに割り当てられる。 これらのパーミッションはデータベースに保存され、to_dateに基づいてアクティブまたは非アクティブとして区別される。
  • データベースへのパーミッションの更新が失敗した場合、グラビティで行われた変更はロールバックされる。
  • UMSは企業メンバーシップ更新イベントをトリガーし、これは現在KYCフローサービスによってのみ消費される。
  • 操作が監査され、分散ロックが解放される。
  • UMSは、通知サービスによって処理される電子メール送信コマンドをトリガーし、サインアップ完了リンクを含む招待メールか、新しいアクセスについて説明し、ログインリンクを提供するアクセス更新メールのいずれかを送信する。
  • 応答はタイドメンバーに送り返されます。
micro2-1024x742

チームメンバーの剥奪

  • タイドメンバーは、既存のモバイルアプリから、自社の既存のチームメンバーの取り消し要求を送信します。
  • チームメンバーの電子メールに基づいて分散ロックが確立され、他のタイドメンバーが同じ瞬間にチームメンバーを更新できないようにします。
  • 私たちは、アカウント所有者が自分の会社にチームメンバーを追加する権限があることを確認するために、タイドメンバーの詳細を取得します。
  • ユーザーに割り当てられていた権限は削除される。
  • データベースからのパーミッションの削除が失敗した場合、グラビティで行われた変更はロールバックされる。
  • チームメンバーの同意はすべて取り消され、チームメンバーのアクティブなセッションはすべて強制的にログアウトされます。 理想的には、取り消す会社のアクティブなセッションだけを取り消すことですが、APIはこれを許しません。
  • チームメンバーのステータスを失効に更新することで、チームメンバーをソフト削除します。
  • SQS/SNS経由でKYCフローサービスに企業会員資格の失効を通知するイベントが送信される。
  • 操作は監査され、分散ロックは解除される。
  • 応答はタイドメンバーに送り返されます。
micro3-1024x746

その結果

  • 故障モジュールを分離

すべてのモジュールは互いに独立しており、プロジェクトのサービスに障害が発生した場合でも、他のモジュールはダウンタイムに直面することなく稼働し続ける。 開発者は、不具合のあるモジュールを取り除き、そのモジュールのコードを書き直しただけだろう。

  • ビジネスの俊敏性を高める

マイクロサービスは比較的小さくシンプルなサイズである。 一つのモジュールが故障しても、アプリケーション全体の動作には影響しない。 開発者は、新しいプロセス、ビジネスロジック、アルゴリズムを自由に試すことができる。

  • メンテナンスとデバッグが容易

マイクロサービスのモジュールはすべて独立している。 これによって開発者は、不具合のあるコードを簡単に特定し、効率的にデバッグできるよう、より良い方法でプロジェクトを維持することができる。

  • アプリケーションの更新が容易

マイクロサービスは、アプリケーション全体の動作に影響を与えることなく、個々のモジュールを更新したり置き換えたりする独立性を提供する。

ケーススタディをもっと読む

仮想学習環境をAWSに移行して近代化し、体験の向上を図る。

移行され近代化されたMoodle インフラストラクチャーは、オープン 大学は今、次のような利点がある。 クラウドのメリット

大手デジタル広告サービスとの1年にわたるRPAの旅を垣間見る

大手デジタル広告サービス・ソリューションプロバイダーの1年にわたるRPAの旅と、NashTechがどのように彼らを支援したかをご紹介します。

デジタル棚の分析をサポートし、eコマースの成長を引き出す

NashTechがどのようにデジタル棚の分析を支援し、世界有数のデータ洞察とeコマースソリューションプロバイダーと成長を解き放つかをご覧ください。

私たちのパートナーシップ

上部へスクロール
サンプル・タイトル
サンプルショート
サンプル見出し
JA FREE WHITEPAPER
新しいホワイトペーパーで知識の力を解き放つ
「プロダクトオーナーのユーザーエクスペリエンスを向上させる」
無料ホワイトペーパー
新しいホワイトペーパーで知識の力を解き放とう
「プロダクト・オーナーのためのユーザー・エクスペリエンスの向上