GopherCon 2019 - How Uber Goes

conference, golang, gophercon2019, notes

These are some notes from my experiences at the GopherCon 2019. I don’t expect these will be laid out in any particularly useful way; I am mostly taking them so I can remember some of the bits I found most useful in the future.


  • Fast growth, new features, but inconsistency in the codebase

    • Productivity problems: hard to move around disparate styles / systems
    • Which libraries? Which versions?

Dependency Injection

  • Common bits like logging, configuration, etc. that need to be written for every service – how can boilerplate be reduced?
  • DI framework Fx

Consistent Code Structure

  • Handler and Controller separation (handler = rest/grpc)
  • Repositories for data storage interface (abstracts actual storage)
  • Gateways for talking to external services (abstracts transport mechanism etc)

Monorepo

  • Benefits for delivering global features, enforcing dependency updates, etc.