Показаны сообщения с ярлыком Integration Patterns. Показать все сообщения

Command and Query Responsibility Segregation (CQRS) на практике

Эту статью можно считать продолжением темы про переход от монолитной архитектуры к распределенной. Одной из целей применения CQRS тоже является переход к горизонтальному масштабированию. Однако, кроме этого CQRS дает рад преимуществ на уровне дизайна кода и простоты поддержки. Всё, что написано в статье, применяется в проектах моей компании уже несколько лет.

Возможно, вы уже используете CQRS, сами того не зная. Изучение данной темы поможет структурировать приемы, характерные для CQRS, использовать общепринятые названия в коде и разговаривать с коллегами на одном языке, оперируя понятиями команд и запросов.

Переход от монолитной архитектуры к распределенной

Последние 2 года большая часть проектов моей компании - это унаследованные системы. Я уже писал, что это за системы, какие риски возникают при работе с такими системами и каким образом проводится анализ. Интересно, что все эти системы имели монолитную архитектуру, которая была основной проблемой на пути к горизонтальному масштабированию. Для меня было вопросом как и почему получается монолитная архитектура? Как избежать такого подхода?

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

Integration Patterns: Shared DB, state machine и очередь сообщений

На примере краулинга данных я предлагаю рассмотреть реализацию машины состояний с использованием двух подходов: общая БД и очередь сообщений. Оба подхода одинаково часто встречаются при реализации этой задачи, у обоих подходов есть плюсы и минусы. Думаю, будет полезно изучить их, чтобы при возникновении такой задачи делать осозданный выбор.

Integration Patterns: Репликация и очередь сообщений

Хочу поделиться примером интеграции нескольких систем в одном из приложений, которое мы недавно разрабатывали. Я покажу проблемы и подходы, которые мы применяли. Думаю отдельные приёмы могут быть полезны в ваших проектах.

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

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

Integration Patterns: актуальные инструменты и решения

Корпоративные системы состоят из множества подсистем, которые написаны на разных языках и платформах. Используются общие БД, репликации, обмен сообщениями и другие средства интеграции.