Анти-HighLoad: как мы построили SaaS на 5 антипаттернах и выжили

1 декабря, 11:10, «Рио-де-Жанейро»

Низкая сложность
Доклад принят в программу конференции
Поддержка и развитие legacy систем
Критерии выбора технологий для проекта
Надёжность продакшена
Практики программирования
Микросервисы
Расширение кругозора
Поддержка и развитие legacy систем
Критерии выбора технологий для проекта
Надёжность продакшена
Практики программирования
Микросервисы
Расширение кругозора
PHP
Архитектуры / другое
Бэкенд / другое

Мнение Программного комитета о докладе

Как четыре разработчика построили логистическую SaaS-платформу и получили распределённый монолит. Борис разберёт пять антипаттернов: общие контракты, RPC через RabbitMQ, доступ к БД и Redis через сервисы и циклические зависимости. Покажет, как локальные решения усиливают проблемы друг друга.

Целевая аудитория

Доклад будет полезен backend-разработчикам, техническим лидам, архитекторам, DevOps-инженерам, которые разрабатывают или сопровождают SaaS-продукты и распределённые системы. Особенно полезен он будет командам, которые переходят от монолита к микросервисам, сталкиваются с ростом связанности сервисов, усложнением тестирования и развёртывания либо планируют модернизацию легаси-системы.

Тезисы

Мы хотели построить микросервисную SaaS-платформу, но вместо независимо развёртываемых сервисов получили распределённый монолит. Сервисы зависели от общей библиотеки контрактов, общались посредством RPC через RabbitMQ, обращались к базе данных и Redis через специальные микросервисы и образовывали циклические зависимости. В результате систему можно было тестировать и развёртывать только целиком, а один деплой занимал больше полутора часов. На реальных примерах я разберу архитектурные и инфраструктурные решения, которые постепенно сделали систему хрупкой: глобальную библиотеку с интерфейсами и DTO всех сервисов, преобладание интеграционных тестов и централизованные фикстуры, Supervisor внутри Docker-контейнеров, логирование через RabbitMQ. Доклад поможет распознать ранние признаки распределённого монолита и отличить локально удобное техническое решение от архитектурного антипаттерна. Я покажу не только последствия ошибок, но и причинно-следственные связи между ними, расскажу, какие компоненты системы пришлось переделывать и как расставлять приоритеты при распутывании подобных зависимостей.

Спикеры

Борис Лактюшин
Борис Лактюшин

независимый эксперт

Тимлид, разработчик. Более 14 лет профессионально занимается разработкой бэкенд-систем различной сложности с использованием PHP, Python и Go, имеет опыт построения распределенных и микросервисных систем. Участвовал в создании и развитии прикладных продуктов в различных предметных областях. Выступил научным редактором русского перевода книги "Object Oriented Design. Подготовка к сложному интервью".

Другие доклады секции