Архитектура Приложения Без Особых Усилий

Краткий набросок о том, как разработать высокоуровневую архитектуру приложения.

Предположим, вы определились с будущим функционалом.

Тогда вы точно знаете, кто или что будет поставлять данные, кто/что будет их потреблять и какие преобразования данных должна выполнить сама система.

Возьмите лист бумаги и карандаш.

Если вы не очень уверены в своих силах, то для корректировки узора также воспользуйтесь резинкой.

Более продвинутые читатели могут обратиться к профессиональным инструментам для электронного архитектурного проектирования.

Теперь выясните, кто будет иметь доступ к вашей системе для передачи или получения данных и к чему будет иметь доступ ваша программа.

Те системы или пользователи, которые сами получают доступ к программе, схематически рисуют на листе бумаги вверху.

Те, к которым программа будет иметь доступ (включая базу данных), приведены ниже.

Теперь под каждым нарисованным сверху предметом нарисуйте прямоугольник с названием UI или API — это интерфейсы, к которым будет обращаться пользователь или внешняя система управления.

Иногда пользовательский интерфейс также может получить доступ к API. Объедините все прямоугольники пользовательского интерфейса в один контур и назовите его слоем представления.

Объедините все прямоугольники с API и назовите его уровнем сервисов.

Для представленных ниже систем укажите компоненты, которые будут отвечать за доступ к этим системам.

Объедините все эти компоненты в одну схему и назовите ее уровнем доступа к данным.

Нарисуйте большую схему между уровнем сервисов и уровнем доступа к данным и назовите его уровнем бизнес-логики.

В маленьких прямоугольниках внутри этого контура перечислите свои основные бизнес-цели.

Один компонент вашей системы решит одну бизнес-задачу.

Теперь справа нарисуйте несколько длинных прямоугольников снизу вверх и напишите в них: ведение журнала, конфигурация, мониторинг производительности, обработка исключений и все остальное, что является общей инфраструктурой (или сквозной функциональностью) для всех уровней вашей программы.

.

У вас есть логическая архитектура приложения.

Распределите слои по серверам и получите физическую архитектуру.

Теперь осталось только детально проработать каждый квадратик.

Небольшой практический пример спрячу под кат. В качестве примера я возьму полностью виртуальный проект системы контроля успеваемости для средней школы.

Я возьму его по двум причинам.

Прежде всего, мы все пошли в школу.

Во-вторых, у многих из нас теперь дети учатся в одной школе.

Поэтому я надеюсь, что предметная область будет понятна всем.

Итак, наша система будет предназначена для ведения электронных дневников учащихся и электронных классных журналов.

Кроме того, пусть в системе будет некоторый дополнительный набор функций, позволяющий учащимся, родителям и учителям обмениваться сообщениями, а руководству школы — контролировать учебный процесс.

Итак, пользователями нашей системы станут учащиеся, их родители, учителя и руководство школы.

Кроме того, пользователями будут системные администраторы, которым важно получать информацию о событиях в системе и выполнять некоторые сервисные операции.

Мы не будем перечислять варианты использования, мы не о них говорим.

Пользователи будут взаимодействовать с нашей системой либо через веб-интерфейс, либо с помощью мобильного приложения.

Оба пользовательских интерфейса предназначены для школ, которые не могут позволить себе разработку собственного веб-сайта.

Другие смогут получить доступ к нашей системе через веб-сервисы.

Сервисов будет четыре: электронный дневник, электронный журнал, организация учебного процесса и администрирование.

Под слоем сервисов будет находиться слой бизнес-логики, состоящий из десятка компонентов, решающих бизнес-задачи пользователей.

Данные будут храниться в базе данных.

Причем баз будет две: боевая и архивная.

Система будет экспортировать/импортировать данные из файлов.

Кроме того, будут две внешние системы, к которым наша система будет подключаться удаленно: справочно-информационная система и информационная система Департамента образования.

Сквозная функциональность будет включать в себя ведение журнала, мониторинг, управление конфигурацией и механизмы безопасности.

В результате мы получаем вот такую простую диаграмму:

Архитектура приложения без особых усилий

Теперь вы можете выбирать физические узлы.

Пользовательский веб-интерфейс и службы будут развернуты в веб-кластере.

Уровни бизнес-логики и доступа к данным будут реализованы на сервере приложений.

Базы данных будут расположены в отдельном отказоустойчивом кластере.

Позже можно будет изобразить все узлы в виде красивой схемы физической архитектуры.

Надеюсь, пример ясен.

Для того, чтобы глубже погрузиться в тему, предлагаю обратить внимание на «Руководство Microsoft по проектированию архитектуры приложений» .

Руководство написано в справочной форме, поэтому вы можете быстро найти рекомендации по проектированию для каждого уровня системы.

Теги: #архитектура #дизайн #Разработка сайтов #Анализ и проектирование систем

Вместе с данным постом часто просматривают: