GopherCon 2019 - How Uber Goes
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?
- 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)
- Benefits for delivering global features, enforcing dependency updates, etc.