Finserv MARKETS is an award-winning digital financial services marketplace. We offer over 27 financial products to over a million customers. The products range across Loans, Insurance, Investment, and Payments.
We have, also, recently embarked upon an open market strategy where a customer is offered a choice from various other financial partners, to get the best product as per his needs.
As a digital marketplace for financial services, technology is the front and center of our strategy. Here, we give an inside view of the technology that powers this marketplace.
Our Platform Architecture
Our platform architecture is conceptualized on the modern web architecture approach for obtaining the key objectives of flexibility, scalability, agility & security. Over the last 3 years, we have built our platform by tapping the potential of digital technology that can help us provide the best products & offers to the customer.
There are 7 key strategies that underpin our architecture:
Microservices, also known as microservices architecture, is a style that structures the platform as a collection of services that are loosely coupled, highly maintainable, organized by business domains and independently deployed.
We have based our architecture on the domain driven design approach (DDD), to decompose our platform in microservices. We have over 300+ microservices that enable all functionalities of our platform.
Application Programming Interface (API) First Ecosystem
Power of API ecosystem is well known, however, since the very start, we decided that we will follow the API first approach. Every capability that a microservice exposes is done through a set of Representational State Transfer (REST) APIs.
We have 3 levels of APIs:
- Internal APIs are the APIs that are consumed internally in the platform. These are usually exposed by the domain services.
- Public APIs are exposed to the internet and consumed by Web & Mobile Applications.
- Partner APIs are special APIs for our upstream partners to integrate with us.
A unique aspect of our platform is our omnichannel approach. Our key principle is to have a single view of process & data for customer self-service, call center & our field staff. This is done in two ways:
- A single customer data & process by the same microservices being accessed through different applications.
- Using micro-orchestration to maintain the state of customer journeys.
This enables us to deliver a pure omnichannel experience to customer, where he can start a journey that can be continued by a contact center staff and completed by the field team or vice versa.
Since we moved to an open market architecture and started integrating with a large number of partners, one challenge we faced is resilience & scalability due to the cascading effect of latency and failures in our partner systems.
We have addressed this through building an event-driven distributed architecture that gives us the required resiliency as it is designed for failure approach and enabling limitless horizontal scalability.
Analytics as core
Analytics is core to our platform and is our key differentiator. We use Artificial learning/Machine Learning (AI/ML) for analyzing the customer information to identify their needs and give them a suitable offer. We also use a non-traditional approach for credit evaluation that can deliver the best lending products to our customers and manage risk for our principal partners.
We do not own any infrastructure and our entire platform is hosted on Amazon Web Services. We have built our platform natively on cloud by using a very large number of AWS Platform-As-A-Service (PaaS) offerings. These services free us from the complexity of managing infrastructure and enable us to focus on our application architecture and innovation.
Since we have a very diversified product set that is constantly evolving and we onboarding new partners as well, we deliver 1000+ releases every year i.e., we go live over 3 times a day. Having over 300+ microservices on the platform does not make it easy. This is where our DevOps pipeline comes in. Our DevOps ensures that the release and deployments to the production environment is a simple & accurate process with over 70% done automatically. Our DevOps gives us agility while maintaining the stability of our platform.
As the cloud native architecture is the foundation of our platform, our technology choices reflect that. The technology choices are in the following order:
- AWS Native Service – For any technology component, we would choose AWS native service e.g., databases, messaging platform etc.
- Open Source – For any technology component if AWS does not offer any service or there is a well-established open-source technology, we choose that e.g., NGINX, Apache for reverse proxy.
- Lastly, for very special cases we choose propriety solution/products.
Front End Technologies
Our web applications are built in Angular. As we follow microservices, newer web applications are built in newer versions of angular. For mobile applications, we have decided to go for native applications. We have built Kotlin based Android and Swift based iOS applications. However, there is one internal application used by our field force that is built as a hybrid application in Ionic Framework.
Most of our microservices are written in Spring Boot with Java 11. However, a few analytics services are written in Python & Flask. We are moving towards Python & Django for our microservices. All microservices are hosted in containers using AWS Elastic Container Service. All the APIs are documented using Swagger.
Adoption of event driven architecture required us to have a robust messaging platform. For application layer messaging, we use AWS SNS (Simple Notification Service) and SQS (Simple Queue Service). For large data layer messaging, we rely on AWS Kinesis.
Databases & Storage
Our database & storage strategy is a polyglot, with each microservices managing their own data based on a domain-driven bounded context approach. The key data storage technologies are:
- Relational Database – Our core transactions databases are still RDBMS and we are slowly moving towards AWS Aurora Postgre DB.
- Data Warehouse – We use AWS Redshift as core data warehouse. We also use various big data technologies on AWS for our analytical needs.
- NoSQL DB – We have started using a lot of AWS Document DB for our recent use cases. We use Dynamo DB and Elastic Search as well.
- In-memory Storage – We rely heavily on AWS Elasticache Redis for our in-memory storage needs, however there are a few instances, where we use JVM storage as well.
- File Storage – For all file storage needs, we use AWS Simple Storage Service (S3).
As we host an online to offline e-commerce platform, it is hosted on open source Magento solution. We also have an in-built Store in Store solution using Pimcore product information management.
We use Jenkins as our primary DevOps engine, with most of the scripts written in Groovy & Python. We use Archiva for our binary repository and all our applications run in Docker containers.
Our Way of Working
For any technology, the key to success is the way the organization works and we are no different. We are proud of our agile way of working and hold a deep-rooted belief that people are the key to innovation and outputs. We have been constantly improving our way of working and building a culture of engineering excellence.
- Product Owner – To work with business teams and define the product roadmap and drive delivery of the roadmap. In most of the teams, they also work as scrum masters.
- Tech Lead – Each team has a tech lead responsible for leading the technology team.
- Developers – Each team consists of 7 – 11 developers. Some of them are full stack developers, while some possess varied skillset.
- QA Automation Engineers – Each team has 1-2 engineers to develop the automation scripts API & UI automation testing.
This team is supported by other technology teams. They are as follows:
- Solution Architecture – This is a small team driving the entire solution architecture of the platform including onboarding of new products & partners. They also provide leadership to non-functional aspects such as security, scalability, performance etc.
- Data Engineering – This team is responsible for managing our data infrastructure including both database as well as data pipelines. They also have a Database Administrator (DBA) who provides the required support & performance engineering at the data layer.
- Infrastructure – This team manages our cloud infrastructure and continuously innovates to provide new solutions to application teams. They also drive the automation to remove human intervention in infrastructure.
- DevOps – It is a small team of 3 – 4 people that build our DevOps pipelines and also manage the release process and quality standards. Their automation initiatives have enabled over 70% of releases going live without any human intervention.
- Information Security – A very small team to drive the information security standards and ensure that our platform is secure from any cyber-attack. They also drive our standards and regulatory compliance.
- Production Support – This team works alongside the business teams and provides the technical support required for day to day operations.
Quality Assurance Strategy
We believe that for any digital organization, quality is the key to a great customer experience. Our core quality assurance strategy lies in automation that enables us to continuously test our platform and deliver quality. Key areas of testing that we focus on are as follows:
- API Testing – As our platform is API centric, all APIs are tested automatically using SOAPUI & Groovy scripting. Individual developers/testers have also developed Postman collection for their convenience. API testing is used both for development & regression testing.
- UI Automation Testing – We also test our user interface using Selenium. This is mostly used for regression testing.
- Performance Testing – We conduct performance testing for every major development and use JMeter for the same.
- Security Testing – We also carry out proactive security testing like testing Authentication, Authorization & Auditing and penetration testing.
All development changes go through automation testing primarily and manual testing for sanity.
As with any complex platform, it is important for us to proactively monitor the platform and address any issues before they impact our customer experience.
Our monitoring strategy has the following key components:
- Infrastructure Monitoring – As our entire infrastructure is hosted on AWS, we use the available tools for monitoring. We use Cloud Watch events and have configured various alerts to notify any issues e.g., disk space, CPU, Memory etc. There are various categories of alerts that can be auto-resolved by configured actions associated with it.
- Application Performance – For monitoring the application performance, we use Application Performance Monitoring (APM) platform – NewRelic for proactively monitoring our performance at the application level. We have configured alerts that identify issues relating to Java Heap, Thread and other application-level parameters. Both take automated actions e.g., autoscaling and are displayed in alert dashboards.
- Functional Regression – In order to proactively identify any functional issues, we run API & UP full regression in production, twice a day and address issues, if any.
We fundamentally believe in agile methodology and use scrum as a process. The agile best practices are followed with a product backlog, sprint planning, 2-week sprints and retrospectives.
We rely on Atlassian toolsets of Jira & Confluence to drive our agile processes. We constantly seek both business & internal feedbacks to improve our way of working.