Skip to content

Go kit: the road ahead #843

Open
Open
@peterbourgon

Description

@peterbourgon

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
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions