Skip to content

Go kit: the road ahead #843

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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