Архитектура приложений — это структурный принцип, по которому создано приложение. Каждому архитектурному виду свойственны свои характеристики, свойства и отношения между компонентами. Компонент — мелкая или крупная логическая и независимая часть архитектурной системы приложения. Например:
база данных;
процесс;
подсистема;
вычислительный узел;
библиотека;
и др.
Каждое приложение вокруг нас построено по какой-либо архитектуре. Даже в тех случаях, где принципиально не придерживались никакому из ее видов, все равно приложение будет работать в рамках одного из видов архитектуры. По-другому не получается.
Многие объединяют термины «архитектура» и «структура» в один. Но это не одно и то же, хотя структура приложения напрямую зависит от архитектуры. Когда мы произносим «архитектура приложений», то речь идет в широком смысле о компонентах будущей системы приложения. Однако каждый архитектурный компонент может быть организован и представлен разными решениями. Эти решения и образуют структуру приложения. То есть структура более точно описывает инструменты и модули будущего приложения.
Архитектура приложений
Архитектуру приложений важно продумывать перед стартом разработки. Ведь четко продуманная архитектура — это залог работоспособности и удобства будущей программы. Реакция программы на действия пользователей, возможность справляться с высокими нагрузками, зависания — все это и другие потенциальные проблемы зависят от того, насколько качественно изначально продумали архитектуру приложения.
Каждое архитектурное решение должно удовлетворять несколько заинтересованных лиц:
пользователя — в его интересах, чтобы приложение было безопасным, понятным и производительным;
администратора приложения — в его интересах, чтобы у приложения была понятная система управления;
СЕО-специалиста и маркетолога — в их интересах, чтобы приложение обладало уникальными функциями и было конкурентоспособным;
разработчика — в его интересах, чтобы ко внутреннему устройству приложения предъявляли понятные и не противоречивые требования;
заказчика или руководителя — в их интересах, чтобы результат работы над приложением был предсказуемым, рациональным и точным.
Архитектура приложений: выбор и виды
Не бывает такого, что просто выбирают определенный вид архитектуры, и точка. Совсем наоборот. К приложению предъявляют требования, смотрят на наличие инструментов, структурных компонентов и разработчиков, учитывают различные факторы влияния на приложение, а только потом выбирают подходящую архитектуру. Получается, что выбор архитектуры основывается на:
заинтересованных лицах: заказчиках, пользователях, разработчиках и др.;
миссии приложения — отсюда вытекают требования к приложению;
внутренних и внешних технических ограничениях: на наличии инструмента, профессионализме разработчиков, операционной системе и архитектуре устройств, для которых создается приложение и др.
Из-за того, что IT-мир постоянно расширяется и количество приложений постоянно растет, количество видов архитектур также постоянно растет, а существующие архитектуры видоизменяются. Разработать собственную архитектуру или подогнать уже созданную под свои нужды становится обычным делом. Например, есть такие виды:
архитектура «клиент-сервер»;
монолитная архитектура;
микропроцессорная архитектура;
событийная;
структурированная;
многослойная;
трехуровневая;
сервис-ориентированная;
поиск-ориентированная;
неявная;
и др.
Архитектура приложений: распространенные виды
Есть несколько архитектурных стратегий по разработке приложения, которые пользуются популярностью. На них мы остановимся немного подробнее.
Многослойная архитектура
Эта стратегия подразумевает разделение ответственности в приложении на несколько слоев, которые накладываются друг на друга. Каждый отдельный слой имеет собственное значение.
Многослойная архитектура разделяет программу на следующие слои:
слой представления — отвечает за интерфейс пользователя;
слой бизнес-логики — отвечает за функционал и логику приложения и не отвечает за интерфейс;
слой передачи данных — отвечает за работу с базами данных и обработку информации.
Каждый элемент в приложении «проходит» через все слои. Такая архитектура считается:
простой в реализации;
абстрактной;
защищенной за счет изолированности каждого слоя;
легко управляемой и масштабируемой.
Такая архитектура свойственна небольшим приложениям, так как ее реализация возможна при монолитной структуре. Поэтому обслуживание и масштабирование больших приложений на основе этой архитектуры затруднено.
Многоуровневая архитектура приложений
Эта архитектура может быть в несколько уровней, поэтому разделяется на несколько видов:
одноуровневая,
двухуровневая,
трехуровневая.
Одноуровневый вид такой архитектуры используют самые простые однопользовательские приложения, которые работают либо на стороне сервера, либо на стороне клиента.
Двухуровневый вид имеет еще одно название — архитектура «клиент-сервер». Приложения на такой архитектуре задействуют два места для обработки приложения:
клиент — отвечает за обработку интерфейса, логики приложения и передачу информации;
сервер — отвечает за работу хранилищ и баз данных, а также за обработку информации.
Трехуровневый вид архитектуры подразумевает наличие трех точек для работы приложения:
клиент,
сервер для обработки,
базы данных для хранения.
Главное отличие от двухуровневой системы — обработка и хранение информации делаются в разных местах. Такие системы свойственны высоконагруженным приложениям. Они трудны и более дорогие в реализации.
Микросервисная архитектура приложений
Микросервисная архитектура приложений — это модель, при которой разрабатываемое приложение разделяется на несколько отдельных сервисов. Такие сервисы разрабатываются отдельно друг от друга, а объединяются в одном приложении при помощи API. Каждый отдельный сервис — это отдельная изолированная функция приложения.
Такая архитектура часто встречается в разработке, так как она обладает рядом неоспоримых преимуществ:
изолированность каждого отдельного компонента;
сбой одного компонента не затрагивает работоспособность всего приложения;
удобно масштабировать и внедрять обновления;
и др.
Альтернатива данной модели — монолитная архитектура, у которой вся функциональность приложения реализована в одном месте. Эти две системы имеют собственные достоинства и недостатки. Монолитные приложения разрабатываются быстрее, считаются более безопасными, но их трудно обновлять и масштабировать. Поэтому монолит рекомендуется применять в небольших приложениях, которые нетрудно будет обслуживать. Микросервисная архитектура приложений рекомендуется для масштабных проектов с богатым функционалом, над которым постоянно нужно будет работать и масштабировать.
Заключение
Архитектура приложений — это далеко не однозначный вопрос. При разработке приложения существует очень много факторов, влияющих на выбор архитектуры. Поэтому многие доступные виды «родились» совсем недавно благодаря трудам неравнодушных разработчиков. Если ваша цель — разработать собственную архитектуру приложений, тогда вам обязательно нужно прочитать книгу «Руководство Microsoft по проектированию архитектуры приложений».
Другое