Как стать автором
Обновить

Свой оркестратор, или как я докатился до такой идеи

Уровень сложностиПростой

Всем привет, меня зовут Евгений, я занимаюсь разработкой уже 24 года. Начинал свой профессиональный путь как адепт низкоуровневого программирования на ассемблере для микроконтроллеров, до эксперта разработчика в сфере финтех (да, эксперт – это так в трудовой записано 😊). Пройдя этот долгий путь, я понимаю, что работа с микроконтроллерами и всем, что с этим связано, была лучшим временем, и вспоминаю об этом с ностальгией. Это чистое творчество, где твой код соприкасается с реальным физическим миром, ты оживляешь железо, ну прям как Франкенштейн, а не вот это ваше всё - сплошные абстракции, фреймворки, виртуальные машины и всё в таком духе.

В спектр моих обязанностей входит весь жизненный цикл разработки ПО: аналитика, дизайн бэкенда (API, базы данных, интеграции, архитектурные решения), тестирование, техподдержка, и многое другое. И всё это, конечно, заправлено литрами кофе.☕

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

Самой распространённой проблемой, с которой я сталкиваюсь, — это как согласовать сложный workflow между десятками микросервисов, какой способ взаимодействия лучше применить, может синхронный REST API или асинхронный, через брокер сообщений (Kafka, RabbitMQ, ArtemisMQ и т. д.), как организовать согласованность данных, перечислять можно долго. Ну и эти мучительные архитектурные встречи, где обязательно найдётся эксперт-разработчик 😉который, предложит «применить паттерн SAGA», «воткнуть Transactional Outbox» или «материализовать состояние из сущностных событий в событийной модели». И, конечно, подкрепит свою идею цитатами из умных книжек, чтоб показать, какой же умный дяденька. В итоге получается настоящий зоопарк технологий, принципов, правил.

И так я пришёл к идее, а не прикрутить ли нам оркестратор, выбор пал на Temporal. Спросите почему он, да случайно прочитал в комментариях где-то в статье на Хабре. Temporal подкупил меня возможностью объединить все эти принципы, правила, в одно коробочное решение, с возможностью оркестрации на уровне кода, что даёт поистине неисчерпаемую гибкость построении управления процессами микросервисов. Ну и конечно же весь набор опций, отказоустойчивость, масштабирование, мониторинг и т.д.

Но моей идее суждено было разбиться об суровую реальность: Temporal написан на Go, а наш бэкэнд практически полностью зиждется на экосистеме Java. Вписать его безболезненно оказалось сложно, да и не всем хотелось вникать в суть работы оркестратора и как его интегрировать в нашу архитектуру. И так, идея внедрить Temporal была отнесена к категории, давай к этому вопросу вернёмся позже, что, как мы все знаем “никогда”. Во общем с тех пор я потерял покой, сон и отрастил бороду, думая, ну не ужели всё это было зря.

Вот тогда-то и зародилась идея создать свой оркестратор. Мне захотелось понять, как он устроен, смогу ли я сделать нечто похожее, а может лучше. Плюс, на фоне бурного развития ИИ, где пророчат персонализированных агентов, выполняющих свои задачи и управляемых оркестраторами, меня это ещё больше подстегнуло двигаться в этом направлении. Но об этом чуть позже.

Кто-то наверно подумает, вся эта затея пустая трата времени, ты изобретаешь велосипед, но для меня это в первую очередь повод получить опыт. Сейчас моя цель, не создать некий продукт, чтобы пытаться кому-то продать. Я не знаю, к чему это приведёт, на данном этапе важны те знания, которые я приобретаю.

Нут вот и всё, наконец то оформил свои мыли в текстовом виде, не ругайте сильно за косноязычность, это всё же моя первая статься. В следующей изложу свой план, как буду реализовывать этот проект.

Всем спасибо, кто дочитал до этих строк, вы молодцы, помните, дорогу осилит идущий.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.