Post Thumbnail

Частенько мы пишем Go-сервисы, не задумываясь о том, кто и как запускает наши горутины. Возникает феномен "случайного рантайма приложения": когда Go-сервис обрастает множеством долгоживущих горутин, их время жизни и связи оказываются неявно размазанными по коду инициализации. Это становится особенно очевидным, когда нужно реализовать graceful shutdown.

Автор на примере сервиса для 3D-принт-фермы показывает, как выделить конкурентные компоненты в явные модули с помощью небольшой библиотеки backplane. Каждый модуль - это обычная функция вида func(ctx context.Context, deps ...interface{}) error, где каналы задают потоки сообщений, а всё остальное - ресурсы.

Когда в приложении появляется несколько долгоживущих конкурентных компонентов, их архитектура заслуживает явного представления в коде, а не существования лишь в виде побочных эффектов при запуске

Похожее

Post Thumbnail

GopherCon UK 2026

Видосы с GopherCon UK 2026 подоспели. Много всего интересного. Девид Чейни, Билл...

Post Thumbnail

На Rust после Go

Автор, пять лет писавший на Go, сначала скептически отнесся к появлению Rust в е...