DigiSpace

Tworzenie aplikacji w Golang

Go development: API o dużym obciążeniu, mikroserwisy, workery i pipeline'y danych. Programiści Golang do komponentów krytycznych wydajnościowo.

Ilustracja usług Go — skompilowany serwis, równoległe workery i węzły sieci

Używamy Go tam, gdzie PHP przestaje być właściwym narzędziem: usługi o wysokiej przepustowości, workery w tle, przetwarzanie sieciowe i oprogramowanie, które ma działać lekko. Go kompiluje się do pojedynczego binarka, a gorutyny czynią pracę współbieżną tanią — dlatego ciężka część NetPostPanel jest w nim napisana.

Co budujemy w Go

  • Mikroserwisy AI — NetPostPanel realizuje orkiestrację providerów, retrieval RAG i filtrowanie semantyczne jako usługi Go, równolegle wywołujące LLM.
  • Scrapery i pipeline'y danych — crawlery pobierające, parsujące i normalizujące treści w tempie niedostępnym dla workerów PHP.
  • Wewnętrzne API i procesory webhooków — małe usługi obok monolitu Laravel, zdejmujące z niego zbędne obciążenie.
  • Narzędzia CLI — importery, pomocniki deploymentu i narzędzia kompilowane do jednego binarka.

Jak to żyje obok PHP

Aplikacja Laravel z usługami Go i równoległymi wywołaniami LLM

Aplikacja Laravel robi to, w czym jest dobra — HTTP, autoryzacja, panel admina, billing. Usługi Go biorą współbieżność fan-out i ciężkie obliczenia. Komunikują się przez HTTP, kolejki i webhooki.

Fan-out w kilkunastu liniach

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)
}

Rzeczywisty wzorzec współbieżności za wywołaniami providerów w NetPostPanel — bez frameworka, tylko biblioteka standardowa.

Nasz kod Go jest celowo nudny: najpierw biblioteka standardowa, minimalne zależności, strukturalne logowanie, graceful shutdown, Dockerfile w zestawie. Jeśli masz rosnące wąskie gardło w PHP albo usługę, która powinna żyć poza monolitem — to dobry powód, żeby porozmawiać.