Hi folks,

At Square, we have a collection of shared frameworks and library code, 
loosely referred to as the “service container” in each language. For 
example, our framework code in Go includes:

   - a lightweight "module" system for dependency injection
   - config: a way of layering yaml files named for environments. For 
   instance, common.yaml gets loaded first, and production.yaml shadows over 
   it, and production-east-coast.yaml gets applied last.
   - logging: code for sending log lines over kafka to our logging 
   aggregator
   - networking: our stubby-alike protobuf RPC mechanism, naming and 
   discovery, etc. Gradually migrating to "just use grpc and envoy"
   - datasource config: a convention for configuring database sources via 
   the yaml configs

People probably also think of our service container as including slightly 
less core things too:

   - sharded jobqueues
   - feature flags (backed by zookeeper)
   - cron jobs (again configurable via yaml)

This stuff has gone a while with less-than-generous attention and upkeep, 
and the extent of Square-specific code makes it more difficult for new 
developers to come up to speed.

What I'm trying to figure out is: what are folks at other companies using 
to create a shared set of conventions and out-of-the-box setup for their Go 
applications? We can knock some pieces out one by one (eg. replace our 
Module system with Wire), but it would be nice to find an existing 
lightweight “service container” that other companies are using.

I suppose my main question is this: is the kind of flexibility required for 
a shared, open-source “service container” antithetical to the kind of 
simple, opinionated, internal-convention-obeying “service container” you'd 
want for your company? To put it another way, it has never felt like using 
gokit would be appropriate, because it obeys none of our conventions.

Thoughts, comments, experience to relate?

Yours,

Zellyn

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to