Building software is not a simple task, especially when planning ahead for a scalable and highly maintainable payments system. Although at early stages, we are capable of exploring approaches, as engineers, we must consider the future impacts of our choices. Therefore, every decision should consider three aspects:
1. Technical skills a team has and how easy it is to find this skillset in the market
2. Supporting tooling for a programming language
3. Infrastructure growth
At Waivr, we praise highly robust programming techniques with flexible and stable growth. Our stack has Java 19 as our core programming language. Since 2018, the java developer community has become increasingly active in modernizing one of the strongest development languages in more than 2 decades.
As a perfect marriage between language and framework, we chose Spring Boot 3.0.1 as our backbone. Spring is an extremely mature framework with an extensive ecosystem which allows developers to build reliable software at low cost. In the latest versions, Spring has applied a series of performance improvements with high scalability features.
Our choice of one of the top 5 databases and also an open source platform, Postgres, followed the same criteria for scalability and maintainability. Highly configurable and with a strong supportive community, Postgres integrates fairly well with Spring and Java ecosystems. In the last few years, Postgres community has become more active in the release of new and improved versions allowing developers to maximize new paradigms and distributed systems.
Waivr’s modern architecture takes advantage of containerization via Docker with integrated deployment to Kubernetes cluster in AWS. This infrastructure has allowed us to prepare our Microservice environment progressively. Composed of two Microservices at the present moment, we have set the ground for a fast pace and highly scalable infrastructure where teams can work together and promote changes and new services at demand with low costs.
However, no infrastructure can grow with manual intervention from the engineering team. One of the major reasons we leverage Github Actions as our CI/CD (Continuous Integration and Continuous Delivery) platform. Any new feature passes a pipeline that will run, test, validate, enforce, deploy and verify the pull requests. Our commitment to a disciplined culture of high-quality development is intrinsic at Waivr. We are not building any system, but building the future of the company and our customers' trust.
Building Microservices, of course, requires a high level of componentization. At Waivr, we understand that in order to create upper scale systems, we must first have great composable libraries that the engineering team can leverage while building systems. A set of libraries created and maintained by our engineering team follows the same CI/CD principles to deliver our services. Each and every library contains a set of finite steps to ensure high quality and then is published to an artifact repository.
The image below shows a few libraries and their inter-correlation. So many, right? Do you believe that there are even more? Now listen to me when I say, Waivr has a strong automated CI to ensure our growth.
Alright, I know this is jam packed! Nonetheless, we have explored how Waivr’s infrastructure is designed for success! As with any living software, improvements will be implemented, all with the same goal: Creating the best software with the highest quality for our customers!
Stay tuned! More techy-talk will come!