Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Board Review: Service Bus: Introductory session with champion scenarios #992

Closed
ramya-rao-a opened this issue Jan 31, 2020 · 6 comments
Closed
Assignees
Labels
architecture board-review Request for an Architectural Board Review

Comments

@ramya-rao-a
Copy link
Contributor

ramya-rao-a commented Jan 31, 2020

The Basics

Champion Scenarios

Service Bus is intended for traditional enterprise applications. These enterprise applications require transactions, ordering, duplicate detection, and instantaneous consistency. Service Bus enables cloud-native applications to provide reliable state transition management for business processes. When handling high-value messages that cannot be lost or duplicated, use Azure Service Bus. Service Bus also facilitates highly secure communication across hybrid cloud solutions and can connect existing on-premises systems to cloud solutions.

Service Bus is a brokered messaging system. It stores messages in a "broker" (for example, a queue) until the consuming party is ready to receive the messages.

It has the following characteristics:

  • reliable asynchronous message delivery (enterprise messaging as a service) that requires polling
  • advanced messaging features like FIFO, batching/sessions, transactions, dead-lettering, temporal control, routing and filtering, and duplicate detection
  • at least once delivery
  • optional in-order delivery

Some sample scenarios

  • Order processing
  • Financial transactions
@ramya-rao-a ramya-rao-a added architecture board-review Request for an Architectural Board Review labels Jan 31, 2020
@adrianhall
Copy link
Member

Scheduled for the 18th

@richardpark-msft
Copy link
Member

Scenario:

Service bus used for resiliency ("no lost messages"), allowing for backpressure
and coordination with an external system.

  1. An external system (Azure DevOps) generates events for a repo (ex: pull request created).
    The code that generates these messages is pre-canned and not under user control.
  2. The events are sent to a single queue, which is configured to auto-forward to a topic.
  3. That topic is subscribed to by multiple Azure Functions:
    • A telemetry function that forwards data to appinsights with no throttling.
    • A status function that updates a SQL Server database that users view (through a webpage)
      to see which builds are active and where.
    • A build function that launches jobs in a datacenter with more capable hardware.
      • This function cancels messages when it detects too much activity to prevent
        overwhelming the remote service which can

@richardpark-msft
Copy link
Member

Scenario:

Service bus coordinates work between several components which are in various languages and platforms:

  • Mobile (Android, IOS)
  • Desktop (Linux, Windows)
  • Web

Several key parts of this design:

  • Disparate systems can make tracing and debugging difficult. Not only working with multiple programs but multiple groups.
  • Network connectivity can be erratic - user needs some form of local buffering to handle "outboxing" a message which will get sent when the network comes back up.
  • Some services send messages but infrequently - sometimes just once a day.

@ramya-rao-a
Copy link
Contributor Author

Some more helpful links from Clemens

@ramya-rao-a
Copy link
Contributor Author

cc @KieranBrantnerMagee, @JoshLove-msft, @hemanttanwar, @richardpark-msft, @HarshaNalluru, @ShivangiReja, @yunhaoling, @srnagar

@kyle-patterson
Copy link
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
architecture board-review Request for an Architectural Board Review
Projects
None yet
Development

No branches or pull requests

4 participants