Раздел описывает программные системы, с которыми непосредственно взаимодействуют пользователи, внешние приложения и бизнес-процессы.
Материалы раздела рассматривают устройство клиентских и серверных приложений, способы взаимодействия между компонентами, обработку пользовательских действий, управление доступом, интеграции и полный путь запроса от интерфейса до данных и обратно.
Основные направления
- Устройство прикладных систем — клиент-серверное взаимодействие, компоненты приложения, бизнес-логика, состояние и путь пользовательского запроса через систему.
- Пользовательские и веб-интерфейсы — браузер, HTML, CSS, клиентский JavaScript, компоненты, маршрутизация, формы, доступность и адаптивность.
- Серверные приложения — обработка запросов, выполнение сценариев, работа с данными, управление ресурсами и взаимодействие с внешними зависимостями.
- API и программные контракты — REST, GraphQL, RPC, gRPC, WebSocket, схемы данных, ошибки, пагинация, версионирование и документирование интерфейсов.
- Идентификация и управление доступом — сессии, cookies, токены, OAuth, OpenID Connect, роли, атрибуты и межсервисная аутентификация.
- Фоновые процессы и обмен событиями — планировщики, очереди задач, уведомления, обработка файлов и операции вне основного цикла запроса.
- Интеграции с внешними системами — синхронные и асинхронные вызовы, webhooks, адаптеры, преобразование моделей и обработка частичных отказов.
- Качество и эксплуатационные свойства приложений — валидация, безопасность, тестирование, локализация, конфигурация, кеширование, аудит, наблюдаемость и производительность.
Типы прикладных систем
- Пользовательские приложения — веб-, мобильные и настольные приложения с интерактивным интерфейсом.
- Серверные приложения — сервисы, обрабатывающие запросы, бизнес-операции, интеграции и фоновые задачи.
- Консольные и автоматизационные приложения — программы, запускаемые пользователем, скриптом или планировщиком без графического интерфейса.
- Интеграционные системы — шлюзы, адаптеры и сервисы обмена данными между независимыми платформами.
Основные вопросы раздела
Материалы раздела должны помогать отвечать на следующие вопросы:
- Как пользовательское действие проходит через интерфейс, сервер и хранилище данных?
- Где должна находиться бизнес-логика прикладной системы?
- Как организовать состояние клиентского и серверного приложения?
- Как выбрать стиль API и определить его контракт?
- Как развивать API без нарушения работы существующих клиентов?
- Как организовать аутентификацию, сессии и проверку полномочий?
- Когда операцию следует выполнять синхронно, а когда переносить в фон?
- Как обеспечить надёжность интеграции с внешней системой?
- Как проверять пользовательский ввод и обрабатывать ошибки без потери контекста?
- Какие данные необходимы для аудита и наблюдаемости приложения?
- Как оценивать производительность пользовательского сценария целиком?
- Как тестировать интерфейсы, API и взаимодействие компонентов?
Границы раздела
Раздел посвящён устройству прикладных приложений, пользовательских интерфейсов, API и интеграций.
Общие конструкции и среды выполнения языков рассматриваются в разделе программирования и сред выполнения. Архитектурные границы и предметное моделирование относятся к разделу проектирования программного обеспечения. Устройство сетевых протоколов рассматривается в разделе сетей и протоколов, а внутренние механизмы хранилищ — в разделе данных и хранилищ. Управление идентичностями и защита приложений дополнительно рассматриваются в разделе безопасности.