🤨 InfoQ никак не может оставить в покое термин
Cell-Based Architecture В апреле они начали с него свой Software Architecture and Design Trends Report за 2024 год [2] (ссылки будут внизу), в июле выпустили eMag с набором статей [3], а вчера приступили к публикации серии Article Series: Cell-Based Architectures: How to Build Scalable and Resilient Systems [1]
Но, как это бывает практически с любым похожим термином, к его использованию возникает ряд вопрос. Из которых я выделили бы два основных: более-менее единое понимании термина и его полезность. И с тем и с другим у Cell-Based Architecture не очень все хорошо складывается.
Уже появилось множество не вполне одинаковых трактовок этого понятия. У WSO2 есть уже целая референсная архитектура [4], у ByteByteGo лаконичная картинка [5] ну и некоторый объем статей, начиная с Кристофера Сандовала [6] и продолжая теми же текстами InfoQ.
Думаю, большинство удовлетворится тем, что ячейка – это часть системы, обрабатывающая некоторое подмножество общего объема запросов и команд и способная делать это автономно, т.е. не обращаясь за границы ячейки. Подразумевается, что процессы ячейки развертываются на более-менее сосредоточенной группе серверов и взаимодействуют только между собой. Но вот цели такой архитектуры воспринимаются уже по-разному. Для кого-то это про локализацию сбоев. Другие [что странно] воспринимают это как способ обеспечения масштабирования. Третьи видят в ячейках способ сохранить данные внутри юрисдикции, ну и т.д.
Теперь про полезность. Я почему-то думаю, что десятилетия повального увлечения микросервисами немного научили отрасль построению распределенных информационных систем. И вряд ли кто собирается нынче вызывать в синхронном режиме удаленную процедуру из одного сервиса, в ходе обработки вызова от другого, который в свою очередь делает это для обработки запроса от третьего и т.д. Ну, т.е., идея переборок через которые не следует вызывать другие сервисы, банальна и очевидна. Вряд ли стоит называть это некоторым отдельным термином. В микросервисном мире предлагалось stateful взаимодействия осуществлять внутри сервера или даже pod-а. В ячеистой архитектуре потенциально ненадежные взаимодействия локализуются внутри группы серверов. Пожалуй, термин ячейка не будет лишним при развертывании в публичных облаках. Но вряд ли он станет столь же актуальным для частных облаков или собственных инфраструктур.
Но, может я чего-то в этой идее не разглядел. Посмотрим
[1]
Article Series: Cell-Based Architectures: How to Build Scalable and Resilient Systems[2]
InfoQ Software Architecture and Design Trends Report - April 2024 [3]
Cell-Based Architectures: How to Build Scalable and Resilient Systems [4]
Cell-Based Architecture. A Decentralized Reference Architecture for Cloud Native Applications [5]
A Crash Course on Cell-based Architecture [6]
What is Cell-Based Architecture?