You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Modernization Journey of Contoso Fiber's CAMS Web App
2
+
3
+
After migrating their Customer Account Management System (CAMS) to Azure, Contoso Fiber achieved their initial goals: a 99.9% SLO, optimized costs, and expanded reach. However, they recognized that leveraging Azure's cloud-native services would further improve agility, reliability, and scalability
4
+
5
+
## Modern Web App pattern for Java
6
+
Building on the prior [Reliable Web App pattern for Java](https://aka.ms/eap/rwa/java), which re-platformed CAMS in Azure with minimal code changes, Contoso now focuses on a Modern Web App Pattern to better utilize cloud-native capabilities. This phase involves:
7
+
8
+
- Refactoring the Monolith: By using the strangler-fig pattern, Contoso is gradually transforming the monolithic CAMS into modular components, enhancing scalability.
9
+
- Applying Queue-Based Load Leveling: This pattern optimizes performance by buffering external dependencies like email services, reducing load peaks.
10
+
- Improving Security and Reliability: Isolating services allows Contoso to better secure components and contain any potential failures.
11
+
12
+
This modernization lays a cloud-native foundation for CAMS, positioning Contoso Fiber for sustainable growth and adaptability.
13
+
14
+
## New services
15
+
16
+
***Azure Container Apps** - The Modern Web App pattern reference sample uses Azure Container Apps to host a new email processing service that was separated from the web API as part of applying the [Strangler Fig pattern](https://learn.microsoft.com/azure/architecture/patterns/strangler-fig). Azure Container Apps is a fully managed serverless platform for running containerized apps. The reference sample uses Azure Container Apps because it provides managed container orchestration with support for automatic scale-in and scale-out based on a wide variety of rules using [KEDA](https://keda.sh/docs/2.13/) scalers. This allows the email processing service to automatically scale to zero when there is no work to be done and automatically scale up, as needed, based on the number of messages in the Service Bus queue.
17
+
18
+
***Azure Container Registry** - Because the Modern Web App pattern reference sample uses Azure Container Apps, it also uses Azure Container Registry to store the container images for the email processing service. Azure Container Registry allows you to build, store, and manage container images and artifacts in a private registry for all types of container deployments. Azure Container Registry supports the reference sample's SLO goals by being highly available thanks to its [geo-replication](https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication#configure-geo-replication) feature.
19
+
20
+
***Azure Service Bus** - The Modern Web App pattern reference sample uses Azure Service Bus to enable message-based communication between the CAMS Application and the new email processing service. Using message-based communication allows improved reliability and performance by decoupling the CAMS application from the email processing service. Applying a [Queue-Based Load Leveling pattern](https://learn.microsoft.com/azure/architecture/patterns/queue-based-load-leveling) means that neither the CAMS application nor the email processing service will be affected by large numbers of email requests. The reference sample uses Azure Service Bus because it provides a fully managed, reliable, and secure messaging service that supports the reference sample's SLO goals.
21
+
22
+
***Azure App Configuration Feature Manager** - The Modern Web App pattern uses Azure App Configuration to store the CAMS application settings. Azure App Configuration is a managed service that provides a central place to manage application settings and feature flags.
Copy file name to clipboardExpand all lines: README.md
+34-14Lines changed: 34 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,18 +2,22 @@
2
2
3
3
## Introduction
4
4
5
-
This repository contains a collection of patterns and best practices for building modern Java web applications. The patterns are designed to be used with the [Spring Framework](https://spring.io/) and [Azure](https://azure.microsoft.com/), but can be adapted to other frameworks and cloud providers.
5
+
This repository provides a "real-world" application that implements the best practices and design patterns discussed in [Modern Web App pattern for Java](https://aka.ms/eap/mwa/java/doc). The patterns are designed to be used with the [Spring Framework](https://spring.io/) and [Azure](https://azure.microsoft.com/), but can be adapted to other frameworks and cloud providers.
6
6
7
+
This project has [a companion article in the Azure Architecture Center](https://aka.ms/eap/mwa/java/doc) that describes design patterns and best practices. Here's an outline of the contents in this readme:
7
8
8
-
## Prerequisites
9
+
-[Architecture](#architecture)
10
+
-[Workflow](#workflow)
11
+
-[Steps to deploy the reference implementation](#steps-to-deploy-the-reference-implementation)
-[Azure Dev CLI](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/install-azd?tabs=winget-windows%2Cbrew-mac%2Cscript-linux&pivots=os-mac)
Contoso Fiber aligned to a hub and spoke network topology in the production deployment architecture to centralize common resources. This network topology provided cost savings, enhanced security, and facilitated network integration (platform and hybrid):
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
170
186
Any use of third-party trademarks or logos are subject to those third-party's policies.
187
+
188
+
## Data Collection
189
+
190
+
The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as described in the repository. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft's privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkId=521839. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices.
In this guide, we've shared how Contoso Fiber modernized their Customer Account Management System (CAMS) by leveraging Azure's cloud-native capabilities, addressing scalability, reliability, and cost optimization. Contoso made these changes to break free from limitations of their monolithic setup, allowing for easier scaling and more efficient handling of fluctuating demand. These strategies, drawn from Azure resources and best practices, illustrate a modernization path that other businesses can follow to achieve similar benefits.
4
+
5
+
This section highlights those key resources, providing a deeper dive into Azure’s architecture and modernization techniques that empower other projects to succeed with cloud-native solutions.
6
+
7
+
## Additional sources for Azure Best Practices
8
+
9
+
Use the following resources to learn more about Microsoft's best practices and recommendations for building solutions on Azure.
10
+
11
+
For further guidance on how to build Azure solutions that align with Microsoft's best practices and recommendations
12
+
13
+
-[Cloud Adoption Framework](https://learn.microsoft.com/azure/cloud-adoption-framework/overview) - Helps an organization prepare and execute their strategy to build solutions on Azure.
14
+
-[Azure Architecture Center fundamentals](https://learn.microsoft.com/azure/architecture/guide/) - Provides a library of content that presents a structured approach for designing applications on Azure that are scalable, secure, resilient, and highly available.
15
+
-[Well Architected Framework](https://learn.microsoft.com/azure/architecture/framework/) - Describes the best practices and design principles that should be applied when designing Azure solutions that align with Microsoft's recommended best practices.
16
+
-[Azure Architectures](https://learn.microsoft.com/azure/architecture/browse/) - Provides architecture diagrams and technology descriptions for reference architectures, real world examples of cloud architectures, and solution ideas for common workloads on Azure.
17
+
18
+
## Additional sources for Azure Migration
19
+
20
+
The following tools and resources can help you with migrating on-prem resources to Azure.
21
+
22
+
-[Azure Migrate](https://learn.microsoft.com/azure/migrate/migrate-services-overview) - Azure Migrate provides a simplified migration, modernization, and optimization service for Azure that handles assessment, migration of web apps, SQL server, and Virtual Machines.
23
+
-[Azure Database Migration Guides](https://learn.microsoft.com/data-migration/) - Provides resources for different database types, and different tools designed for your migration scenario.
24
+
-[Azure App Service Landing Zone Accelerator](https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/app-services/landing-zone-accelerator) - Deployment architecture guidance for hardening and scaling Azure App Service deployments.
25
+
-[Register an application](https://learn.microsoft.com/entra/identity-platform/quickstart-register-app) - Quickstart: Register an application with the Microsoft identity platform.
0 commit comments