Infra is a set of go libraries to unify the way we write grpc servers, access various databases, etc.
go get github.com/pushwoosh/infra
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.
- Postgres - based on jackc/pgx
- Clickhouse
- MongoDB
- Redis - based on go-redis v9 driver
- RabbitMQ
- Apache Kafka - based on segmentio/kafka-go
- NATS
- HTTP - http server helpers
- gRPC - gRPC server utilities for creating gRPC servers and gRPC gateways
- gRPC middlewares - set of standard middlewares
- Info - server info endpoint. provides endpoints for k8s liveness and readiness probes, pprof, build info
- GRPC Client - has same interface as database and broker libraries
- Log - zap logger wrapper
- Netretry - retry lib for temporary network errors
- Prometheus pushgateway client - client for pushgateway, mostly used in cronjobs
- Operator
- System - OS signal handler