Найти тему

Многослойная (многоуровневая) архитектура

Оглавление

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

Карта компетенций системного аналитика
Карта компетенций системного аналитика

Слои

Слои в многослойной архитектуре
Слои в многослойной архитектуре

При таком подходе (сюрприз! Сюрприз!) приложение делится на несколько слоев. Слои могут быть разными. Мы рассмотрим приложение, которое содержит слой баз данных, слой получения и сохранения данных, слой бизнес логики и слой представления данных. Каждый из слоёв общается только с теми слоями, с которыми он граничит. Например, слой представления данных может обращается только к слою бизнес логики, но к слою получения и сохранения данных обращаться не должен. Такой подход относительно удобен в разработке, ведь каждым слоем может заниматься своя команда и изменения в отдельные слои можно вносить так, чтобы никак не затрагивать другие слои. Но есть нюанс и даже не один. Во-первых, при таком подходе запрос от верхнего слоя как правило будет проходить все слои по порядку и, если таких слоёв много, это приведет к большой потере времени на запросах. Во-вторых, на практике достаточно сложно правильно разделить систему на слои так, чтобы избежать моментов, когда слой вынужден обращаться к тем слоям, с которыми он не граничит. А теперь про каждый слой по порядку.

Слой БД

Слой БД
Слой БД

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

Слой получения и сохранения данных

Слой получения и сохранения данных
Слой получения и сохранения данных

Слой получения и сохранения данных как ни странно, отвечает за сохранение и получение данных. В этом слое может быть реализована валидация уровня баз данных, чтобы избежать попыток сохранения переменных типа string в поле типа int, например. Именно этот слой знает, как устроены базы данных и как сохранить в них данные или получить из них данные. Вышестоящие слои об этом не знают.

Слой бизнес логики

Слой бизнес логики
Слой бизнес логики

Следующий слой - это слой бизнес логики. Он отвечает, как за логическую валидацию данных (например, проверяет контрольную сумму в снилс или отсутствие латинских букв в ФИО, если это нужно), так и за часть преобразования данных (например, получение возраста из даты рождения).

Слой представления данных

Слой представления данных
Слой представления данных

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

Заключение

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

  • При многослойной архитектуре система состоит из слоев, которые могут обращаться только к нижестоящим слоям и отвечать на запросы только вышестоящим. Например,
  • Слой баз данных отвечает за физическое хранение данных.
  • Слой получения и сохранения данных работает с базами данных.
  • Слой бизнес логики отвечает за логические валидации и преобразования.
  • А слой представления данных отвечает за предоставление данных системам-потребителям в нужном формате.