Open
Description
Go kit: the road ahead
- This is a tracking issue for broad changes to the Go kit project
- Expect edits and updates
- No ETA at this time
Context
- The microservices ecosystem has matured since Go kit's introduction
- Many responsibilities have, sensibly, moved to the platform/infrastructure
- Go kit has, accordingly, reduced its scope of responsibilities in practice
- Go kit is less about specific components or integrations, more about good application architecture
- The next iteration of the project should reflect this reality
- Keep and refocus on the good and useful parts, deprecate the less-useful parts
Keep
- package transport - necessary and valuable
- package endpoint - required for service/transport interop, pending generics
- package log - has clearly proved its value in the test of time
- package tracing - has also proved its value
- package examples - move to new or individual repos
Undecided
- package metrics - pending broader re-think and refactor
- kitgen - ownership is unclear
- package auth - I can't easily judge usefulness; seeking comment
Sunset
- package ratelimit - less useful in modern platforms, easy to bolt-on with generic middleware
- package circuitbreaker - less useful in modern platforms, easy to bolt-on with generic middleware
- package sd - less useful in modern platforms, many test flakes, a maintenance headache
Additional changes
- Rewrite website with new focus on architectural design and best practice
- New, expanded tutorial(s) based on lessons learned in my consulting work
Coda: repos
- One option is to break each package (or package-group) into its own repo under the go-kit org
- Another is to retain the existing kit repo, and use version tagging
- The latter is slightly more appealing to me, for continuity and visibility reasons
Coda: generics
- Generics, if/when they come, will change relationship between transport and service
- I expect the endpoint layer will no longer be necessary
- It's too early to say more
Errata
- Do transport- and service-level errors need to be kept so distinct? #807
Metadata
Metadata
Assignees
Labels
No labels