Microservices and custom plugins
Identity and Access Management
AWS S3, AWS Fargate Cluster, AWS SNS, Java 11, MySQL Database, JOOQ, Spring Security,Gravitee AM, Gravitee APIM, Document DB.
Tide is a business financial platform and the leading provider of digital business banking services in the UK, with a 6 percent market share. We’re the leading provider of digital business banking services in the UK and one of the UK’s fastest-growing fintech. We would be providing similar services in India.
Tide currently offers a savings bank account provided by RBL Bank, which is regulated by the Reserve Bank of India (RBI). With over 1 in 20 small business owners in the UK banking with us, we’re ready to go global and empower entrepreneurs just like you. We believe that this model allows us to provide a wider range of products and services to our members, helping them save time (and money) on their financial admin.
To communicate with the other services like User-Rest-Service, Gravitee-Client, etc with the help of Microservices.
Our team worked to get rid of the traditional approach and applied microservice architecture in our application. We separated the client’s business functionality into multiple independent modules that are responsible for performing specific and standalone tasks independently.
Modules are able to communicate with each other through simple and easily accessible APIs (Application Programming Interfaces) globally. And we have implemented the feign client to overcome our challenge.
Feign Client: is a web service developed by Netflix. It is used to bind HTTP client binder and HTTP API, clients. It also provides pluggable annotation support and Feign annotations. It helps to create REST API clients, which makes web service clients easier. We can use declarative annotations to call the REST services instead of writing boilerplate code.
For Tide, we have maintained custom plugins used in the API gateway given below:-
This plugin list could grow further if Gravitee’s Access Management solution does not provide all the necessary features out of the box for us regarding multi-user authentication.
These are Maven-based instead of Gradle, as Gravitee currently only supports plugins produced via their Maven archetype. If you check out the repositories, you’ll see that they have an aggregate parent module and child modules. This structure was chosen because each child module effectively communicates to the other at runtime.
The Maven install phase will use the Maven assembly plugin to produce a zip file. This zip file can be found in the .m2 folder locally e.g. /home/USERPROFILE/.m2/repository/co/tide/gravitee-reporter-tide/1.0.0-SNAPSHOT (or in s3 Maven repository when deploy phase run in Bitbucket).
This zip file is used by APIM to integrate the custom functionality.
Creating a Team Member Flow:
Revoking a Team Member:
All modules are independent of each other in case the service of the project fails, others would continue to work without facing any downtime. The developer would just have taken out the faulty module and rewritten the code for the module.
Microservices are relatively small and simple in size. The failure of one module would not affect the whole operation of the application. Developers get the freedom to experiment with new processes, business logic, and algorithms.
All the modules of the Microservices are independent in nature. This allows the developers to maintain the project in a better way so that the faulty code is easily identified and debugged efficiently.
Microservice provides the independence either to update or replace the individual module without affecting the whole operation of the application.