Skip to content

Repository files navigation

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

About

go infrastructure libraries for services: database containers, http server, grpc server, etc

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages