Частенько мы пишем Go-сервисы, не задумываясь о том, кто и как запускает наши горутины. Возникает феномен "случайного рантайма приложения": когда Go-сервис обрастает множеством долгоживущих горутин, их время жизни и связи оказываются неявно размазанными по коду инициализации. Это становится особенно очевидным, когда нужно реализовать graceful shutdown.
Автор на примере сервиса для 3D-принт-фермы показывает, как выделить конкурентные компоненты в явные модули с помощью небольшой библиотеки backplane. Каждый модуль - это обычная функция вида func(ctx context.Context, deps ...interface{}) error, где каналы задают потоки сообщений, а всё остальное - ресурсы.
Когда в приложении появляется несколько долгоживущих конкурентных компонентов, их архитектура заслуживает явного представления в коде, а не существования лишь в виде побочных эффектов при запуске
03.09.2026
Похожее
02.09.2026
Интересные баги
Команда sigma star(хз кто это) нашла и исправила давнюю ошибку в рантайме Go, пр...
01.09.2026
GopherCon UK 2026
Видосы с GopherCon UK 2026 подоспели. Много всего интересного. Девид Чейни, Билл...
31.08.2026
Используем Datastar
В статье интеренсно про использование Datastar. Я вот первый раз про него услаша...
27.08.2026
На Rust после Go
Автор, пять лет писавший на Go, сначала скептически отнесся к появлению Rust в е...