DigiSpace

Розробка на Golang

Розробка на Go: високонавантажені API, мікросервіси, воркери та пайплайни даних. Golang-розробники для performance-критичних компонентів.

Ілюстрація Go-сервісів — скомпільований сервіс, паралельні воркери та мережеві вузли

Ми використовуємо Go там, де PHP перестає бути правильним інструментом: високонавантажені сервіси, фонові воркери, мережева обробка та софт, що має працювати легко. Go компілюється в один бінарник, а горутини роблять конкурентну роботу дешевою — саме тому важка частина NetPostPanel написана на ньому.

Що ми створюємо на Go

  • AI-мікросервіси — NetPostPanel виконує оркестрацію провайдерів, RAG-ретривал і семантичну фільтрацію як Go-сервіси, що паралельно викликають LLM.
  • Скрапери й пайплайни даних — краулери, які завантажують, парсять і нормалізують контент у темпі, недоступному PHP-воркерам.
  • Внутрішні API та обробники вебхуків — маленькі сервіси поруч із Laravel-монолітом, що знімають з нього зайве навантаження.
  • CLI-інструменти — імпортери, деплой-хелпери й утиліти, що компілюються в один бінарник.

Як це живе поруч із PHP

Laravel-застосунок із Go-сервісами та паралельними LLM-викликами

Laravel-застосунок робить те, у чому він сильний — HTTP, авторизація, адмінка, білінг. Go-сервіси беруть fan-out конкурентність і важкі обчислення. Спілкуються через HTTP, черги й вебхуки.

Паралельні виклики без зайвої складності

func fetchAll(ctx context.Context, urls []string) []Result {
    results := make(chan Result, len(urls))
    var wg sync.WaitGroup

    for _, u := range urls {
        wg.Add(1)
        go func(url string) {
            defer wg.Done()
            results <- fetch(ctx, url)
        }(u)
    }

    wg.Wait()
    close(results)
    return slices.Collect(results)
}

Реальний патерн конкурентності за викликами провайдерів у NetPostPanel — без фреймворку, лише стандартна бібліотека.

Наш Go-код навмисно нудний: стандартна бібліотека насамперед, мінімум залежностей, структуроване логування, graceful shutdown, Dockerfile у комплекті. Якщо у вас є вузьке місце в PHP, що росте, або сервіс, який має жити поза монолітом — це добрий привід поговорити.