LINUX.ORG.RU

Ergo Framework 3.3

 , , , ,


0

4

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

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

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

Многие компоненты были переработаны так, чтобы их можно было мониторить в реальном времени. По этой причине был переработан и визуальный инструмент 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

★★★★

Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 4)
Ответ на: комментарий от dynamic_cast

Найди другое место для словоблудия

ergo ★★★★
() автор топика

О, ещё и MIT - можно брать исходники и взамен давать ничего. Надо будет разрабам в конторе посоветовать, мерси.

zabbal ★★★☆☆
()

Why not just goroutines + channels?

Race conditions [-] Possible [+] Impossible within a process

Укажи runtime.GOMAXPROCS(1) или как его там, и у тебя не будет никаких гонок.

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

Уж сколько раз твердили миру, что Го - язык не для подобных фреймворков.

Lrrr ★★★★★
()

ВОт талант. Написать два экрана текста, но человек, который не знаком с топиком - ни за что не поймет, о чем это вообще.

Знакомое слово - фреймворк, пожалуй. Все остальное - это вообще не пойми что. Вайбкодерское что-то? Судя по всему да, агенты, скилы, обсервабилити.. Май асс

vvb333007
()

Радостно, что наращивается документация и примеры, потому что когда я пришел в 3.2, было очень печально на старте!..

Кстати, какова судьба стейтмашины? Так и будет на фиче болтаться? :( Тот перец из платформ.инжиниринг, я гляжу, вообще форкнул всё это хозяйство и пользует у себя через replace, называя это продакшеном с большой аудиторией… Неоднозначно.

aol ★★★★★
()
Ответ на: комментарий от aol

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

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

ergo ★★★★
() автор топика
Ответ на: комментарий от ergo

вполне вероятно, что просто не до этого.

второй год уже, по ощущениям, «не до этого»… вздох

aol ★★★★★
()
Ответ на: комментарий от aol

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

Кстати , в этом релизе появился очень полезный vet инструмент Argus. Он даже внутри ерго несколько раз находил и подсвечивал проблему. Я его в повседневной работе активно пользую. Сейчас во все наши CI будем его добавлять

ergo ★★★★
() автор топика
Ответ на: комментарий от ergo

да, нынешний релиз выглядит вкусно, мне нужно найти время его посмотреть!

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от Bad_ptr

нейрослопно

отличный комментарий. дает мне возможность развернуто ответить… будет немного длинно, но все по делу и на основе реального опыта в нашей компании.

разработка у нас поставлена следующим образом: сначала фаза дизайна. она из трех уровней. первый - кроссдоменный, второй - внутри доменный, третий - внутри ноды (деревья супервизоров и воркеры с ролями). на каждом уровне сиквенс диаграммы с call/data flow. все это делается с помощью ИИ-агента (точнее сказать - панель агентов со всеми нужными скилами, включая упомянутые ерго агенты). на выходе получаем документ для детального ревью. далее, если все ок, этот документ уходит ИИ-агенту на реализацию. на выходе - готовое решение, покрытое юнит/систем- и интеграционными тестами.

по этой схеме мы работаем последний год. платформа, которую мы разрабатываем - автоматизация торговли с помощью стратегий. все в проде. два ерго-кластера (116 и 68 нод). 500К+ кода.

почему это работает и не разваливается… потому что акторная модель. она дает очень удобный механизм разбивать любую бизнес логику на микро-домены с ограниченным скоупом ответственности. т.е. мы сознательно уносим в когнитивный долг только микромоторику внутри акторов, с которой любая ИИ сейчас справляется без усилий. мы на этапе ревью только проверяем какие-то неточности.

как мы это обслуживаем? легко и очень удобно. с помощью агентов. они имеют доступ к логам opensearch, метрикам в графане, к рилтайм кластерам (прямо к акторам). все по MCP. у агентов есть скил бизнес слоя - он знает через какие ноды идет бизнес процесс, он знает какие акторы в этой цепочке задействованы, он каждого опрашивает состояние (через механизм инспекции), он имеет доступ к исходникам для сопоставления реальности с реализацией. и вот как буквально у нас расследуется любой инцидент - спрашиваем агента типа «что происходит со стратегией Х, всю хронологию событий за последние сутки». на выходе получаем детальнейший репорт с таймингом всех событий, на каких нодах, почему было именно так с отсылками к строчкам в исходниках.

и вот что будет дальше… через, примерно, полгода мы будем сидеть в браузере на https://ergo.engineer/architect и дизайнить наши сиквенс диаграммы, а на https://ergo.engineer/depops у нас будет пачка агентов в режиме автопилота следить за продом и не только слать репорты, но и прикладыать фиксы к ним. человек только будет фасилитировать все это.

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

можно, конечно, игнорировать происходящее в ИТ индустрии и это выбор каждого :)

апд: про ерго непосредственно. клод - мой ассистент. не более. ибо это фундамент для всего остального.

ergo ★★★★
() автор топика
Последнее исправление: ergo (всего исправлений: 1)

Они очень полезны при проектировании, реализации и инспектировании Ergo-кластеров. Они оказались на удивление полезными.

Это тоже нейронка писала?

yorshka
()
Ответ на: комментарий от ergo

платформа, … автоматизация торговли с помощью стратегий

Это надо было вынести в начало новости.

Ок, что в торговле вы автоматизируете? И в какой торговле? В онлайн магазине? На бирже фючерсами?

И последнее - расскажите, пожалуйста, на простом примере: был такой-то торговый процесс, а после внедрения вашего решения торговый процесс стал другой (гораздо лучше)

мы сознательно уносим в когнитивный долг только микромоторику внутри акторов

Вы очень много используете сленга и жаргонизмов, вас понять очень сложно стороннему наблюдателю. Уж не знаю, сознательно вы это делаете или вам Клод помогает.

vvb333007
()
Последнее исправление: vvb333007 (всего исправлений: 1)
Ответ на: комментарий от yorshka

Там все нейрослоп. Новые ИТ технологии для фанатов технологии во имя технологии. ИИ хорошо продает люой товар сейчас.

Если автор не смог в трех постах обхяснить на простых примерах - что это и для чего, значит оно просто не нужно. Ну или автор сам не понимает, что он наваял. Вернее, Клод.

vvb333007
()

Что такое «акторная модель»? Чем эта модель отличается от традиционной клиент-серверной модели?

VIT ★★★
()
Ответ на: комментарий от vvb333007

Да не, сам фреймворк норм. Когда у тебя уже есть жирное количество расперделённого кода на энларге, добавить туда ноды на голанге имеет смысл. Но новость написана просто гигахерово.

yorshka
()
Ответ на: комментарий от ergo

500К+ кода.

А я правильно понимаю, что вы завязались на единственного вендора нейронок (Anthropic), и если завтра он взвинтит цены в 10 раз, то разработка встанет раком?

можно, конечно, игнорировать происходящее в ИТ индустрии и это выбор каждого :)

Происходящее в индустрии: все е%^нулись.

yorshka
()
Последнее исправление: yorshka (всего исправлений: 1)
Ответ на: комментарий от VIT

Что такое «акторная модель»?

Модель, созданная в прошлом веке «дидами» для языка Smalltalk,
ныне применяется человеками для общения на LOR, например, @VIT :)

quickquest ★★★★★
()
Последнее исправление: quickquest (всего исправлений: 2)

Виртуальная машина BEAM (Bogdan’s / Björn’s Erlang Abstract Machine) — это среда выполнения байт-кода для языков программирования семейства Erlang (таких как Erlang, Elixir и Gleam), созданная для построения отказоустойчивых и масштабируемых систем реального времени

https://dev.to/adamanq/beam-prostymi-slovami-3104

Не нужно

dynamic_cast ★
()
Последнее исправление: dynamic_cast (всего исправлений: 1)
Ответ на: комментарий от ergo

клод - мой ассистент. не более. ибо это фундамент для всего остального.

Так фундамент или ассистент?

lolkasosaka
()
Ответ на: комментарий от quickquest

Что такое «акторная модель»?

Модель, созданная в прошлом веке «дидами» для языка Smalltalk, ныне применяется человеками для общения на LOR, например, @VIT :)

Спасибо, конечно, но я знаю что такое акторная модель. Если бы хотелось делать ссылку, то следовало бы давать на что-то типа

https://en.wikipedia.org/wiki/Actor_model,

а не мутить сказки со Smalltalk, тем более в данном обсуждении речь вообще про Erlang. Я надеялся, что господин Халтурин расскажет чего-нибудь, чего я не знаю.

VIT ★★★
()

Как же здорово иметь кнопочку «игнорировать». Бац, и ни одного дурачка с их тупыми комментариями :). Прям хорошо.

ergo ★★★★
() автор топика
Ответ на: комментарий от VIT

Что такое «акторная модель»?
я знаю что такое акторная модель.

Раздвоение сознания? Бывает…

то следовало бы давать на что-то типа…

Я верил, что ты сам догадаешься и не ошибся.

а не мутить сказки со Smalltalk

Древнегреки мутили сказки с «акторами»,
а Smalltalk – это быль с акторами :)

quickquest ★★★★★
()
Последнее исправление: quickquest (всего исправлений: 2)

Ну ты хотя бы для приличия, хоть где-нибудь в новости, напиши что это фреймверк на Go. А то впендюрил тег, ни к чему не относящийся, и сидишь довольный.

Xintrea ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.