DEFINING THE PROBLEM
One of our partners who manufactures agriculture equipment began to experience growing pains with a high-volume API platform. The platform had grown into a monolith that was making it increasingly difficult to tune performance and add new features. Source Allies was asked to provide guidance and technical expertise to modernize the codebase. As part of this modernization, we started to migrate the API to smaller, easier to maintain, components. This also allows us the benefit of having straightforward performance tuning.
Leveraging our prior experience with refactoring monolithic API platforms, we started by identifying the seams. These seams represent connections where we could start pulling apart the platform into smaller, stand-alone APIs. Benefits of these smaller APIs included: independent scalability allowing higher volume APIs to scale faster than lower volume APIs, and significant cost savings in terms of shaving development time to confidently add new API features without fear of breaking unpredicted parts of the larger monolith.
While the project originally called for migrating the existing endpoints to also work against their data lake, we saw the need to start with a big-picture approach to identify what incremental steps would be needed to deliver early and often on this project. We took an iterative approach to this, by running small, spike-sized experiments to validate (or rule out) different architectural designs.
This architecture approach was slower up front, but it had higher return on investment in the long term for our partner because our validations were done in lower cost spikes versus higher cost refactors down the line. In collaboration with our partner’s internal development team, we ended up removing a significant amount of unnecessary code that was adversely impacting API performance and slowing down development.
- Java Spring
- AWS API Gateways (upstream dependencies)
- Gatling (stress test framework for our experiments)
Long term solution versus a short term gain for our partner
Improving API performance and development time
Identified legacy APIs to move off of, reduce footprint of project