К основному контенту

Модульно или не модульно? Вот в чем вопрос!

Есть ли смысл разделять части веб приложения на различные мавен-модули, если разрабатываешь целостное решение для конкретной проблемы? Вообще говоря практика полезная с определенной точки зрения. С другой точки зрения смысла нет. Рассмотрим обе.



Итак, точка зрения первая - модульная. С точки зрения модульности приложение должно состоять из самодостаточных модулей, так сказать собираться из кубиков. Такой подход позволяет добиться повторного использования конкретной части приложения. Например, сущностей модели или логики предметной области. Также этот подход весьма удобен в плане масштабируемости приложения и его изменяемости. Предположим, что есть у вас система резервирования номеров в отеле. Построена она по модульному принципу с помощью Spring MVC. Тут возникла необходимость реализовать RESTfull API для бронирования номеров. Ну допустим, мобильное приложение разрабатывается. В том случае, если система бронирования монолитна - придется дорабатывать весь проект, так как необходимо будет убедится в том, что внесенные изменения никоим образом не затрагивают основной функционал и уж тем более, не нарушают его. Вторая проблема - переразворачивать на сервере придется опять же весь проект, что может привести к известным проблемам с работой все того же основного функционала, начиная с перебоев в режиме работы (что не критично - ночные сборки никто не отменял), заканчивая явными багами в том случае, если внесенные правки все же задели основной функционал.
С другой стороны если структура приложения у вас модульная - то  REST api - это просто отдельное приложение, которое крутится себе рядом с  основным приложением, использует его внутренний слой API и никак не влияя на основную логику. Проект меньше, разрабатывать проще, тестировать быстрее.
Еще одна прелесть - если вам вдруг понадобятся  сущности из модели этого приложения, то достаточно будет зависеть только от модуля модели данных, если сервисы, то только сервисы - не надо тянуть в зависимости все толстенное приложение.

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

Комментарии

Популярные сообщения из этого блога

Apache Tiles: Основы

Здравствуйте! В работе я часто использую фреймворк Apache Tiles. Де-факто он является основной технологией для создания UI в  проектах над которыми я работаю. В связи с этим хотелось бы поделиться наработанным опытом работы с данной технологией. В цикле будет несколько статей, в которых я разберу что такое этот Tiles, как его настраивать, как правильно использовать и как его задружить со Spring MVC.  Первые несколько статей - по сути вольный пересказ  официальной документации с моими примерами, которые можно будет запустить у себя на компьютере, так что если кому нравится работать с первоисточником - милости прошу. Содержание Часть 1. Основы.

Какую версию Jetty я использую?

Jetty 9 - самая свежая версия сервера с большим количеством улучшений по сравнению с предыдущими версиями. Данная документация фокусируется как раз на версии Jetty 9. Мы очень рекомендуем использовать версию 9, так как именно она будет поддерживаться и улучшаться в течении нескольких лет.