Клеточная архитектура

В статье будет дан краткий обзор подхода к построению архитектуры, основанной на клетках — Cell-Based Architecture

Cell-Based Architecture — это подход к построению сервисной архитектуры, в котором один сервис и его инфраструктурные потребности объеденены в единое целое — клетки. Каждая клетка может содержать логически-связанные микросервесы, хранилеще данных, системы обсервабилити (мониторинг, логирование, трейсинг). Таким образом формируется сплочённая (cohesive) и самодостаточная единица деплоя. Каждая такая клетка живёт автономно. Причём, она может взаимодействовать с другими клетками вокруг путём таких механизмов как события, прямой вызов и т.д. Для этого в оболочке клетки существуют точки взаимодействия — строго определённые интерфейсы. Сервисы внутри клетки взаимодействуют только друг с другом.

cell-based architecture.svg

cell-based architecture.svg

Плюсы Cell-Based Architecture:

  • Масштабируемость. Благодаря максмимальной изоляции клетки легко можно добавлять или удалять по мере необходимости.

  • Производительность. CBA позволяет наращивать производительность всей системы за счёт простоты масштабирования и распределения задач по новым клеткам.

  • Устойчивость к сбоям. За счёт независимости клеток друг от друга любой сбой в одной из клеток не затронет остальные клетки.

  • Безопасность. CBA может быть использована для повышения безопасности: благодаря изоляции сервисов в клетках можно реализовать дополнительные политики безопасности для доступа к чувствительным данным.

Ограничения CBA:

  • Сложность. CBA намного сложнее делать и поддерживать — следствие изоляции: кроме того, что клетки должны быть спроектированы и сконфигурированы независимо ещё нужно определить и реализовать контракты интерфейсов.

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

Компании, которые уже используют CBA:

  • Slack. После частичных перебоев в работе из-за сбоев в сети AWS в зоне доступности компания Slack перевела большинство своих критически важных для пользователей сервисов на сотовый подход. Этот переход был направлен на повышение отказоустойчивости и обеспечение высокой доступности платформы обмена сообщениями.

  • DoorDash. Компания реализовала стратегию маршрутизации с учетом зон в своей сетке сервисов на базе Envoy, перейдя на архитектуру ячеек на основе зон доступности (они называют это Avalability Zone (AZ)-based cell architecture). Этот шаг позволил снизить затраты на передачу данных между зонами доступности и повысить надежность системы в периоды пикового спроса.

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

  • Amazon Web Services (AWS). Компания AWS уже давно выступает за архитектуру на основе ячеек, представляя ее на своей ежегодной конференции re: Invent. В сентябре 2023 года они опубликовали технический документ, в котором подробно описали свой подход к CBA как к средству повышения надежности и масштабируемости облачных платформ.

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

Когда имеет смысл имплементировать Cell-Based Architecture:

  • Требования высокой доступности. Если сервис-приложение должен быть доступен на уровне 99.999 или выше, т.е допустимый простой не больше 5 минут в год (https://uptime.is/99.999)

  • Нужна гибкая масштабируемость. Если есть нерегулярные всплески нагрузки, под которые хочется масштабироваться. Дополнительно, можно подобрать размер клеток таким образом, чтобы масштабироваться было проще или эффективнее с точки зрения ресурсов.

  • Критические рабочие нагрузки. Приложения, критически важные для ведения бизнеса, например, в сфере финансовых услуг или сверхмасштабные системы, выигрывают от способности CBA изолировать сбои и гарантировать, что проблемы затронут только подмножество клиентов.

  • Низкий целевой уровень восстановления (Low Recovery Objectives): Если вашей системе требуется время восстановления (RTO) менее 30 секунд и точка восстановления (RPO) менее 5 секунд, CBA поможет удовлетворить эти строгие требования, обеспечив ускоренное восстановление за счет изолированных компонентов.

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

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

  • Гибкость при тестировании и развертывании. Если организации необходимо часто проводить тестирование и развертывание, CBA позволяет независимо развертывать клетки. Это снижает потребность в обширном регрессионном тестировании всей системы и позволяет делать канареечный деплой для снижения рисков во время обновлений.

Дополнительную информацию по Cell-Based Architecture можно получить из следующих источников:
https://www.infoq.com/articles/cell-based-architecture-distributed-systems/
https://newsletter.systemdesign.one/p/cell-based-architecture
https://www.techtarget.com/searchapparchitecture/tip/The-basics-benefits-and-risks-of-cell-based-architecture
https://www.linkedin.com/pulse/cell-based-architecture-pattern-pratik-pandey/

© Habrahabr.ru