WealthForge
We’re excited to announce the release of WealthForge 2.0, our next-generation platform. While our feature set remains largely the same, behind the scenes we’ve completely rebuilt the platform's architecture and design—from our databases to our websites.
This naturally begs the question: Why keep new product features on hold and devote our tech and product teams to rebuilding something that’s already functional?
The answer: Velocity. As an agile shop, our main measuring stick is velocity. Per Wikipedia, “The main idea behind velocity is to help teams estimate how much work they can complete in a given time period based on how quickly similar work was previously completed.”
Our velocity on the old platform was difficult to estimate and well below our expectations based on prior experiences and industry averages. The platform had grown organically since WealthForge’s inception and, as such, was a collection of different tools, programming languages, operating systems, and so forth. The platform served its original purpose well, which was to bring WealthForge’s products to market. However, due to some of its inherent limitations, it was difficult to increase our velocity.
The main impediment to velocity we faced on the old platform was running several large codebases on a complex infrastructure. Our old platform contained several monolithic web services. Each one was “spaghetti code” that prevented us from quickly rolling out new features. Even the simplest change would invariably introduce instability elsewhere in the system, which in turn necessitated hours and sometimes days of manual regression testing to uncover and resolve issues before a release.
Meanwhile, product feature requests began to pile up and we acknowledged that the status quo no longer sufficed. We took a step back and weighed our options, which were either a complete rewrite or a phased upgrade to the existing platform. After some deliberation, we opted for the former for several reasons. Firstly, the old platform’s complexity wasn’t well suited to a “rolling upgrade” scenario.
More importantly, two technologies were gaining widespread adoption in the industry: microservices and Docker. These two technologies together provided the architectural improvements we needed to overcome the limitations of our old platform. We were sold on the benefits of both and, to fully leverage them, we decided to build a new platform.
The limitations in our old platform are not uncommon to monolithic web services. However, an alternate architectural pattern has gained a foothold in recent years called the microservice. As defined by Martin Fowler, “the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery."
Essentially, instead of a few web services that perform hundreds of orthogonal functions (monolith), we have hundreds of web services and each performs a single function (micro). The benefits of microservices include the following:
- Smaller code bases that are easy to understand, test, and train
- Improved fault isolation, that is, a bug or issue can’t bring down the entire platform
- No long-term commitment to any given technology
All architecture decisions involve trade-offs, and microservices are no exception. Specifically, microservices are challenging in terms of service orchestration, log aggregation, and monitoring. These are complicated concerns that if not implemented appropriately can easily outweigh the benefits.
Fortunately, Docker handles these challenges for us, which makes it the perfect companion to microservices. With Docker containerization, we can now guarantee that we’re running the same code and infrastructure across all environments. Thanks to service orchestration, we can perform rolling deployments with zero downtime. High-availability and monitoring are baked into the product. Need a new, dedicated environment for testing a hotfix? We can spin one up in a matter of minutes instead of days. And the list of benefits goes on.
Now that our new platform is live, our team is currently writing a suite of automated regression tests that, once complete, will allow us to start pushing down on the accelerator and increase our velocity. This will result in our ability to quickly and reliably roll out new features and enhancements to better serve the needs of our clients.
Stay tuned for more exciting updates from the WealthForge technology team!