Модули вместо микросервисов
Термин «модуль» (module) взят из статьи Modules vs. microservices. Так же для описания чего-то среднего между микросервисами и монолитами иногда используют термины «микролит» (microlith) или «моносервис» (monoservice). Но, не смотря на то, что термин «модуль» и так уже нагружен общеизвестным смыслом, на мой взгляд он подходит лучше других вариантов. Update: В комментарии lega использовал термин «встроенный микросервис» — он лучше описывает суть подхода, чем «модуль».
Монолит и микросервисы это очень разные подходы, поэтому в любой попытке взять лучшее от обоих критически важен баланс — что взять, а что нет. Иначе получится монстр вроде OSGi.
Я пишу микросервисы с 2009 года, но применять модули вместо микросервисов в реальных проектах пока не пробовал — всё описанное далее это моё предположение о том, каким должен быть вышеупомянутый баланс, и оно нуждается как в теоретической критике так и в проверке практикой.
Что такое модуль
Модуль — это что-то вроде микросервиса, только реализованного внутри единого приложения, состоящего из группы таких модулей и очень небольшой части, которая занимается инициализацией и запуском всех этих модулей.
Хотя формально такое приложение можно назвать монолитом, у этого подхода намного больше общего с микросервисами, поэтому и сравнивать его имеет смысл именно с микросервисным подходом. Как и микросервис, каждый модуль:
В отличие от микросервисов, модуль:
В отличие от обычных библиотек, модуль:
В большинстве случаев модули не нуждаются в каком-либо реестре сервисов — вместо регистрации себя и поиска других модулей они получают необходимые им интерфейсы других модулей при запуске, когда запускающееся приложение вызывает функцию инициализации каждого модуля (в порядке, определяемом зависимостями между модулями). В качестве побочного эффекта это позволит сразу обнаружить циклические зависимости между модулями, если они появятся (и, по возможности, изменить архитектуру так, чтобы от них избавиться).
Где нужны модули
Есть константная добавленная сложность (accidental complexity), одинаковая в каждом микросервисе (регистрация/обнаружение сервисов, подключение и переподключение к ним, авторизация между сервисами, (де)маршалинг и шифрование трафика, использование прерывателей зацикленных запросов, реализация трассировки запросов, etc.). Есть аналогичная константная добавленная операционная сложность (необходимость автоматизации тестирования и выката, реализация детального мониторинга, агрегация логов, использование служебных сервисов для регистрации и поиска сервисов, для хранения конфигурации сервисов, для аудита, etc.). С этим можно смириться, потому что реализовать всё это можно один раз, по мере роста количества микросервисов эта сложность не растёт, а преимущества микросервисов с лихвой компенсируют эти затраты.
Но есть сложность, зависящая от бизнес-логики конкретного приложения и увеличивающаяся по мере развития приложения, от которой хотелось бы избавиться хотя бы в тех приложениях, которым не требуется возможность масштабирования и высокая доступность (или хотя бы той части кода таких приложений, в которой нет явной необходимости взаимодействовать с внешними сервисами):
Правильный модульный подход позволяет сохранить многие преимущества микросервисов (при наличии необходимой поддержки на уровне языка и/или инструментов разработки), но помимо потери ненужных в данном приложении возможностей масштабирования и высокой доступности есть и другие:
Так же у модульного подхода появляются новые достоинства:
Резюме
В общем и целом подход выглядит достаточно соблазнительным — мы получаем возможность писать монолитное приложение в виде кучки по-настоящему хорошо изолированных частей (причём контролировать это будет по большей части язык и/или инструменты, а не внутренняя дисциплина), разрабатываемых в микросервисном стиле (в т.ч. разными командами в разных репо), которые «лёгким движением руки» могут превратиться в настоящие микросервисы если в этом возникнет реальная необходимость… А пока её нет — мы можем использовать обмен сообщениями между модулями внутри приложения как простую и очень быструю замену настоящего RPC, избегая сложностей асинхронности, eventual consistency и обработки сетевых ошибок.
Необходимая поддержка этого подхода в данный момент есть далеко не во всех языках, но в некоторых есть: автор статьи «Modules vs. microservices» писал о поддержке модульности в Java 9, в Go уже пару лет есть поддержка internal-пакетов, в Erlang судя по статье на эту же тему Dawn of the Microlith — Monoservices with Elixir всё хорошо, …. Я не уверен, насколько на скриптовых языках возможно обеспечить реальную изоляцию модулей, но попытки есть: micromono на NodeJS, в комментарии lega ссылка на подход для Python, …
Если у вас есть соображения по теме (а ещё лучше — опыт реального проекта на похожих принципах) или дополнительные ссылки на статьи/проекты по теме — пишите в комментариях, я постараюсь дополнять ими статью.
Что такое модуль сайта
Современные сайты наполняются содержанием с помощью специального программного обеспечения: CMS.
Для кого этот курс?
Курс Контент-менеджер адресован тем, кто работает с содержанием сайта: наполнение, изменение текста, загрузка и размещение картинок и так далее.
У нас часто спрашивают, сколько нужно заплатить
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта

Практика и тесты
При изучении курса рекомендуется повторять описываемые действия на демонстрационной версии сайта, установленной локально или в Виртуальной лаборатории.
После изучения курса пройдите тесты на сертификацию. При успешной сдаче последовательности тестов со страницы Моё обучение скачайте сертификат об успешном прохождении курса в формате PDF.
Для преподавания оффлайн
Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 2 дня (16 академических часов).
Если нет интернета

Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBoox
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
Как проходить учебный курс?
Что такое CMS и как ее выбрать
Блочный редактор писем, готовые шаблоны email, формы подписки и автоматизация. Запускайте email-рассылки, чтобы быть на связи со своими клиентами.
Где взять базу? Как сделать красивое письмо? Какие показатели смотреть? Расскажем об этом в бесплатном курсе из 16 писем. Татуировка в каждом письме!
Рассказываем про инструменты для email-рассылок. Обсуждаем лучшие примеры и механики. Говорим о деньгах. Публикуем вакансии.
CMS (Content Management System) — это система управления, движок, платформа или конструктор, который позволяет управлять содержимым сайта. CMS помогает сразу трем специалистам:
Контент-менеджеру. Он может самостоятельно добавлять или изменять содержимое страниц и каталога. Например, публиковать статьи в блоге.
SEO-специалисту. Чтобы настраивать технические параметры под поисковые системы Яндекс и Google. Например, прописывать мета-теги.
Разработчику. Чтобы использовать готовые скрипты для добавления функций сайту и экономить время на программировании. Без помощи CMS пришлось бы писать код с нуля.
В этой статье разберём, что такое CMS, какие бывают системы управления контентом и какую из них выбрать.
Как выбрать CMS для сайта
CMS определяет функционал сайта, а также затраты на создание и обновление платформы.
Для выбора системы управления существуют критерии:
| Самостоятельность | Все движки сайта условно делятся на 4 вида: самописные, конструкторы, коробочные и студийные. |
| Стоимость | CMS-ки делятся на платные и бесплатные. Некоторые свободные системы включают оплату дополнительных функций. |
| Популярность | Ежегодные рейтинги CMS публикуют статистику сайтов на разных движках. Чем популярнее платформа, тем проще найти специалиста, который настроит и будет поддерживать актуальность сайта. |
| Специфичность | Среди CMS есть универсальные, а есть те, что заточены под блог, интернет-магазин или лендинг. Обращайте на это внимание при выборе движка. |
В этой статье мы рассмотрим коробочные CMS и конструкторы, у которых минимальный порог входа. Сайт на них несложно настроить, а в интернете всегда можно будет найти готовые темы оформления и виджеты.
Как узнать CMS любого сайта
Для определения движка сайта воспользуйтесь бесплатными инструментами: iTrack, be1 и majento. Вставляйте ссылку на сайт в окно поиска и, вуаля, сервис выдаёт CMS.
Если вы не знаете, какую CMS выбрать, то мы советуем отталкиваться от того, что это за сайт: блог, интернет-магазин или лендинг.
Движки для блога
WordPress
Самая популярная CMS, подходит для создания блогов, корпоративных сайтов, портфолио. С помощью дополнительных инструментов движок используется для разработки интернет-магазинов.
Стоимость: бесплатно. Есть дополнительные платные модули.
Рейтинг CMS по версии iTrack: №1.
Число запросов в Wordstat: 304 000 в месяц.
Язык интерфейса: 18 языков, включая русский, английский, испанский и др.
Интеграции. Более 50 тыс. Самые популярные: Google Analytics, UniSender, все социальные сети, Мой Склад, СДЭК, ИнвойсБокс, Roistat, Битрикс24, Carrot quest.
Примеры блогов на WordPress:
Блог UniSender тоже работает на WordPress.
Универсальный движок для личных блогов и ведения корпоративных журналов. Дизайн системы подходит и для научных работ, и для историй из путешествий. Редактировать и публиковать заметки можно с экрана мобильного телефона.
Стоимость: бесплатно для личного пользования, 3 000 р на 1 год — для коммерческих блогов.
Рейтинг CMS: не участвует. Движок выбирают для личных блогов и небольших проектов.
Число запросов в Wordstat: 697 в месяц.
Язык интерфейса: русский.
Интеграции. Социальные сети (комментирование и шер записей), Google Analytics, Яндекс.Метрика.
Примеры блогов на Эгее:
Коробочная система, подходит для нестандартных проектов и задач. Готовые шаблоны или плагины как в других CMS у MODx отсутствуют, но движок воспринимает любые HTML-скрипты.
Стоимость: бесплатно.
Рейтинг CMS по версии iTrack: №7.
Число запросов в Wordstat: 43 000 в месяц.
Язык интерфейса: английский по умолчанию с возможностью перевести на русский.
Интеграции. Carrot quest, Битрикс24, amoCRM, Планфикс, 1С, Ю-Касса, Robokassa.
Примеры блогов на MODx:
Joomla
Широкий функционал Joomla реализует простой сайт-визитку, блог или интернет-магазин. Систему выбирают новички за возможность запустить сайт без навыков программирования.
Стоимость: бесплатно, есть возможность докупить необходимые модули и скрипты.
Рейтинг CMS по версии iTrack: №3.
Число запросов в Wordstat: 73 000 в месяц.
Язык интерфейса: по умолчанию английский с возможностью установить другие языки.
Интеграции. RetailCRM, Битрикс24, amoCRM, Мой склад, 1С, Robokassa, Carrot quest.
Примеры блогов на Joomla:
Движки для интернет-магазина
1С-Битрикс
CMS от разработчиков самой популярной CRM в России. Возможности движка меняются в зависимости от тарифного плана — система подойдет и малому бизнесу и крупному интернет-магазину. 1С-Битрикс отличается высокой безопасностью и сложным интерфейсом.
Стоимость: платная лицензия от 30 тыс. до 400 тыс. рублей в месяц.
Рейтинг CMS по версии iTrack: №2.
Число запросов в Wordstat: 42 000 в месяц.
Язык интерфейса: более 10 языков, включая английский, русский, украинский.
Интеграции. Roistat, Carrot quest, Битрикс24, Мегаплан, Планфикс, Мой склад, amoCRM, Zadarma, 1C, Робокасса, Ю-Касса, Sipuni, Tilda.
Примеры интернет-магазинов на 1С-Битрикс:
Что такое модуль сайта
Цитатник веб-разработчиков В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.
Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:
Как построен курс
Общепринятая градация квалификации разработчиков в рамках курса обозначает что:
Начальные требования к подготовке
Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):
У нас часто спрашивают, сколько нужно заплатить
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта

Тесты
После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.
Комментарии к статьям
Что дальше?
Одновременно с изучением курса Разработчик Bitrix Framework вам придётся обращаться к информации о других технологиях Bitrix Framework. Эта информация размещена в следующих курсах:
Для преподавания оффлайн
Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 5 дней (40 академических часов).
Если нет интернета

Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBoox
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса.
Что такое модуль сайта
Современные сайты наполняются содержанием с помощью специального программного обеспечения: CMS.
Для кого этот курс?
Курс Контент-менеджер адресован тем, кто работает с содержанием сайта: наполнение, изменение текста, загрузка и размещение картинок и так далее.
У нас часто спрашивают, сколько нужно заплатить
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта

Практика и тесты
При изучении курса рекомендуется повторять описываемые действия на демонстрационной версии сайта, установленной локально или в Виртуальной лаборатории.
После изучения курса пройдите тесты на сертификацию. При успешной сдаче последовательности тестов со страницы Моё обучение скачайте сертификат об успешном прохождении курса в формате PDF.
Для преподавания оффлайн
Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 2 дня (16 академических часов).
Если нет интернета

Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBoox
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome





