Миграция оркестрации процессов с AWS на решение с открытым исходным кодом

Миграция оркестрации процессов с AWS на решение с открытым исходным кодом

Что такое SWF? Зачем он нужен?

Amazon SWF позволяет разработчикам создавать, запускать и масштабировать фоновые задания с параллельными или последовательными этапами выполнения. Этот сервис представляет собой полностью автоматизированное средство отслеживания и координирования заданий в облаке.

Чтобы написать код, который будет запускаться через SWF, необходимо использовать Flow Framework от Amazon доступный для Java, .Net, PHP и Ruby.

Причины для миграции

Зависимость от поставщика

SWF — это облачный сервис поставляемый и управляемый Amazon Web Services. Ни один из российских поставщиков облачных технологий не поставляет аналогичного решения с совместимым SDK, что не позволяет перевести инфраструктуру полностью на серверы РФ.

Усложнение процесса онбординга

Нашим внутренним операторам важно знать о текущем статусе выполнения процесса, уметь запускать и останавливать процессы. Для этого администратор должен выдать доступ к AWS новым операторам. Затем нужно научить новых пользователей пользоваться старым и не интуитивно-понятным интерфейсом в SWF. Все это увеличивает длительность и затраты на онбординг.

Риск новых санкций

Появление новых санкций сегодня — это дело времени. Так как Amazon американская компания, есть риск новых санкции, из-за которых работа сервисов AWS будет блокироваться из РФ. Или наоборот, внутри РФ может быть ограничен доступ к Amazon, что сделает невозможным его использование с российских серверов.

Отсутствие развития

Amazon не развивает данный сервис. Графическая оболочка приложения сильно устарела, а новый функционал
не появлялся с 2020 года.

Технологический стек

Чтобы пользоваться SWF необходимо писать код с использованием средств разработчика от Amazon. Имеется SDK: Java, .Net, PHP и Ruby. Несколько лет назад приложение было написано на Java, но основной язык разработки внутри TraceAir со временем поменялся на Python. Поэтому, нам хотелось иметь рабочее SDK на языке Python.

Требования к новому решению

Были сформированы такие требование к новому решению:

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

  • Интерфейс должен быть понятным, внутренним пользователям должно быть легко поменять платформу

  • Внутреннему пользователю не нужно создавать аккаунт в AWS. Должно быть достаточно корпоративного аккаунта

  • Сервис можно запустить на любом из облачных провайдеров. В России есть спрос на возможность развертывания системы “в подвале”, желательно, чтобы такая возможность имелась у нашей платформы.

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

  • Новое решение, которое заместит SWF, разрабатывается и поддерживается разработчиками. Критерий: за последний год должен появится новый функционал.

  • Наличие SDK, чтобы писать код для сервиса на языке Python и Java. Наличие Java SDK позволит сохранить старый код в рабочем состоянии, а Python SDK можно использовать для реализации нового функционала.

  • Поиск замены

    Чтобы уменьшить количество необходимого для рефакторинга кода, мы искали решение, которое максимально было похожим на SWF. Удалось выяснить, что у истоков разработки SWF стоит Максим Фатеев, он был главным архитектором этой системы, после чего, он разрабатывал систему Cadence Workflow для Uber, и сейчас у него есть свой стартап Temporal. Изучив документацию Temporal стало понятно, что концептуально он похож на SWF, у этих решений много схожих терминов, а самый первый SDK был сделан для Java. У темпорал имеется Python SDK, весь исходный код находится в открытом доступе на гитхаб. Имеется хорошая документация, в которой описано, как настроить темпорал на собственных серверах. Также, темпорал предоставляет возможность настройки oauth2 с гуглом. Таким образом, данное решение идеально подходило под наши требования, но это не было “серебряной пулей” и темпорал имеет ряд недостатков. 

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

  • Следующий минус, это отсутствие API для управления процессами в кластере Temporal. Например, чтобы запускать процессы из других сервисов. Но, на момент написания статьи, уже опубликован python-sdk.

  • Отсутствие визуализации ориентированного ациклического графа выполнения процесса, что неудобно, когда нужно разобраться в последовательности выполняемых шагов. Такая визуализация очень помогает, когда в процессе выполнения что-то пошло не так.

  • Мы продумали архитектурный дизайн и приступили к рефакторингу кода.

    План миграции и архитектурный дизайн

    Способ запуска процессов

    Ранее, наши процессы запускались с помощью сервиса AWS Lambda, а так как нам нужно автономное решение, их нужно было чем-то заменить. Для этого был придуман веб сервис, целью которого является запуск процессов в SWF. Под капотом, сервис запускает командную строку, для взаимодействия с кластером Temporal. На данный момент команда разработки Temporal уже опубликовала python-sdk, поэтому не обязательно реализовывать взаимодействие через командную строку.

    Изменение в кодовой базе

    Сначала, нужно было переписать наше текущее ПО, чтобы оно использовало temporal-sdk вместо Flow Framework. В нашем случае, пришлось копировать файлы с существующей логикой и точечно подменять Temporal там, где используется SWF. Также, изменениям подверглись наши сервисы, которые запускали сами процессы исполнения, так как ранее они использовали для этого AWS Lambda, после миграции — это будет осуществляться через упомянутый ранее веб-сервис.

    Реализация интерфейса для управления процессами

    У самого temporal имеется собственный интерфейс, но он не позволяет управлять процессами, только следить за статусом. Возможность управления процессом выполнения является важной частью нашего бизнес домена, поэтому, нужно предоставить операторам функционал для самостоятельного запуска и остановки процессов исполнения. Для этого, мы придумали фронтэнд приложение, которое позволяло бы нашим оператором имея учетную запись внутри платформы управлять процессами. Всего на нашей платформе 6 процессов, оператор может выбрать любой из них, ввести необходимые параметры и запустить процесс, отслеживание можно процессов производится непосредственно через сам temporal web ui.

    Архитектурный дизайн миграции

    Нашей командой был предложен такой дизайн для новой системы. На данной диаграмме workflow-worker наше основное приложение, которое и выполняет основную работу по запросу от Temporal. Operator UI — это приложение, с помощью которого наши внутренние операторы могут запускать или прерывать процессы.

    Миграция оркестрации процессов с AWS на решение с открытым исходным кодом

    Затраты на миграцию

    Для реализации были задействованы ресурсы почти всей команды из 5 человек. Рефакторинг кода под temporal-sdk не вызвал сложностей, всего надо было перевести 6 типов процессов на Temporal, в общей сумме было изменено примерно 10000 строк кода в коде проекта workflow-worker. Собственный Temporal API был реализован примерно за месяц на языке Python. Вдобавок, потребовалось создать инфраструктуру для работы самого Temporal.

    Для реализации Operator UI, к помощи привлекли фронтенд разработчика из другой нашей команды. Реализация потребовала меньше месяца.

    Нам очень повезло, что у нас имеются End-to-end тесты. Это позволило на этапе разработки обнаружить некоторые баги и добавляло уверенности при релизе решения в продакшн.

    Кирилл Гладких

    Опубликовано 28.03.2023

    Источник

    Vauld получила новую отсрочку в защите от кредиторов

    Vauld получила новую отсрочку в защите от кредиторов

    Криптолендинговая платформа Vauld вновь добилась продления моратория на разбирательства. Высокий суд Сингапура установил новый срок — 28 апреля, пишет The Block.

    Предыдущий истек 24 марта. Компании удалось перенести дедлайн в пятый раз.

    Согласно источникам издания, к 14 апреля Vauld требуется доработать предложение о реструктуризации.

    В компании пообещали, что план «упорядоченного сворачивания» в течение трех лет принесет более «быстрый и качественный» возврат средств кредиторам, а также предоставит достаточный срок для DeFi Payments [сингапурской «дочки» фирмы] для возврата неликвидных активов.

    В случае отказа от предложенного плана реструктуризации по итогам прений Vauld ликвидируют. Процедура может занять более десяти лет.

    В компании рассчитывают на «рестарт бизнеса» с переориентацией на модель генерации доходов для новых клиентов за счет DeFi-протоколов с целью привлечения нового капитала. В этой схеме кредиторы «сохранят надзор и контроль за расходами через назначенного в совет директоров представителя».

    Предполагается, что инициативу реализует «новое руководство». Соучредители Vauld Даршан Батиджа и Санджу Сони Куриан уйдут в отставку.

    4 июля 2022 года криптолендинговая платформа объявила о приостановке операций и возможной реструктуризации из-за финансовых трудностей. На следующий день стало известно, что конкурент Nexo подписал с Vauld предварительное соглашение о поглощении.

    Позднее СМИ со ссылкой на документы для суда выяснили, что объем непогашенной задолженности Vauld после этих событий составил $402 млн. Из них $363 млн пришлись на розничных инвесторов, одному из которых фирма не вернула $34 млн, еще троим — более $10 млн.

    Проблемы платформы начались с коллапса Terra — эквивалент $28 млн она держала в стейкинге UST. Следующим ударом стало общее падение крипторынка — Vauld занимала позиции в биткоине, Ethereum, MATIC и XRP.

    Третьим фактором утраты финансовой устойчивости стали дефолты некоторых контрагентов, которые привели к невозвратным потерям ~$1,7 млн. Четвертой причиной наступления банкротства стали траты на спонсорские соглашения.

    Напомним, в декабре 2022 года Батиджа заявил, что переговоры с Nexo «не увенчались успехом». Последняя опровергла отказ от покупки конкурента и представила обновленное предложение по поглощению.

    Источник: cryptonews.net

    Курс криптовалюты Ripple обновил максимум с октября 2022 года

    Курс криптовалюты Ripple обновил максимум с октября 2022 года

    Курс криптовалюты Ripple (XRP) обновил максимум с октября 2022 года. 28 марта стоимость актива выросла до $0,504. По данным CoinGecko, последний раз выше этой отметки она находилась 10 октября прошлого года.

    Цена монеты начала активно расти после того, как 21 марта юристы Ripple Labs предоставили в суд новые аргументы в защиту своей позиции в разбирательстве с Комиссией по ценным бумагам и биржам США (SEC). Регулятор уже несколько лет настаивает, что истцы предлагали незарегистрированную ценную бумагу под видом XRP, а разработчики утверждают, что монета не попадала под это определение.

    На фоне позитивных ожиданий сообщества цена криптовалюты выросла за неделю на 33%. На 16:00 мск XRP торгуется на уровне $0,502.

    Аналитики Santiment отметили, что социальная активность в сети XRP поднялась до самого высокого уровня в этом году, а рост объема торгов и интереса к монете ведут к повышенной волатильности.

    Росту положительных настроений в сообществе Ripple также способствует то, что Комиссия по торговле товарными фьючерсами США (CFTC) в иске к Binance отнесла ведущие криптовалюты, такие как биткоин, Ethereum и Litecoin, к товарам.

    Юрист Ripple Джон Дитон, комментируя новость об иске CFTC, назвал ситуацию разбирательством «Регулятора против Регулятора» и заявил, что необязательно быть экспертом в юридических вопросах, чтобы понимать, что SEC имеет ограниченные полномочия в области криптовалют и основным регулятором цифровых активов является CFTC.

    Источник: cryptonews.net