Modernizing Monolithic dotnet Applications on Windows to Cloud-Native on AWS ECS

Modernizing Monolithic dotnet Applications on Windows to Cloud-Native on AWS ECS

Overview

Our client is the leading personal systems and printing company having a robust plan for venturing into innovative technologies such as 3D printing and novel computing experiences. The client wanted the modernization and transformation of their internal lease management application from the legacy dotnet Framework to a cloud-native architecture. This migration aims to leverage the advantages of the cloud, such as increased agility, scalability, and cost-effectiveness.

Problem Statement

The customer’s request involved performing an in-depth analysis of each application, comprehending its business use cases, and documenting the technology stack and release management process associated with it. This information served as the foundation for creating a forward-looking architecture that was suitable for cloud adoption. The objective was to refactor the application’s source code and re-platform the underlying infrastructure to leverage cloud-native services. By doing so, the aim was to enhance management efficiency, optimize application hosting costs, and achieve scalable performance aligned with the business requirements.

Existing Technical Stack

The application used the following stack:

  • dotnet 3.0
  • Windows Server 2019
  • MS SQL Server
  • Tidal Batch Scheduler

Solution

Application Target State

AWS or Amazon Web Services was chosen as the target platform for this application. The client used a legacy dotnet-based web application that runs on IIS and stores transactions in an MS SQL database. Additionally, it used the Tidal Batch scheduler, to ETL similar transactions as batches to the MS SQL database. The key infrastructure components of the client’s applications were:

  • IAM moved to One UID
    • dotnet application on IIS server
    • MS SQL Database
    • TIDAL job scheduler

To effectively re-platform the client’s application on AWS, the Sincera team did a detailed discovery of the application workflow and physical architecture. The Sincera team put together a forward-looking blueprint, which recommended porting the current asp dotnet application to dotnet core V4.0+. The application was successfully ported, allowing it to run on Linux VMs. This transition significantly reduced the licensing costs associated with the Windows OS. Moreover, it enabled the application to be containerized and stored in a container registry, which in this case was ECR (Elastic Container Registry). Azure DevOps (ADO) pipelines were used to build, scan and push the image. Trivy scan was integrated into the pipeline to ensure images are scanned for critical CVEs and if found not pushed to the ECR. Additionally, ECR setup scanned images on a regular base as well. These images were then deployed as a task definition to an existing ECS Fargate cluster, with appropriate tags to support finops and secops. Appropriate tagging in the native services ensured cist accuracy. Below is the cloud solution architecture for this re-platformed application.

Architecture Components

The web component, previously using ASP dotnet 2.0, was ported to dotnet Core 6.0, after re-platforming. For the batch components that handled ETL processes, the team replaced the Tidal jobs with AWS Lambda and replaced batch with event-driven real-time architecture. Lambda code was now helping transform files and handle the insertion of data into the MS SQL database.

To facilitate file sharing between end users and the application, Sincera’s architecture team employed an S3 bucket. S3, an AWS object storage service, was utilized for its high availability and allowed data to be organized into different folders after processing. Lifecycle policies were implemented to automatically move data from S3 to Glacier for long-term archival or purge it if deemed unnecessary.

Another significant aspect of the migration was the move from MS SQL to MySQL RDS database. Considering the limited number of data tables in the schema and the fact that all CRUD operations were performed through stored procedures, the data migration was deemed low to medium complexity. This migration ensured database vendor agnosticism and eliminated any licensing requirements. The MySQL RDS database was hosted on AWS RDS, a highly available multi-AZ service capable of creating snapshots and backups to support read operations for reporting and analytics.

Summary

The conversion of monolithic legacy applications from the dotnet Framework to a cloud-native architecture offers the potential to harness the benefits of cloud computing, including enhanced agility, scalability, and cost savings. The process of modernizing your legacy dotnet applications into a cloud-native environment can bring about transformative changes. It is essential to select reliable providers with specialized expertise in this domain to ensure the desired value-add and achieve the expected outcomes.