Einführung in Go-Webserver

Go ist eine ausgezeichnete Wahl für den Betrieb von Webservern. Die Sprache bringt eine leistungsfähige Standard-Library mit, die HTTP-Server ohne externe Abhängigkeiten ermöglicht.

net/http – die Standard-Library

Das net/http-Paket der Go-Standard-Library bietet alles, was man für einen einfachen Webserver braucht:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, "Hallo, Welt!")
    })
    http.ListenAndServe(":8080", nil)
}

Frameworks

Für komplexere Anwendungen gibt es etablierte Frameworks:

  • Gin – schnelles HTTP-Framework mit Router, Middleware-Unterstützung und JSON-Rendering
  • Echo – minimalistisches Framework mit ähnlichem Ansatz
  • Chi – leichtgewichtiger Router, der eng an net/http bleibt

Vorteile von Go-Webservern

Kompilierte Binary

Der Server wird als einzelne Binary ausgeliefert. Kein Interpreter, keine Runtime-Abhängigkeiten auf dem Zielsystem.

Geringer Ressourcenverbrauch

Go-Webserver benötigen typischerweise wenige Megabyte RAM im Leerlauf. Das ermöglicht den Betrieb auf kleinen VPS-Instanzen.

Einfaches Deployment

# Binary bauen
go build -o server .

# Server starten
./server

Eingebettete Ressourcen

Mit dem embed-Paket lassen sich statische Dateien und Templates direkt in die Binary einbetten:

//go:embed static/*
var staticFiles embed.FS

Fazit

Für Web-Backends – vom kleinen Microservice bis zur vollständigen Website – bietet Go eine elegante Kombination aus Einfachheit, Performance und Wartbarkeit.