Ergo Framework 3.3

1000px.jpg

Для тех, кто еще не знаком с фреймворком: он реализует акторную модель — дизайн-паттерн из мира Erlang/Elixir. Это не виртуальная машина BEAM, а скорее аналог библиотеки OTP для построения распределенных систем.

Этот релиз получился очень большим, поэтому я остановлюсь на ключевых изменениях.

Обсервабилити. Это, пожалуй, самое главное улучшение.

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

Если вы активно используете coding agents, Observer также предоставляет MCP-интерфейс, так что агент может инспектировать весь кластер, включая любой процесс на любой ноде.

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

Тестирование. Harness был полностью переработан. Теперь это инструмент для полного цикла тестирования с единым языком валидации в ergo.services/ergo/testing/check.

Есть полный набор моков в ergo.services/ergo/testing/mock, а также удобный toolkit для unit-тестирования акторов. Для тех, кто не знаком с акторами: работа с ними отличается от тестирования обычных функций, поэтому правильный и удобный инструментарий здесь действительно важен.

И самое интересное — ergo.services/ergo/testing/stage: он позволяет писать системные тесты, запускать кластер нод и фиксировать все события и сообщения, производимые акторами. Никакие контейнеры, Docker и т.д. для этого не нужны.

Кстати, благодаря этому harness покрытие тестами всего Ergo Framework теперь достигло 85%.

Подсистема Pub/Sub. Производительность была значительно улучшена благодаря полному отказу от mutex-ов в пользу lock-free механизмов. Это позволяет избежать деградации производительности, когда десятки или сотни тысяч процессов создают подписки или публикуют события. Они больше не конкурируют друг с другом.

Формат данных EDF теперь поддерживает указатели и эволюцию схемы данных — примерно так же, как это реализовано в Protobuf.

В целом, Ergo Framework постепенно перерастает в целую экосистему, поскольку сам фреймворк — это лишь фундамент для построения распределенных систем.

Вам по-прежнему нужно интегрироваться с облачным стеком, и для этого есть готовый аппликейшн ergo.services/application/radar.

Для сбора и публикации трейсов есть ergo.services/application/pulse.

Для выборов лидера на основе Raft — ergo.services/actor/leader.

Для eventually-consistent distributed registry — ergo.services/application/grid.

Все эти компоненты были выпущены или обновлены одновременно с Ergo Framework 3.3.

Для скептиков: это релиз фреймворка и экосистемы, которые уже примерно полгода активно разрабатывались и проверялись в реальном проде. Так что продукт достаточно отполирован, чтобы называть это полноценным релизом, а не просто bump версии потому, что накопилось достаточно нового кода. :)

Для новичков: если вы хотите познакомиться с акторной моделью, посмотрите tour в github.com/ergo-services/examples. Он поможет понять природу акторной модели и постепенно познакомиться с возможностями фреймворка.

Для опытных пользователей: в github.com/ergo-services/examples/tree/master/observability вы найдете готовый стенд, который запускает нагруженный кластер с несколькими приложениями, реализующими разные сценарии. Там можно посмотреть Observer в действии, а также готовые панели Grafana для наблюдения за кластером и распределенными трейсами.

Документация: https://docs.ergo.services.

GitHub: https://github.com/ergo-services.

Полный changelog: https://github.com/ergo-services/ergo/blob/master/CHANGELOG.md.

P.S. Судя по всему, 4 сентября стало для Ergo днем релизов, поскольку версии 3.0 и 3.1 выходили ровно в эту же дату в предыдущие годы.

P.P. S. Если вы пользуетесь Claude, плагин можно установить прямо через /plugin — Ergo там зарегистрирован. Вы получите skills ergo:framework и ergo:devops, а также агентов ergo:framework-architect и ergo:devops. Они очень полезны при проектировании, реализации и инспектировании Ergo-кластеров. Они оказались на удивление полезными.

>>> https://github.com/ergo-services/ergo

©  Linux.org.ru