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/httpbleibt
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.