{"id":231633,"date":"2024-11-12T01:14:52","date_gmt":"2024-11-12T09:14:52","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/java\/?p=231633"},"modified":"2024-11-12T01:14:52","modified_gmt":"2024-11-12T09:14:52","slug":"introducing-the-modern-web-app-mwa-pattern-for-java","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/java\/introducing-the-modern-web-app-mwa-pattern-for-java\/","title":{"rendered":"Introducing the Modern Web App (MWA) Pattern for Java"},"content":{"rendered":"<p>We are thrilled to announce the Modern Web App (MWA) pattern for Java, a comprehensive guide to modernizing Java applications with independently scalable, cloud-native architecture on Azure. Designed with the Spring Framework and Azure in mind, MWA can also be adapted to other frameworks and cloud providers, providing Java developers with flexible and actionable strategies to modernize their applications.<\/p>\n<p>The MWA pattern marks the next stage in transforming monolithic web applications toward cloud-native architecture, with a focus on the <strong>Refactor <\/strong>modernization strategy. Building on the <a href=\"https:\/\/aka.ms\/eap\/rwa\/java\">Reliable Web App (RWA) pattern<\/a>, which helped organizations migrate monolithic apps to the cloud with minimal changes under a <strong>Replatform <\/strong>approach, MWA guides teams further by encouraging decoupling and decomposition of key functions into microservices. This enables high-demand areas to be optimized for agility and scalability, providing dedicated resources for critical components and enhancing reliability and performance. Decoupling also allows independent versioning and scaling, delivering cost efficiency and flexibility to evolve individual app components without affecting the entire system.<\/p>\n<p><figure id=\"attachment_231634\" aria-labelledby=\"figcaption_attachment_231634\" class=\"wp-caption alignnone\" ><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/Picture1.png\"><img decoding=\"async\" class=\"wp-image-231634 size-full\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/Picture1.png\" alt=\"Modern Web App (MWA)\" width=\"1299\" height=\"456\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/Picture1.png 1299w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/Picture1-300x105.png 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/Picture1-1024x359.png 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/Picture1-768x270.png 768w\" sizes=\"(max-width: 1299px) 100vw, 1299px\" \/><\/a><figcaption id=\"figcaption_attachment_231634\" class=\"wp-caption-text\"><em>Figure 1 &#8211; Modern Web App (MWA)<\/em><\/figcaption><\/figure><\/p>\n<h2><strong>Key Features of MWA for Java<\/strong><\/h2>\n<ul>\n<li><strong>Modernization Through Refactoring<\/strong>: Building on the RWA pattern, the MWA focuses on decoupling critical components into microservices to enhance scalability, agility, and resource optimization.<\/li>\n<li><strong>Incremental Refactoring with the Strangler Fig Pattern<\/strong>: The strangler fig pattern enables a gradual migration from monolithic structures to modular services. For Java, this is implemented through Spring Boot and Azure Service Bus, allowing seamless integration and progressive replacement of legacy services with modern, non-blocking solutions.<\/li>\n<li><strong>Cloud-Native Architecture<\/strong>: Leverages Azure services, including Azure App Service, Azure Container Apps, and Azure Monitor, to support resilient, high-performance applications with independent scaling for key components.<\/li>\n<\/ul>\n<h2><strong>What\u2019s Covered in the MWA Reference Implementation<\/strong><\/h2>\n<p><figure id=\"attachment_231646\" aria-labelledby=\"figcaption_attachment_231646\" class=\"wp-caption alignnone\" ><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/modern-web-app-java.png\"><img decoding=\"async\" class=\"wp-image-231646\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/modern-web-app-java.png\" alt=\"Architecture\" width=\"1277\" height=\"660\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/modern-web-app-java.png 3240w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/modern-web-app-java-300x155.png 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/modern-web-app-java-1024x529.png 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/modern-web-app-java-768x397.png 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/modern-web-app-java-1536x794.png 1536w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/modern-web-app-java-2048x1058.png 2048w\" sizes=\"(max-width: 1277px) 100vw, 1277px\" \/><\/a><figcaption id=\"figcaption_attachment_231646\" class=\"wp-caption-text\"><em>Figure 2 &#8211; Architecture<\/em><\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p><figure id=\"attachment_231652\" aria-labelledby=\"figcaption_attachment_231652\" class=\"wp-caption alignnone\" ><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/2024-11-05_16-21-34-1.jpg\"><img decoding=\"async\" class=\"wp-image-231652\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/2024-11-05_16-21-34-1-1024x710.jpg\" alt=\"Technologies\" width=\"575\" height=\"399\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/2024-11-05_16-21-34-1-1024x710.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/2024-11-05_16-21-34-1-300x208.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/2024-11-05_16-21-34-1-768x533.jpg 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2024\/11\/2024-11-05_16-21-34-1.jpg 1202w\" sizes=\"(max-width: 575px) 100vw, 575px\" \/><\/a><figcaption id=\"figcaption_attachment_231652\" class=\"wp-caption-text\"><em>Figure 3 &#8211; Technologies<\/em><\/figcaption><\/figure><\/p>\n<p>The MWA reference implementation is designed to showcase how MWA patterns can enhance scalability, security, and agility in response to evolving business needs. In this context, we use a fictional company, Contoso Fiber, evolving business needs to illustrate the MWA pattern, which takes scalability further through decoupling and refactoring of monolithic line-of-business web app. This architecture enables independent scaling via microservices for high demand, supporting Contoso Fiber\u2019s growth while enhancing security, agility, and reliability meeting the 99.9% business SLO uptime requirement.<\/p>\n<h2><strong>Get Started<\/strong><\/h2>\n<ul>\n<li><strong>Deploy the Reference App<\/strong>: Experience all MWA principles in action by deploying the full production-grade Java application to Azure. Visit the <a href=\"https:\/\/github.com\/Azure\/modern-web-app-pattern-java\">MWA GitHub repository<\/a> for more information.<\/li>\n<li><strong>Explore In-Depth Documentation<\/strong>: Learn more about MWA through comprehensive <a href=\"https:\/\/aka.ms\/eap\/mwa\/java\/doc\">documentation<\/a> on Microsoft Learn.<\/li>\n<li><a href=\"https:\/\/aka.ms\/eap\/mwa\/java\/demo\"><strong>Try Out MWA Patterns<\/strong><\/a>: Discover and experiment with the MWA patterns to modernize and scale your Java applications.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are thrilled to announce the Modern Web App (MWA) pattern for Java, a comprehensive guide to modernizing Java applications with independently scalable, cloud-native architecture on Azure. Designed with the Spring Framework and Azure in mind, MWA can also be adapted to other frameworks and cloud providers, providing Java developers with flexible and actionable strategies [&hellip;]<\/p>\n","protected":false},"author":29534,"featured_media":231647,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-231633","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java"],"acf":[],"blog_post_summary":"<p>We are thrilled to announce the Modern Web App (MWA) pattern for Java, a comprehensive guide to modernizing Java applications with independently scalable, cloud-native architecture on Azure. Designed with the Spring Framework and Azure in mind, MWA can also be adapted to other frameworks and cloud providers, providing Java developers with flexible and actionable strategies [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/posts\/231633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/users\/29534"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/comments?post=231633"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/posts\/231633\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/media\/231647"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/media?parent=231633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/categories?post=231633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/tags?post=231633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}