Руководство по архитектуре приложений AzureAzure 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 how 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. При возникновении сбоев приложения должны быть устойчивыми.Applications must be resilient when failures occur. Развертывания должны выполняться автоматически и предсказуемо.Deployments must be automated and predictable. Мониторинг и данные телеметрии важны для получения аналитических сведений о системе.Monitoring and telemetry are critical for gaining insight into the system. Это руководство поможет вам реализовать необходимые изменения.This guide is designed to help you navigate these changes.

Стандартные локальныеTraditional on-premisesСовременные облачныеModern cloud
МонолитныеMonolithic
Предназначенные для прогнозируемой масштабируемостиDesigned for predictable scalability
Реляционная база данныхRelational database
Синхронизированная обработкаSynchronized processing
Разработка для предотвращения сбоев (MTBF)Design to avoid failures (MTBF)
Нерегулярные крупные обновленияOccasional large updates
Ручной режим управленияManual management
Серверы типа "снежинка"Snowflake servers
РазделенныеDecomposed
Предназначенные для эластичного масштабированияDesigned for elastic scale
Polyglot Persistence (сочетание технологий хранения данных)Polyglot persistence (mix of storage technologies)
Асинхронная обработкаAsynchronous processing
Разработка для восстановления после сбоя (MTTR)Design for failure (MTTR)
Частые небольшие обновленияFrequent small updates
Автоматическое самоуправлениеAutomated self-management
Неизменяемая инфраструктураImmutable infrastructure

Структура руководства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-уровневого приложения или решения для больших данных.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: Architecture styles

Выбор технологийTechnology choices

Зная тип создаваемой архитектуры, вы можете выбирать основные технологические компоненты.Knowing the type of architecture you are building, now you can start to choose the main technology pieces for the architecture. Важно выбрать следующие технологии:The following technology choices are critical:

  • Служба вычислений — это модель размещения для вычислительных ресурсов, на которых выполняется приложение.Compute refers to the hosting model for the computing resources that your applications run on. См. сведения о выборе службы вычислений.For more information, see Choose a compute service.

  • К хранилищам данных относятся базы данных, а также очереди сообщений, кэши, журналы и любые другие хранилища, которые может использовать приложение.Data stores include databases but also storage for message queues, caches, logs, and anything else that an application might persist to storage. См. сведения о выборе хранилища данных.For more information, see Choose a data store.

  • Технологии обмена сообщениями обеспечивают асинхронную передачу сообщений между компонентами системы.Messaging technologies enable asynchronous messages between components of the system. См. сведения о выборе службы обмена сообщениями.For more information, see Choose a messaging service.

Вам, возможно, потребуется использовать дополнительные технологии. Но эти три элемента (вычисления, данные и обмен сообщениями) являются для большинства облачных приложений ключевыми и определяют множество аспектов разработки.You will probably have to make additional technology choices along the way, but these three elements (compute, data, and messaging) are central to most cloud applications and will determine many aspects of your design.

Разработка архитектурыDesign the architecture

Выбрав стиль архитектуры и основные технологические компоненты, вы можете приступать к работе со структурой приложения.Once you have chosen the architecture style and the major technology components, you are ready to tackle the specific design of your application. Ниже указаны универсальные ресурсы, которые помогут при разработке архитектуры для самых разных приложений.Every application is different, but the following resources can help you along the way:

Эталонные архитектурыReference architectures

В зависимости от сценария вы можете использовать в качестве отправной точки одну из наших эталонных архитектур.Depending on your scenario, one of our reference architectures may be a good starting point. Каждая эталонная архитектура включает предлагаемые методики, а также рекомендации по обеспечению масштабируемости, доступности, безопасности и надежности, а также по работе с другими аспектами разработки.Each reference architecture includes recommended practices, along with considerations for scalability, availability, security, resilience, and other aspects of the design. В большинство из них также включены развертываемое решение или эталонная реализация.Most also include a deployable solution or reference implementation.

Принципы проектированияDesign principles

Мы определили десять общих принципов проектирования, чтобы вы могли сделать приложение более масштабируемым, отказоустойчивым и управляемым.We have identified 10 high-level design principles that will make your application more scalable, resilient, and manageable. Эти принципы проектирования применяются ко всем стилям архитектуры.These design principles apply to any architecture style. Придерживайтесь этих десяти базовых принципов на всех этапах проектирования.Throughout the design process, keep these 10 high-level design principles in mind. См. сведения о принципах проектирования.For more information, see Design principles.

Шаблоны проектированияDesign patterns

Повторяемые конструктивные шаблоны разработки программного обеспечения позволяют выполнять необходимые действия при возникновении определенных закономерностей.Software design patterns are repeatable patterns that are proven to solve specific patterns. Наш каталог конструктивных шаблонов облачных решений предназначен для решения конкретных задач в распределенных системах.Our catalog of Cloud design patterns addresses specific challenges in distributed systems. С их помощью вы обеспечите доступность, устойчивость, производительность и безопасность.They address aspects such as availability, resiliency, performance, and security. Каталог конструктивных шаблонов можно найти здесь.You can find our catalog of design patterns here.

РекомендацииBest practices

Наши статьи с рекомендациями охватывают разные вопросы, связанные с проектированием, включая проектирование API, автоматическое масштабирование, секционирование данных, кэширование и т. д.Our best practices articles cover various design considerations including API design, autoscaling, data partitioning, caching, and so forth. Ознакомьтесь с этими рекомендациями и примените те, которые подходят для вашего приложения.Review these and apply the best practices that are appropriate for your application.

Основные аспекты качестваQuality pillars

В основе успешного облачного приложения лежат пять ключевых компонентов качества программного обеспечения: стоимость, DevOps, устойчивость, масштабируемость и безопасность.A successful cloud application will focus on five pillars of software quality: Cost, DevOps, resiliency, scalability, and security.

АспектPillar DescriptionDescription
СтоимостьCost Управление затратами для повышения ценности продукта.Managing costs to maximize the value delivered.
DevOpsDevOps Рабочие процессы, обеспечивающие работу системы в производственной среде.Operations processes that keep a system running in production.
УстойчивостьResiliency Способность системы к восстановлению и возобновлению работы после сбоев.The ability of a system to recover from failures and continue to function.
МасштабируемостьScalability Способность системы адаптироваться к изменениям нагрузки.The ability of a system to adapt to changes in load.
безопасностьSecurity Защита приложений и данных от угроз.Protecting applications and data from threats.

С помощью Azure Architecture Framework вы сможете оценить свою архитектуру по пяти базовым аспектам.Use the Azure Architecture Framework to assess your architecture across these five pillars.

Дальнейшие действияNext steps