Our goal was to implement microservices in a way that guarantees data consistency in the complex financial domain. We wanted all of them to work independently with a good amount of data redundancy so that failure in one place was not visible to the end-user.
We knew that it’s absolutely crucial to establish guidelines for cross-cutting concerns such as – monitoring, configuration, contract validation etc. We run multiple sessions across developers to make sure everyone is on the same page. Technologically, we chose Spring Boot + Spring Cloud powered by HashiCorp and AWS tools.
Apart from a business change that needed to happen, we knew that continuous delivery to be effective in the microservices world has to be scalable and reliable.
We knew that our Jenkins instance will be modified by different teams. That’s why we selected Groovy DSL powered by our own Groovy component library to deliver code as a solution to that problem. Thanks to that we are able to setup Jenkins instances together with all jobs and pipelines under 5 minutes.
We wanted to have infrastructure that will be used over decades as a means to transition legacy, corporate business into the cloud. We leveraged the scalability of Kubernetes and created a separate small team of DevOps and Developers. Their sole goal was to deliver infrastructure as a code.
We knew that we will host multiple different projects so ease of change, transparency and auditability are key drivers. We used AWS, Terraform, Chief and multiple open-source tools
to deliver on that promise.
Standalone R&D team
Pragmatic Coder’s team was acting as an almost standalone R&D branch, holding great control over most of the technical and architectural aspects of these systems.
Products we were working on were the first cloud-based, fully distributed (microservices) products ever made by the customer, so somewhere along the road the Pragmatic Coder’s dedicated software development team adjusted from simply developing standalone product to setting up a set of tools and practices that were later scaled up and reused by other parts of the customer’s company.