Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Building reliable, scalable, and secure cloud applications requires deliberate architectural decisions. The best practices in this section provide guidance for common concerns that arise in distributed systems, such as caching, data partitioning, API design, and transient fault handling. Each practice addresses one or more pillars of the Azure Well-Architected Framework, which defines five quality attributes for workload design: Reliability, Security, Cost Optimization, Operational Excellence, and Performance Efficiency.
These practices complement other foundational guidance in the Azure Architecture Center. The design principles for Azure applications provide high-level strategies, like designing for self-healing and scaling out. The cloud design patterns offer reusable solutions to recurring architectural problems. The performance antipatterns describe common defects that cause scalability issues under load. These resources help you make informed architectural choices.
Catalog of practices
Each practice in this table maps to one or more Well-Architected Framework pillars. Use these mappings to identify which practices are most relevant to the quality attributes you're prioritizing in your workload.
| Practice | Summary | Related pillars |
|---|---|---|
| API design | Design web APIs to support platform independence by using standard protocols and agreed-upon data formats. Promote service evolution so that clients can discover functionality without requiring modification. Improve response times by supporting partial responses and providing ways to filter and paginate data. | Operational Excellence, Performance Efficiency |
| API implementation | Implement web APIs to be efficient, responsive, scalable, and available. Make actions idempotent, support content negotiation, and follow the HTTP specification. Handle exceptions, and support the discovery of resources. Provide ways to handle large requests and minimize network traffic. | Operational Excellence, Performance Efficiency |
| Autoscaling | Design apps to dynamically allocate and deallocate resources to satisfy performance requirements and minimize costs. Take advantage of Azure Monitor autoscale and the built-in autoscaling that many Azure components offer. | Cost Optimization, Performance Efficiency |
| Background jobs | Implement batch jobs, processing tasks, and workflows as background jobs. Use Azure platform services to host these tasks. Trigger tasks with events or schedules, and return results to calling tasks. | Reliability, Operational Excellence |
| Caching | Improve performance by copying data to fast storage that's close to apps. Cache data that you read often but rarely modify. Manage data expiration and concurrency. See how to populate caches and use the Azure Managed Redis service. | Performance Efficiency |
| Content Delivery Network | Use content delivery networks (CDNs) to efficiently deliver web content to users and reduce load on web apps. Overcome deployment, versioning, security, and resilience challenges. | Reliability, Performance Efficiency |
| Data partitioning | Partition data to improve scalability, availability, and performance, and to reduce contention and data storage costs. Use horizontal, vertical, and functional partitioning in efficient ways. | Cost Optimization, Performance Efficiency |
| Data partitioning strategies (by service) | Apply partitioning strategies across Azure services, including Azure SQL Database, Azure Cosmos DB, Azure Blob Storage, Azure Managed Redis, Azure Service Bus, and others. Distribute loads, reduce latency, and support horizontal scaling. | Cost Optimization, Performance Efficiency |
| Host name preservation | Learn why it's important to preserve the original HTTP host name between a reverse proxy and its back-end web application, and how to implement this recommendation for the most common Azure services. | Reliability, Security |
| Message encoding considerations | Choose the payload structure, encoding format, and serialization library for asynchronous messages exchanged between system components. Consider tradeoffs such as interoperability, size, human readability, and schema evolution. | Security |
| Monitoring and diagnostics | Track system health, usage, and performance with a monitoring and diagnostics pipeline. Turn monitoring data into alerts, reports, and triggers that help in various situations. Examples include detecting and correcting issues, spotting potential problems, meeting performance guarantees, and fulfilling auditing requirements. | Operational Excellence |
| Transient fault handling | Handle transient faults caused by unavailable networks or resources. Overcome challenges when developing appropriate retry strategies. Avoid duplicating layers of retry code and other antipatterns. | Reliability |
Design principles
Before you address specific technical concerns, establish a strong architectural foundation. The design principles for Azure applications provide high-level strategies that apply across workloads, such as designing for self-healing, scaling out, and minimizing coordination. These principles shape decisions that the best practices listed previously help you implement.
Cloud design patterns
With principles in place, cloud design patterns give you reusable solutions for recurring problems in distributed systems. Many of the best practices in this section rely on one or more of these patterns. For example, the transient fault handling guidance builds on the Retry pattern and Circuit Breaker pattern, the caching guidance relates to the Cache-Aside pattern, and the background jobs guidance uses patterns like Competing Consumers and Queue-Based Load Leveling. Review the full catalog to identify patterns that address the architectural challenges in your workload.
Performance antipatterns
Even with sound principles, good patterns, and best practices applied, defects can emerge under production load. Performance antipatterns for cloud applications describe common designs that don't scale or shortcuts that accumulate as features are added. Use these antipatterns as a checklist during design reviews and code reviews to catch issues before they reach production.
Next steps
- Azure Well-Architected Review - Assess your workload against the Well-Architected Framework pillars.
- Design principles for Azure applications - Start with the foundational principles that inform these best practices.
- Cloud design patterns - Explore reusable solutions to common architectural challenges.