Internal services have customers too!
Do you already run a service used by other teams? Does your team run a service just for itself but your company is growing and new teams are interested in using it too? Congratulations, you're the proud owner of an internal service and you have customers. Chances are you don't have a product manager directing the terms of that customer relationship so it's up to you. We'll talk about pitfalls and trade-offs like:
- Who gets the alert? (how do you define accountability, do you have the metadata you need?)
- Do you have an SLA? What do SLAs even mean when there's no money involved?
- Automation that saves you time without driving your customers crazy
- Capacity planning when you don't control your demand
- Carrots and sticks and actually getting stuff done
I'll give some examples of how that relationship can go wrong and how your policy and tooling choices can help it go better. These examples come from my experience at Facebook supporting services used by teams across the company like configuration management (Chef), logging infrastructure (Scribe) and distributed coordination (zookeeper).
- “Scribe Tech Talk” https://www.facebook.com/Engineering/videos/650882334523/
- “The History of Logging @Facebook (Abridged)” https://www.usenix.org/conference/lisa18/presentation/braunschweig
- “Really large scale systems configuration” https://www.youtube.com/watch?v=rEWHmk8vBYk
- “Zookeeper Meetup” https://www.facebook.com/zkmeetup/videos/559260314523351/
- “Wormhole: Reliable Pub-Sub to Support Geo-replicated Internet Services” https://www.usenix.org/system/files/conference/nsdi15/nsdi15-paper-sharm...