In the Java/Scala ecosystem, there are a lot of frameworks that help in building API-based solutions. Examples include the Netflix OSS stack and the Twitter Finangle. Go kit (https://gokit.io/) is a collection of packages that together give a slightly opinionated framework for quickly building a service-oriented architecture.
Go kit enforces separation of concerns through a decorator design pattern. It is organized in three main layers (with some sub-layers):
- Transport layer
- Endpoint layer
- Service layer
This is shown in the following diagram:
The transport layer defines the bindings and implements protocol specifics of various transports such as HTTP and gRPC (Google RPC).
The innermost service layer is where the business logic is implemented in a transport-agnostic fashion. Reminiscent...