Microsoft Workloads on AWS
Cost optimization and innovation: An introduction to application modernization
This post is contributed by Douglas Lee, Principal Developer Advocate for Windows
When we work with customers running on-premises Windows workloads, we usually hear two things. Customers want to lower their Total Cost of Ownership, and embrace technologies that enable them to innovate freely to meet their evolving business needs.
Introduction to Windows Application Modernization
This blog discusses Windows application modernization to AWS and shows you common patterns, methods, and considerations when considering your own modernization journey.
Windows application modernization is the process of progressively transforming legacy applications into well-architected cloud-native applications. Customers modernize their applications to take advantage of innovations in cloud computing. Some of the key benefits include improved operational efficiency, lower costs, and reducing the amount of administration and management of the various infrastructure stacks.
Additional benefits include the speed of innovation, time to market, and agility to respond to changing market and customer requirements. According to an IDC analysis, customers that move their Windows workloads to AWS see a 56% reduction in the cost of operations over five years, and a 442% increase in ROI over the same period.
Common application modernization patterns
In application modernization, you should consider which parts of the application logic can be converted to microservices. Additionally, it’s important to understand how certain functions and features can run on serverless technologies like AWS Lambda. This allows you to provision code without the need to manage server infrastructure. With the introduction of Savings Plans, now you have the flexibility to use the compute option that best suits your need – Amazon EC2, AWS Fargate, and AWS Lambda – and continue to save money while modernizing your applications. As you shift your usage across EC2, Fargate, and Lambda, Savings Plans will automatically apply to your usage across these services.
The typical goal of modernizing legacy applications is looking at various strategies that can transform your legacy applications into cloud-native applications. In this process, customers consider the viability of breaking up the monolith application over time using the Strangler pattern. There are also cases where the customer decides to do a complete rewrite.
Strangling the monolith with containers
A popular modernization pattern is to break up the legacy monolithic application using multiple containers, deploy the same application as microservices, then switch traffic to the microservices without any downtime. Each feature of the application runs as a separate service within its own container. The services can scale and be updated independently of the others. It is important to point out here that microservices is an architecture design concept. You could choose to modernize to AWS without breaking your monolith into microservices. In this case, you can containerize the entire monolith application into a single container, and it is still considered a modernized application approach.
As such, containers and serverless are deployment methods, and microservices is an architecture concept. Microservices architectures are not a new approach to software engineering, but rather a combination of various successful and proven concepts such as:
- Agile software development
- Service-oriented architectures
- API-first design
- Continuous Integration/Continuous Delivery (CI/CD)
In many cases, design patterns of the Twelve-Factor App are used when dealing with microservices. Microservices architecture is a distributed design approach intended to overcome the limitations of traditional monolithic architectures. Microservices help to scale applications and organizations while improving cycle times. However, they also come with a couple of challenges that might add additional architectural complexity and operational burden.
Serverless and DevOps
Serverless is defined as an operational model by the following tenets:
- No infrastructure to provision or manage
- Automatically scaling by unit of consumption
- “Pay for value” billing model
- Built-in availability and fault tolerance
Software functions within a legacy application can be refactored using serverless technologies like AWS Lambda. AWS Lambda lets you run code without provisioning or managing servers. You pay only for the compute time you consume. With Lambda, you can run code for virtually any type of application or backend service, all with zero administration. Just upload your code and Lambda takes care of everything required to run and scale your code with high availability. You can set up your code to automatically trigger from other AWS services or call it directly from any web or mobile app.
As part of the modernization journey, customers look for ways to improve operational efficiency. Customers can do this by changing the way they provision, publish, and instantiation code to production through DevOps and continuous integration and continuous deployment (CI/CD) practices. There are many AWS resources available about CI/CD practices, such as this example of how to implement serverless CI/CD on AWS.
Data modernization
Finally, customers also consider various ways they can modernize the way they work with data that supports their applications. Customers can choose from 15 AWS purpose-built database engines, which include relational, key-value, document, in-memory, graph, time series, and ledger databases.
AWS’s portfolio of purpose-built databases supports diverse data models and allows you to build use case driven, highly scalable, distributed applications. By picking the best database to solve a specific problem or a group of problems, you can break away from restrictive, monolithic databases and focus on building applications to meet your business needs. As part of the modernization journey, customers often consider new approaches to data modernization.
Even when a relational database isn’t required, customers can choose from other AWS data solutions to build internet scaled applications. For more information, please refer to our database options.
How can AWS help with modernization?
More to come
Whether you’re ready to embrace a fully managed open source database service like Jobvite, or simply need to lower your management burden while staying with SQL Server, or even just want to realize cost savings by running SQL Server on Amazon EC2, let AWS help you assess how your company can get the most out of cloud. Join all the AWS customers that trust us to run their most important applications in the best cloud. Contact us to discuss your Windows migration or modernization initiative. To learn more on modernizing Windows Server or SQL Server, visit our Windows modernization page.