Infra
Infra is a set of go libraries to unify the way we write grpc servers, access various databases, etc.
Installation
go get github.com/pushwoosh/infra
Libraries
All databases and brokers libraries have similar design: each library has NewContainer function that creates a container
that holds named connections to the database.
To create a new connection, call Connect method. To fetch a connection, call Get method.
Every such library also has an Init helper that replaces the initRedises/initGrpcs/... boilerplate
copy-pasted into every service main. It creates a container, connects all configured connections in a
background goroutine registered in the given wait group, and dies with log.Fatal on any failure:
wg := &sync.WaitGroup{}
var (
redises = infraredis.Init(wg, cfg.RedisConnections)
grpcs = infragrpcclient.Init(wg, cfg.GRPCConnections)
mongos = inframongo.Init(wg, config.AppName, cfg.MongoConnections)
)
wg.Wait()
Databases
Message Brokers
Servers
- HTTP - http server helpers
- gRPC - gRPC server utilities for creating gRPC servers and gRPC gateways
- Info - server info endpoint. provides endpoints for k8s liveness and readiness probes, pprof, build info
Other