Архитектура на “микросервисах” в монолите: примеры из практики Архитектура и масштабируемость

Доклад принят в программу конференции
Иван Матвеев
Skyeng

Начинал как PHP-разработчик, последние несколько лет руководит разработкой, но код писать приходится. Давно на удаленке, работал на разные зарубежные и российские проекты. Живет в Екатеринбурге.

Тезисы

Мы почти превратили наш "молодой динамично развивающийся проект" в big ball of mud.
Нам нужно было организовать процесс общения между оператором и клиентом. Сначала у нас был виджет, который просто транслировал e-mail-переписку, потом мы добавили whatsapp, смс, пуши, звонки, другие мессенджеры... И столкнулись с классикой: тяжело добавлять новые фичи, тяжело тестировать, много багов.
Я расскажу, как мы героически из этого выкарабкивались — что планировали, что менялось и что получили почти год спустя на проде:
* Почему не стали ничего выносить, инкапсулируя сервисы и сохраняя их границы в монорепе.
* Распил монолита по принципам пакетного дизайна. Примеры из реального проекта на PHP. От каких болячек избавились и какие приобрели.
* Как добиться, чтобы все сервисы жили в одной базе и не ругались. С какими проблемами столкнулись.
* Что мы будем делать дальше? Немного о планах по выделению пакетов в микросервисы.

Другие доклады секции Архитектура и масштабируемость