Конференция завершена. Ждем вас на Highload++ в следующий раз!
Москва, СКОЛКОВО
8 и 9 ноября 2018

Спрут против кашалота: великий соблазн SOAАрхитектуры, масштабируемость

Доклад отклонён
Alex von Rosen
Первый ЦУПИС

Post-Agile

Тезисы

Сервис-ориентированная архитектура (SOA) — это не только модно, но и действительно выгодно как с технической, так и продуктовой точки зрения. Преимущества обусловлены инкапсуляцией и декомпозицией, предоставляемыми SOA, а также ее фрактальной природой.

Тем не менее, редко можно встретить удачную и простую в сопровождении реализацию SOA. Почему это происходит? Во-первых, традиционно забывают о первичности модели представления и тщательном проектировании потоков данных. Во-вторых, архитектурный задел на вертикальный и горизонтальный рост если и имеется, то не выдерживает реальных вызовов бизнеса. В-третьих, концептуальная простота и прозрачность на практике выливаются в композиционную запутанность и неочевидность. Кроме того, свою лепту вносят высокие требования к культуре деплоймента и эксплуатации.

Запуская новый продукт, всегда имеет смысл рассмотреть для MVP монолитную архитектуру: на старте монолит часто оказывается гораздо выгоднее, особенно если он модульный. Главное, о чем нужно помнить, — монолитная архитектура не означает отказа от горизонтального масштабирования, а обозначившиеся после запуска «бутылочные горлышки» можно и нужно выносить в отдельные сервисы, тем самым плавно выстраивая SOA. Хороший модульный монолит — надежный фундамент для будущего зоопарка сервисов.

Имея определенный опыт работы с SOA-проектами, мы начали разработку своего нового продукта — (антифрод-системы) — с позиций смешанного подхода: простота модульной монолитной системы должны соседствовать с гибкостью и расширяемостью SOA. Проработка единой модели представления и архитектуры потока данных показала, что сами данные и необходимые для управления их обработкой метаданные могут быть успешно объединены в общую сущность — задание, а работа системы в целом сведется к конвейерному движению таких заданий по общей шине от одного воркера к другому.
Правильный выбор транспорта общей шины и stateless-воркеры априори гарантируют горизонтальное масштабирование и, как следствие, отказоустойчивость. Разумеется, общая шина не является единственным хранилищем данных, результат каждой конвейерной стадии обработки задания сохраняется в хранилище соответствующего воркера. Стратегия движения сущностей по общей шине выстраивается и задается FMS (Flow Management System), на которую также возложены дополнительные функции дополнительного контролера гарантированной обработки заданий. Технологический стек Python + RabbitMQ + PostgreSQL + Redis был выбран из соображений предсказуемости и популярности, он призван минимизировать стоимость владения кодовой базой, с чем успешно справляется.

Подводят итог, можно перейти на язык аллегорий: правильно приготовленный монолит — это надежный, но достаточно неповоротливый кашалот, гораздо более предсказуемый, нежели играющий сам с собой в пинг-понг спрут, в которого вырождается непродуманно внедренная SOA. Мы не стали выбирать между кашалотом и спрутом, но реализовали простой сборочный конвейер.

Микросервисы, SOA
,
Архитектуры / другое
,
Продуктовая разработка

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

Rambler's Top100