Consider this scenario: Relecloud is a mid-sized concert ticket selling company that wants to take their on-premises, line of business (LOB) call center web application to the cloud. Traffic to their on-premises application has increased beyond expectations and they quickly realized that the on-premises infrastructure doesn't provide a cost-efficient means to scale. It is clear to Relecloud that a migration to the cloud offers the most return on investment. However, Relecloud has a small IT team because technology is not their core business. The charter for this small IT team is to meet the increased business demand as quickly as possible with minimal investments in the existing monolithic app. Sounds familiar?
While Relecloud is a fictional company, this is an all-too-common scenario we witness with our range of customers – large and small! We are often asked, how are other customers taking that first step into the cloud? How can we feel more confident about this journey before we get started?
Introducing the reliable web app pattern
We are excited to announce the reliable web app pattern to help address this need. It is a set of best practices built on the Azure Well-Architected Framework that helps developers successfully migrate web applications to the cloud and set a foundation for future modernization in Azure. In this article, we will discuss how this pattern helps optimize the cost and improve your web application's performance, security, operations, and reliability with minimal changes when moving from on-premises infrastructure to Azure cloud.
Converge on the cloud: reliable web app pattern is the first step in the cloud journey for modernizing web apps.
Providing prescriptive guidance, a deployable reference architecture, simulations, cost estimates, and service-level objectives (SLOs), this pattern is designed to streamline and accelerate this journey. It enables developers to more easily transform traditional N-tier .NET applications into modern applications running in the cloud in a secure, performant, and reliable way. It is minimally complex, easy to set up on Azure, and include reusable enterprise-grade assets drawn from hundreds of real-world enterprise modernization examples, so you can directly leverage the concepts and starter code in your environment with confidence.
We developed the reliable web app pattern based on the constant feedback that we hear from our enterprise developers that they need end-to-end application architecture guidance and reference implementation to reduce the cycle time for completing proof-of-concept work and to accelerate modernizing their apps on Azure. Based on the feedback, we built common objectives and best practices for our developers to thrive in the cloud quickly. The reliable web app pattern delivers against a set of objectives that follow the pillars of Azure Well-Architected Framework and 12 Factor Apps. The following table outlines the pattern objectives and how the reference implementation meets these objectives.
Business and Technical Objectives
Implementation for .NET
▪ Low-cost high-value wins
▪ Minimal code changes
▪ Security best practices
▪ Reliability design patterns
▪ Improve operational excellence
▪ Cost-optimized environments
▪ Well Architected Framework principles
▪ Business driven Service level objective (SLO): 99.9%
▪ Retry pattern
▪ Circuit-breaker pattern
▪ Cache-aside pattern
▪ Right-size resource
▪ Managed identities
▪ Private endpoints
▪ Secrets management
▪ Repeatable infrastructure
▪ Telemetry, logging, monitoring
▪ Multi-region deployment
And here’s the architecture of the reference implementation that applies the reliable web app pattern.
Built around a real-world business context
The implementation is built around a real-world business context and represents the built-in complexities you would encounter in your own environment. We don’t shy away from the hard stuff! In fact, we call this the reliable web app pattern because it is a battle-tested reference architecture designed to guide you through the first stage of the web app journey. The combined guidance, reference implementation, and tools give you the freedom and confidence to adopt these best practices directly into your own production app.
This release covers the first phase of the web app journey using .NET (converging on the cloud). We chose Azure App Service as the initial host destination for its broad set of built-in enterprise connectors, mature DevOps offerings, integrated security and compliance capabilities, and the fully managed production environment as the industry's leading platform as a service (PaaS). The guidance below covers the decision-making process in choosing the right Azure services for supporting capabilities like data stores, caching, observability, identity, secrets, configuration, and more.
The pattern also supports choosing the cost-optimized Azure services for your business, defining the availability of your app, and calculating the composite service-level objectives (SLO) based on the Azure services you selected. It also includes costs for development and production configurations with mature CI/CD practices demonstrated in the code repository. Simulation tests that quickly immerse you in the pattern and built-in cost profiles round out the robust features and principles that help modernize your line-of-business applications while maintaining security, reliability, and cost efficiency.
The reliable web app pattern consists of the guidance in the Azure Architecture Center, the open-source reference implementation code, and CI/CD pipelines (for Azure DevOps Pipelines and GitHub Actions) on GitHub. We have also put together a series of videos to get you started.
The reliable web app pattern is the first step in the cloud journey for modernizing web apps and sets a foundation for future modernization in Azure. We believe in a phased journey to modernize a legacy app and evolve it into a modern, cloud-native microservices app. In the future, we will cover more phases, more patterns, and more languages to help enterprise developers confidently embrace the power of the cloud using Enterprise App Patterns. Stay tuned!
(This post is co-authored with Nish Anil, Senior Program Manager, and Ryan Frazier, Principal PM Manager)