Проектируем масштабирование приложений на схемах Как правильно масштабироваться

Доклад принят в программу конференции
Максим Цепков
mtsepkov.org

IT-архитектор и бизнес-аналитик, навигатор и эксперт по миру Agile, бирюзовых организаций и Спиральной динамике. Подробнее — на сайте http://mtsepkov.org

Тезисы

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

Классические диаграммы, UML и другие, придуманные в эпоху монолитов, не слишком хорошо позволяют обсуждать архитектуру работы множества сервисов с асинхронным взаимодействием. Я расскажу о модели, которая позволяет рисовать схемы современных приложений и обсуждать их масштабирование и устойчивость работы при отказах. И проиллюстрирую ее использование конкретными примерами. Визуализация сильно помогает в проектировании и коммуникации, а также в объяснении работы приложения.