bricks

module
v0.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2021 License: MIT

README

PACE Bricks Golang CI Coverage Status

Opinionated microservice kit to help developers to build microservices with go.

Opinions

A pace/bricks microservice is:

  • built as a docker container
  • deployed into a kubernetes cluster
    • support for the termination log
  • configured using environment variables (TWELVE-FACTOR APP)
  • monitored using prometheus
  • reports errors to sentry
  • samples traces to jaeger
  • logs to stdout using json deployed kubernetes otherwise human readable
  • offers health endpoints
  • built-in redaction of JWTs and card schemes
  • connects to backend services
    • postgres (logging, metrics, tracing, health)
    • redis (logging, metrics, tracing, health)
    • queue via redis (logging, metrics, tracing, health)
    • http (logging, metrics, tracing, retries)
    • s3 via http (logging, metrics, tracing, health)
    • couchdb via http (logging, metrics, tracing, retries, health)
    • grpc (logging, metrics, tracing, retries)
  • provides two commands control and daemon
  • provides a RESTful API
    • code is generated from the OpenAPIv3 spec
    • authenticated via OAuth2
    • encoded using json:api
    • that supports logging, tracing and metrics
  • optionally provides a GRPC API
    • code is generated from the protoc spec
    • that supports logging, tracing and metrics

Install

go get github.com/pace/bricks/cmd/pb

Usage

pb -h

Contributing

Read our contributors guide.

Requirements

  • A working go installation
  • A working git installation

Testing

  • Use make test to test without dependencies
  • Use docker-compose run testserver make integration to test with dependencies
  • Use make testserver to start a testserver that will be started with dependencies. In order to update the server one need to docker-compose restart testserver

Environment variables for the pb command

Variable Description
PACE_BRICKS_EDITOR   The path to the editor that should be used for opening a project. Defaults to $EDITOR.
PACE_BRICKS_PATH The path where new project should be created. Defaults to $HOME/PACE.

Directories

Path Synopsis
backend
postgres
Package postgres helps creating PostgreSQL connection pools
Package postgres helps creating PostgreSQL connection pools
redis
Package redis helps creating redis connection pools
Package redis helps creating redis connection pools
cmd
pb
Package http implements the basic pace microservice handlers and a standard microservice server configured via environment variables.
Package http implements the basic pace microservice handlers and a standard microservice server configured via environment variables.
jsonapi
Package jsonapi provides a serializer and deserializer for jsonapi.org spec payloads.
Package jsonapi provides a serializer and deserializer for jsonapi.org spec payloads.
jsonapi/generator
Package generator translates an OpenAPIv3 specification into working go code that handles marshalling, error handling, parameter parsing and validation.
Package generator translates an OpenAPIv3 specification into working go code that handles marshalling, error handling, parameter parsing and validation.
jsonapi/runtime
Package runtime contains functions for marshalling, error handling, parameter parsing and validation.
Package runtime contains functions for marshalling, error handling, parameter parsing and validation.
oauth2
Package oauth2 provides a middelware that introspects the auth token on behalf of PACE services and populate the request context with useful information when the token is valid, otherwise aborts the request.
Package oauth2 provides a middelware that introspects the auth token on behalf of PACE services and populate the request context with useful information when the token is valid, otherwise aborts the request.
internal
The http locale package helps to transport and use the localization information in a microservice landscape.
The http locale package helps to transport and use the localization information in a microservice landscape.
maintenance
errors/raven
Package raven implements a client for the Sentry error logging service.
Package raven implements a client for the Sentry error logging service.
health
Package health implements simple checks for readiness and liveness that will be invoked by the loadbalancer frequently
Package health implements simple checks for readiness and liveness that will be invoked by the loadbalancer frequently
log
log/hlog
Package hlog provides a set of http.Handler helpers for zerolog.
Package hlog provides a set of http.Handler helpers for zerolog.
metric
Package metric returns the prometheus metrics handler
Package metric returns the prometheus metrics handler
metric/jsonapi
Package jsonapi implements the json api related metrics documented here: https://lab.jamit.de/pace/web/meta/wikis/concept/metrics#m2-microservice-any-pace-microservice
Package jsonapi implements the json api related metrics documented here: https://lab.jamit.de/pace/web/meta/wikis/concept/metrics#m2-microservice-any-pace-microservice
terminationlog
Package terminationlog helps to fill the kubernetes termination log.
Package terminationlog helps to fill the kubernetes termination log.
pkg
routine
Package routine helps in starting background tasks.
Package routine helps in starting background tasks.
synctx
Package synctx implements helpers for the context package on top of the sync package.
Package synctx implements helpers for the context package on top of the sync package.
test
livetest
Package livetest implements a set of helpers that ease writing of a sidecar that tests the functions of a service.
Package livetest implements a set of helpers that ease writing of a sidecar that tests the functions of a service.
tools
testserver/simple
Code generated by github.com/pace/bricks DO NOT EDIT.
Code generated by github.com/pace/bricks DO NOT EDIT.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL