Our client is the leading financial systems and money transfer company having robust plan for modernizing their technology platforms and allow technology differentiators to outperform their competition by reducing costs and improving services. The client has a complex mission critical application comprised of modules utilizing ASP .NET running on IIS on Win 2012 servers and Oracle database on Linux servers. The application utilizes certain other modules written in PERL, Python, and Linux Shell Scripts running over Linux on-prem. Utilizing old architecture, the application was becoming difficult to maintain and more difficult to enhance and grow as per the evolving business requirements. We embarked on an in-depth application understanding and futureproofing while not impacting the current day-to-day activities being supported. We implemented a hybrid architecture in the interim that will support rehosting of the existing modules and allow for refactoring these modules into microservices and be deployable on ECS or Lambda on a case-by-case basis.
The customer requires to rearchitect an aging application while ensuring business as usual. A waterfall approach is not acceptable. We need to deploy a phased approach towards architecture transformation that must be accomplished in a limited timeframe. The ask from the customer was to analyze the application, understand its business use cases, and document the underlying technology stack and the release management process. This information must be used to build a forward-looking cloud-ready architecture that will allow for refactoring of the application source code and re-platforming of the underlying infrastructure to use cloud-native services, thereby improving efficiency in management, make application hosting cost-effective and get performance that can scale as per business needs. Additionally, the refactoring and re-platforming of the solution will allow for periodic upgrades and reduce any technical debt that exists on-prem. Our team defined an architecture pattern that will allow rehosting to immediately release some of the bottlenecks and setting the stage for refactoring and enable the customer on a performant, HA/DR compatible architecture while utilizing most AWS native services to minimize infrastructure maintenance.
The Sincera architecture team recommended a phased approach to migrating the workloads gradually shifting all workloads to ECS (and Lambda where possible) while rehosting more complex workloads on EC2s in the interim and continue migration from monolith to microservices / serverless as BAU activities. The database was ported to Amazon RDS thus reducing re-platform overheads. Our team created an ADO application pipeline that was pulling the asp .net 4.8 compiled libs from GHE (GitHub Enterprise) and containerizing it using the .net base image and pushing it to ECR. Additionally, our team created another infrastructure pipeline using terraform to build windows-based AMI that was used to develop ECS on Windows on which the container images were deployed. Event based lambda functions running .Net core 6.0 code were also created for processing certain files. Finally, certain more complex application components were rehosted (also deployable through these pipelines) in order to provide quick migration path while allowing a phased (BAU) approach to gradually modernizing all components to Lambda and ECS.
Impact/ Key Benefits to the Client
- Enabled current data center exit within the desired timelines – Adopting a hybrid architecture while providing the complete architectural framework for modernization allowed quick data center exit in line with the desired timelines while allowing the application team to adopt a gradual / BAU application modernization path.
- Reliable DR Setup – The aging mission-critical application had failed many of the last DR simulation exercises. Deploying into AWS with HA & DR front and center of the design considerations allowed to validate failure (failover and fallback) seamlessly and well within the desired RPO & RTOs.
- Monitoring and metrics: Key operational metrics were enabled for all environments with enhanced monitoring and alerting for production workloads allowing for failure and resource utilization metrics allowing for architectural enhancements towards the well-architected framework.
- Database enhancements, isolation, and security: As a managed service, Amazon RDS provided a high level of security for the client’s database while significantly reducing administrative overhead in database management.