Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/beatlabs/patron

Microservice framework following best cloud practices with a focus on productivity.
https://github.com/beatlabs/patron

framework go golang microservice

Last synced: about 1 month ago
JSON representation

Microservice framework following best cloud practices with a focus on productivity.

Awesome Lists containing this project

README

        

# patron ![CI](https://github.com/beatlabs/patron/workflows/CI/badge.svg) [![codecov](https://codecov.io/gh/beatlabs/patron/graph/badge.svg?token=sxY15rXW1X)](https://codecov.io/gh/beatlabs/patron) [![Go Report Card](https://goreportcard.com/badge/github.com/beatlabs/patron)](https://goreportcard.com/report/github.com/beatlabs/patron) [![GoDoc](https://godoc.org/github.com/beatlabs/patron?status.svg)](https://godoc.org/github.com/beatlabs/patron) ![GitHub release](https://img.shields.io/github/release/beatlabs/patron.svg)[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fbeatlabs%2Fpatron.svg?type=shield&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fbeatlabs%2Fpatron?ref=badge_shield&issueType=license)

Patron is a framework for creating microservices, originally created by Sotiris Mantzaris (). This fork is maintained by Beat Engineering ()

`Patron` is french for `template` or `pattern`, but it means also `boss` which we found out later (no pun intended).

The entry point of the framework is the `Service`. The `Service` uses `Components` to handle the processing of sync and async requests. The `Service` starts by default an `HTTP Component` which hosts the `/debug`, `/alive`, `/ready` and `/metrics` endpoints. Any other endpoints will be added to the default `HTTP Component` as `Routes`. Alongside `Routes` one can specify middleware functions to be applied ordered to all routes as `MiddlewareFunc`. The service sets up by default logging with `slog`, tracing and metrics with [OpenTelemetry](https://opentelemetry.io).

`Patron` provides abstractions for the following functionality of the framework:

- service, which orchestrates everything
- components and processors, which provide an abstraction of adding processing functionality to the service
- asynchronous message processing (RabbitMQ, Kafka, AWS SQS)
- synchronous processing (HTTP)
- gRPC support
- metrics and tracing
- logging

`Patron` provides the same defaults for making the usage as simple as possible.
`Patron` needs Go 1.22 as a minimum.

## Code coverage

![Code coverage](https://codecov.io/gh/beatlabs/patron/graphs/icicle.svg?token=sxY15rXW1X)

## Table of Contents

- [Code of Conduct](docs/CodeOfConduct.md)
- [Contribution Guidelines](docs/ContributionGuidelines.md)
- [Acknowledgments](docs/ACKNOWLEDGMENTS.md)