Starling Bank had a rough idea of the key functions that the solution would have and wanted the solution to fit within their existing suite of tools, as a web-based platform. However, to allow the solution to be integrated into a mobile application later, Starling Bank wanted the team to build an API layer well suited to this purpose.
Infinity Works developed lightweight prototypes to think through how the solution could work in practice. These prototypes were used to validate the design from a regulatory and legal standpoint, ensuring that time wasn’t wasted creating something that was not fit for purpose.
Validating the designs and meeting the new VAT regulatory requirements involved working with accounting and tax experts. Infinity Works’s financial services industry knowledge allowed teams to share a common language, reducing communication barriers.
Infinity Works then proposed the creation of a lightweight MVP, to prove the concept, initially using a small product team of 3 full-stack engineers, capable of delivering a wide range of capabilities, from mobile user interfaces to cloud infrastructure.
Starling Bank had an existing technology stack in place focussed on Java-based microservices with JavaScript user interfaces built using the React framework. This was seen as a good choice for the requirements, and was adopted for the project.
Docker Containers are a great way to deploy and run Java applications, and fit well into a Continuous Integration (CI/CD) pipeline. With this in mind, Infinity Works proposed the use of Kubernetes to run the Docker containers due to its high performance and scalability. This was encouraged by Starling Bank who saw adopting Kubernetes as being a strategic goal, to increase their compute density and improve management of systems.
To reduce the management overhead involved in operating a Kubernetes cluster, Infinity Works proposed the use of EKS, using the AWS EKS Ingress Controller to deploy load balancers.
For continuous integration and deployment (CI/CD), TeamCity was initially selected because it was well-established within Starling Bank, with existing templates available. Docker containers are pushed to a self-hosted Quay.io container registry in order to provide container hosting and security scanning. While helm and Kube-client are then used to deploy new versions of the system to Kubernetes. As part of continuous improvements, these are now being migrated to pipelines-as-code.
For data access, Starling Bank wanted to keep the data layer uniform and selected the use of AWS RDS Postgres to provide a flexible SQL-based data store, while providing JSON features and integrations into data warehouse platforms.
Product feedback comes to the engineering team via customer service teams that collect feedback from customers, and ensure that the product is meeting their needs. In addition to this feedback, Infinity Works built extensive monitoring and metrics tooling into the solution using Instana to ensure that product decisions can be made using data.
High level architecture diagram

Application screenshots