The Azure Architecture Center organizes application architecture fundamentals guidance as a series of steps:
The Particular Service Platform supports the messaging patterns recommended by the Azure Architecture Center for the following architectural styles:
- Event driven architecture
- Microservices architecture
- N-tier architecture
- Web-queue-worker architecture
The Particular Service Platform supports the Azure services required to build distributed, message-driven systems. These articles help make informed technology choices for Azure-focused solutions:
Additional technology choices are described in Technology choices for Azure solutions.
The Azure Architecture Center describes several reference architectures that are compatible with the Particular Service Platform. Refer to architectural styles and technology choices for details of how to apply those architectures using the Particular Service Platform.
The Particular Service Platform makes systems follow the ten design principles for Azure applications.
- Self healing is provided by the rich set of recoverability features like automatic retries, load leveling, throttling and more, which make application services resilient to failures.
- Redundancy is provided by capabilities such as scaling out and high availability.
- Coordination is minimized between services by messaging. Watch Autonomous microservices don't share data. Period (video) for more recommendations.
- Scaling out is achieved by various methods such as asynchronous message-based communication and competing consumers.
- Partitioning is achieved by making suitable technology choices. NServiceBus directly supports and integrates with a range of Azure services that provide partitioning for large-scale systems.
- Operations tooling for monitoring production environments and error recovery is provided by ServicePulse and OpenTelemetry.
- Managed services such as Azure App Service, Azure SQL, and Azure Cosmos DB are fully supported by the Particular Service Platform. See technology choices.
- A wide variety of data stores are supported by the Particular Service Platform as persistence choices.
- System evolution is aided by:
- High cohesion within service boundaries.
- Loose coupling and asynchronous operations through messaging.
- Encapsulating domain knowledge in message handlers and sagas.
- Separating business logic from infrastructure concerns, such as reliability and recoverability, which are handled by the Particular Service Platform.
- Enabling independent services deployment by decoupling their communication using asynchronous messaging.
- Meet business needs by decomposing workloads into logically separated units using messaging. Allow each component's characteristics and design decisions to be optimized and monitored for the specific business needs at hand (e.g. resiliency, scalability, consistency, etc.).
Azure Cloud Design Patterns lists many proven patterns for addressing specific challenges. The Particular Service Platform implements many of these such as Asynchronous Request-Reply, Circuit Breaker, Claim Check, Competing Consumers, and more.
The Particular Service Platform helps achieve the five pillars of software quality described by the Microsoft Azure Well-Architected Framework. For example:
- Cost optimization
- Costs may be optimized by choosing the most appropriate technology.
- Operational excellence
- The Particular Service Platform creates required infrastructure components using dedicated installation APIs or infrastructure scripting tools.
- ServicePulse provides detailed insights into the operational health of the system.
- NServiceBus supports OpenTelemetry to integrate with 3rd-party monitoring and tracing tools.
- Messaging allows loosely coupled architectures with autonomous and independent services.
- NServiceBus APIs are designed for unit testing.
- Performance efficiency
- NServiceBus endpoints can be easily scaled out using methods such as the built-in competing consumers mechanism and scaled up while tuning for concurrency.
- NServiceBus is designed and tested for high-performance and memory efficiency.
- Monitoring allows observation of individual endpoint performance and identification of bottlenecks.