{"id":11272,"date":"2022-01-18T19:09:59","date_gmt":"2022-01-19T01:09:59","guid":{"rendered":"https:\/\/threecloud.wpengine.com\/?p=11272"},"modified":"2023-11-22T08:56:48","modified_gmt":"2023-11-22T16:56:48","slug":"modernize-your-applications-with-azure-service-bus","status":"publish","type":"post","link":"https:\/\/3cloudsolutions.com\/resources\/modernize-your-applications-with-azure-service-bus\/","title":{"rendered":"Modernize Your Applications with Azure Service Bus"},"content":{"rendered":"<p>I recently explored four common software design problems and legacy application issues that are holding organizations back today, positing that all of them can be successfully addressed with <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/service-bus\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\">Microsoft Azure Service Bus<\/a>. Today, I\u2019ll dig deeper into Azure Service Bus\u2019 reliable cloud messaging, how it can help you modernize your applications, and why it\u2019s able to solve for such a diverse set of challenges.<\/p>\n<h2>What\u2019s Holding Your App Back: A Recap<\/h2>\n<p>First, here\u2019s a quick refresher on those top software design problems we role played last week:<\/p>\n<ol>\n<li><strong>Tight Coupling:<\/strong> The applications in your ecosystem (e.g. your customer-facing website and CRM) talk directly to each other, creating a messy dependency chain, an unclear separation of responsibilities, and applications that no developer wants to touch. Tight coupling can threaten your ability to scale and attract or retain engineering talent.<\/li>\n<li><strong>Polling:<\/strong> A Windows service or scheduled job runs over and over to check for new data or a new file. For example, you could be polling an email inbox every 15 minutes to check for new messages. The problem with polling is that it\u2019s highly inefficient, especially when you\u2019re polling incessantly only to get back an unchanged state.<\/li>\n<li><strong>Unreliable Messaging:<\/strong> There is a mission-critical business process that fails often enough that it has become someone\u2019s job to check on it regularly and resubmit failed tasks. This could be your invoice processing system, which when it fails requires someone in Accounts Receivable to manually load each failed invoice.<\/li>\n<li><strong>Nonreactive UX:<\/strong> You\u2019ve got a website or app that is only capable of presenting a given user with the latest data each time that user starts a new session, leading to frustration. The experience falls short of a modern user\u2019s expectations and keeps your application from serving useful pop-up message notifications, etc.<\/li>\n<\/ol>\n<p>It may sound too good to be true, but Azure Service Bus can help you address all of these issues and more. It\u2019s a pub\/sub messaging service that offers a reliable and secure platform for the transfer of data and state. With it, you can solve integration problems for applications that vary in environments, communication protocols, domains, and networks.\u00a0You\u2019ve probably heard the term<a href=\"https:\/\/en.wikipedia.org\/wiki\/Publish%E2%80%93subscribe_pattern\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\"> pub\/sub<\/a> being kicked around, as it\u2019s gotten a fair amount of attention in recent years. In short, pub\/sub is a flavor of<a href=\"https:\/\/en.wikipedia.org\/wiki\/Event-driven_architecture\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\"> event-driven architecture<\/a>. Whenever an event of interest occurs, the app which produced that event (the \u201csender\u201d) publishes data into what is known as a \u201ctopic\u201d in a well-known event library (usually referred to as a \u201cmessage bus\u201d or \u201cservice bus\u201d). Any app interested in that particular type of event can subscribe to the topic, become a \u201creceiver,\u201d and be notified almost immediately whenever the event occurs.<\/p>\n<p>With that in mind, let\u2019s take a look at our problem areas above and how we can address each one using a pub\/sub model.<\/p>\n<h4>Tight coupling is a thing of the past with pub\/sub.<\/h4>\n<p>Azure Service Bus can decouple applications and services. If you want your team (or the world) to know when new users register on your website, your site can publish a message to a <em>UserRegistered <\/em>topic. Downstream systems can subscribe to that topic and, for example, log audit entries whenever a message arrives. What\u2019s so great about that? None of these systems need to know anything about each other. Event producers can publish messages and go on with their lives, and event subscribers can process messages without getting in the way of each other.<\/p>\n<h4>Say goodbye to polling, too.<\/h4>\n<p>Instead of querying a database every five minutes to see if new records have been added from <em>SomeApp<\/em>, <em>SomeApp<\/em> can simply publish a message and <em>SomeOtherApp<\/em> can listen in and immediately go to work whenever a message arrives on that topic. Service Bus queues, which act as message brokers, do not need to have a receiver that polls for messages continuously.<\/p>\n<h4>All enterprise-level message buses offer reliable messaging.<\/h4>\n<p>If you want to save your team time and make sure all messages are successfully processed, turn on reliable messaging and go to town. When an application receives a message it\u2019s unable to process because a database is down, it can throw an exception and the message will automatically be popped back onto the message bus and retried later. Even better, Azure Service Bus allows you to configure how often to retry a message and how many attempts to make before sending the message off to a special area called the dead letter queue. Add some monitoring to your dead letter queue and support staff can be notified that something\u2019s been escalated.<\/p>\n<h4>Enhance your users\u2019 experience in real time.<\/h4>\n<p>Finally, you can use a pub\/sub model to ensure you always meet your users\u2019 expectations. Let\u2019s say you want to add a simple \u2018Chat with Support\u2019 module to your website and a matching Support Queue module to your internal admin website. With pub\/sub, each site can publish messages to a <em>SiteSupportChat<\/em> topic, and each site can also subscribe to that very same topic. As messages are entered on either end, the other side will be notified immediately of new activity and can pop a message onto the appropriate user\u2019s or administrator\u2019s screen.<\/p>\n<h2>Making the Call: Azure Service Bus, or Bust?<\/h2>\n<p>In the Azure world, <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/service-bus\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\">Service Bus<\/a> is the underlying service that can support all of the above scenarios. If you think your application and organization could benefit from an event-driven, pub\/sub approach, one of our experts at Polaris can help you confirm that Azure Service Bus is the route to go.<\/p>\n<p>Contact us, and we can help you decide how to best utilize Azure\u2019s messaging services\u2013including Service Bus, Event Grid, and Event Hubs\u2013to find the solution that best fits your needs. We\u2019re passionate about helping businesses of any size solve for today\u2019s goals and tomorrow\u2019s.<\/p>\n<p>Service Bus can be an integral part of your application modernization plan. But there\u2019s even more Azure magic that can make the whole system work. Stay tuned and I\u2019ll explore <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/functions\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\">Function Apps<\/a>, <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/logic-apps\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\">Logic Apps<\/a>, and microservices via <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/app-service\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"undefined (opens in a new tab)\">App Services<\/a> in upcoming posts!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently explored four common software design problems and legacy application issues that are holding&mldr;<\/p>\n","protected":false},"author":60,"featured_media":11386,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[292,264],"tags":[],"class_list":["post-11272","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-app-innovation","category-enterprise-apps"],"acf":[],"_links":{"self":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts\/11272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/users\/60"}],"replies":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/comments?post=11272"}],"version-history":[{"count":0,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/posts\/11272\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/media\/11386"}],"wp:attachment":[{"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/media?parent=11272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/categories?post=11272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/3cloudsolutions.com\/wp-json\/wp\/v2\/tags?post=11272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}