Legacy systems are difficult to maintain and enhance.
Legacy systems hardware upgrades are expensive.
The client had a requirement to be able to use modern web technologies.
Legacy API calls became slow and required a rewrite.
Implementation:
The architecture we decided to use allowed us to keep the legacy IBMi system up to date, so that all the legacy apps can run as per normal, as well as have the data available in other databases, so we can seamlessly migrate parts of the system. With the intention of eventually migrating the entire legacy system.
An API Gateway was implemented to allow for proper authentication and rate limiting and as a means to expose CRUD services.
Multiple Azure serverless functions were built as an easy way to swap out the data layer, be it legacy or cloud.
Redis cache was implemented to enhance speed of the requests and responses as legacy API calls were slow.
Micro services were implemented and legacy logic was moved into this layer.
All services are deployed using CI/CD pipelines, deploying docker containers to Azure deployment slots, giving the client 0 downtime deploys.