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

その結果

  • 故障モジュールを分離

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

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

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

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

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

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

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

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

THE OUTがプレミアムレンタカー業界をどのように破壊するか

ベトナムのナッシュテック開発チームと緊密に協力し合うことで、高品質でデジタルファーストの高級レンタカーサービスを構築することができた。 将来を見据えて、THE OUTは製品ロードマップに注力し、旅行代理店やコンシェルジュ・パートナーを含むB2B顧客へのサービスを拡大し、そのための新しいポータルを構築している。

特注のデスク予約システムでハイブリッド勤務を実現:内部の視点

ナッシュテックの社内デスク予約ソフトウェアがどのように職場の効率化を促進し、高い精度で稼働率を測定したかをご覧ください。

オーストラリアで設立された広告・メディア費ビジネスは、ナッシュテックの支援により、いかにして駆け出しのビジネスから世界的な大企業へと成長したのか?

オーストラリアで設立された広告・メディア支出企業は、現在世界的な事業展開をしており、ナッシュテックがその成長を支えていることを知っている。

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

上部へスクロール