Why I Looked at GoFr
If you've built microservices in Go, you know the drill: pick a router, wire up config loading, bolt on logging, figure out tracing, add health checks, write your own circuit breaker logic... by the time you've written your first "real" endpoint, you've already made a dozen architectural decisions that have nothing to do with your actual business logic.
GoFr is an opinionated microservice framework for Go that tries to remove that tax. It's built with Kubernetes deployment and observability as first-class citizens rather than afterthoughts.
What Stood Out to Me
A few things made GoFr worth a second look:
- Batteries-included observability — structured logs, distributed traces, and metrics are built in, not something you assemble from five different libraries
- REST standards by default — sensible conventions out of the box instead of a blank slate
- Built-in resilience — HTTP client with circuit breaker support means you're not hand-rolling retry/backoff logic for every service call
- Pub/Sub and gRPC support — covers the two most common inter-service communication patterns without extra setup
- Database migrations, cron jobs, health checks — the "boring but necessary" plumbing is already there
- Hot log-level changes — you can adjust verbosity without redeploying, which is a small feature that pays off a lot during incident response ## Getting Started
The setup is refreshingly minimal. First, make sure you're on Go 1.24+, then pull in the package:
go get -u gofr.dev/pkg/gofr
Enter fullscreen mode Exit fullscreen mode
A working "Hello World" service is just a few lines:
package main
import "gofr.dev/pkg/gofr"
func main() {
app := gofr.New()
app.GET("/greet", func(ctx *gofr.Context) (any, error) {
return "Hello World!", nil
})
app.Run() // listens and serves on localhost:8000
}
Enter fullscreen mode Exit fullscreen mode
Run it with:
go run main.go
Enter fullscreen mode Exit fullscreen mode
Then hit localhost:8000/greet and you've got a live HTTP service — no router config, no manual JSON marshaling boilerplate, no separate logging setup.
Where This Fits
GoFr isn't trying to be a general-purpose do-everything toolkit — it's clearly optimized for teams shipping microservices to Kubernetes who want observability and resilience patterns baked in from day one. If that's your world, it's worth evaluating against whatever stack you're using today (whether that's a bare net/http + custom middleware setup, or another framework like Gin or Echo layered with extra tooling).
The project is actively maintained — frequent commits, regular releases, and enough real-world adoption to be listed in the CNCF Landscape. It's Apache-2.0 licensed, so there's no ambiguity about usage rights.
Try It Yourself
- Repo: github.com/gofr-dev/gofr
-
Examples: check out the
examples/directory in the repo for more runnable patterns beyond the basic "Hello World" - Docs: linked from the README for deeper dives into each feature If you're building Go microservices and tired of re-solving the same infrastructure problems on every project, GoFr is worth thirty minutes of your time to try out.
Have you used GoFr in production? I'd love to hear how it held up — drop a comment below.
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.