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