Azure 應用程式架構指南Azure Application Architecture Guide

指南會告訴您在 Azure 上設定可擴充、可復原和高可用性應用程式的結構化方法。This guide presents a structured approach for designing applications on Azure that are scalable, resilient, and highly available. 這是以我們與客戶合作後了解到的實證做法作為基礎。It is based on proven practices that we have learned from customer engagements.

簡介Introduction

雲端正在改變應用程式的設計方式。The cloud is changing the way applications are designed. 不同於龐大且單一的體系,應用程式會分解成較小型的非集中式服務。Instead of monoliths, applications are decomposed into smaller, decentralized services. 這些服務會透過 API 或使用非同步傳訊進行通訊。These services communicate through APIs or by using asynchronous messaging or eventing. 應用程式可水平調整,以依據需求要求新增執行個體。Applications scale horizontally, adding new instances as demand requires.

這些趨勢將帶來新的挑戰。These trends bring new challenges. 應用程式狀態是分散的。Application state is distributed. 作業會平行且非同步地完成。Operations are done in parallel and asynchronously. 發生失敗時,整體系統必須具有復原功能。The system as a whole must be resilient when failures occur. 部署必須自動化且要可預測。Deployments must be automated and predictable. 監視和遙測是取得系統見解的關鍵。Monitoring and telemetry are critical for gaining insight into the system. Azure 應用程式架構指南旨在協助您瀏覽這些變更。The Azure Application Architecture Guide is designed to help you navigate these changes.

傳統內部部署Traditional on-premises現代化雲端Modern cloud
龐大且單一的體系、集中式Monolithic, centralized
為可預測的延展性而設計Design for predictable scalability
關聯式資料庫Relational database
強式一致性Strong consistency
序列和同步處理Serial and synchronized processing
為避免失敗而設計 (MTBF)Design to avoid failures (MTBF)
偶爾有大型更新Occasional big updates
手動管理Manual management
雪花式伺服器Snowflake servers
分解、不集中Decomposed, de-centralized
為彈性延展而設計Design for elastic scale
Polyglot 持續性 (混合儲存體技術)Polyglot persistence (mix of storage technologies)
最終一致性Eventual consistency
並行和非同步處理Parallel and asynchronous processing
為失敗而設計 (MTTR)Design for failure (MTTR)
頻繁的小型更新Frequent small updates
自動化自我管理Automated self-management
不可變的基礎結構Immutable infrastructure

本指南適用於應用程式架構設計人員、開發人員和營運團隊。This guide is intended for application architects, developers, and operations teams. 這不是個別 Azure 服務的使用說明指南。It's not a how-to guide for using individual Azure services. 閱讀本指南之後,您將了解在 Azure 雲端平台上進行建置時,該套用何種架構模式和最佳作法。After reading this guide, you will understand the architectural patterns and best practices to apply when building on the Azure cloud platform. 您也可以下載本指南的電子書版本You can also download an e-book version of the guide.

指南結構How this guide is structured

Azure 應用程式架構指南會整理成一系列的步驟,從架構與設計到實作。The Azure Application Architecture Guide is organized as a series of steps, from the architecture and design to implementation. 每個步驟都有支援的指引,可協助您設計您的應用程式架構。For each step, there is supporting guidance that will help you with the design of your application architecture.

架構樣式Architecture styles

第一個決策點是最基本的。The first decision point is the most fundamental. 您正在建置何種架構?What kind of architecture are you building? 架構可能是微服務架構、更傳統的多層式架構 (N-tier) 應用程式或巨量資料解決方案。It might be a microservices architecture, a more traditional N-tier application, or a big data solution. 我們已識別數個不同的架構樣式。We have identified several distinct architecture styles. 每個都有優點和挑戰。There are benefits and challenges to each.

深入了解:Learn more:

技術選擇Technology choices

應該盡早決定兩種技術的選擇,因為它們會影響整個架構。Two technology choices should be decided early on, because they affect the entire architecture. 這兩個選擇就是計算服務和資料存放區。These are the choice of compute service and data stores. 計算指的是運算資源的裝載模型,您的應用程式會在運算資源上執行。Compute refers to the hosting model for the computing resources that your applications runs on. 資料存放區包含資料庫,但也包含其他儲存體,這些儲存體會用於訊息佇列、快取、記錄,以及其他應用程式可能會保存到儲存體的項目。Data stores includes databases but also storage for message queues, caches, logs, and anything else that an application might persist to storage.

深入了解:Learn more:

設計原則Design principles

我們已識別十個高階的設計原則,讓您的應用程式更有擴充空間、可容易復原且更方便管理。We have identified ten high-level design principles that will make your application more scalable, resilient, and manageable. 這些設計原則可套用至任何架構樣式。These design principles apply to any architecture styles. 在整個設計程序中,請記住這些十個高階的設計原則。Throughout the design process, keep these ten high-level design principles in mind. 接著請考慮該架構特定方面的一組最佳做法,例如自動調整大小、快取、資料分割、API 設計等。Then consider the set of best practices for specific aspects of the architecture, such as auto-scaling, caching, data partitioning, API design, and others.

深入了解:Learn more:

品質要素Quality pillars

成功的雲端應用程式將著重於軟體品質的五大支柱:延展性、可用性、復原、管理和安全性。A successful cloud application will focus on five pillars of software quality: Scalability, availability, resiliency, management, and security. 使用我們的設計檢閱清單,以根據這些品質要素來檢閱您的架構。Use our design review checklists to review your architecture according to these quality pillars.