Комментарии 9
Спасибо за статью. А есть причина по которой не стали смотреть на aws step functions?
Мы не рассматривали службы AWS или других облачных платформ при проектировании, поэтому не могли на них завязываться. Если быть честным, то при старте разработки мы рассматривали только три варианта:
Camunda
Temporal
Свое решение с PG и Kafka
А какие критерии выбора перевесили в пользу Temporal вместо Camunda?
На меня повлияли следующие вещи: легкость развертывания, исходный код на go, консультация с авторами Temporal и разработчиком, который внедрял Temporal, скорость написания кода.
Camunda выглядела довольно энтерпрайзной и мне показалось, что я не осилю все то, что нужно для того, чтобы затащить order processing на camunda за 2 месяца, а сроки очень горели.
Ох, имел дело со Step Functions. Не понимаю как с ними работать, если у тебя Infrastructure as a Code. В итоге получались json на 1000 строк c описаниями workflow, упиханные в CloudFormation темплейты, изменения в которых нормально на ревью не отсмотришь. Да ещё процесс decision making упиханный в это json описание фиг покроешь тестами.
Я в итоге вдохновляясь Temporal и Azure Durable Functions за пару дней написал библиотечку, которая позволяет описывать workflow как код, а в качестве движка выполнения использует единожды написанную общую Step Function. И жить сразу стало лучше.
Интересный инструмент.
А как код структурно размещаете в репозитории(несколько микросервисов) и производите деплой можете рассказать?
У нас разделено на несколько репозиториев, но самый большой называется oms и он содержит 5 workflow, отдельно есть еще репозиторий с логистическими заказами и у них своих workflow, которые общаются с нами через temporal. Каждый workflow с его activity имеет отдельный воркер и каждый воркер имеет свой собственный деплоймент в кубе.
Если бы я делал сейчас заново работу с temporal, то я бы каждый воркер выносил в отдельный репозиторий, а сами рабочие процессы бы описывал с помощью proto-файлов и генерил бы весь код и скелет рабочего процесса через https://github.com/cludden/protoc-gen-go-temporal.
Строим систему управления заказами с помощью Temporal: c нуля до десятков тысяч заказов в день