Quote:
Originally Posted by jjshabado
Everything is easier with a "strong shared group norm and pragmatic leaders".
Touche.
Quote:
I'd argue that operations shouldn't be a monolithic thing for the whole organization - just like the services. So you don't need to worry about one group providing support to many different tech stacks.
The problem is that at some level, you need a view of the whole system and it's not efficient for individual teams to own all aspects of the operations. At a certain scale, there's a need for some kind of platform team that both provide the tools that make operations simpler and consistent across teams and also enforce standards that teams must follow for there to be appropriate reporting and escalation of issues. Also, simply leaving everything to individual teams also leads to siloization because one team has no view into how another team functions. At a lot of companies, this means no common source control and no common service interface. A lot of features cut across service boundaries.
What you're saying makes more sense at a larger size, say, 200-300 engineers but not 5-7. It's very difficult for a team of 5-7 engineers to own all aspects of operations for a complex internal service consumed by multiple other engineering teams, who in turn serve millions of customers.
Quote:
And I think the definition of the service should be independent from the technology stacks behind it.
The problem is that you can't control the definition of the service tightly at the top either - teams have to own the interface definition as well since it's a constantly evolving thing. With no standards, you end up with 10 different RPC protocols, no consistent tooling or documentation around how to access these differences and some teams resorting to screen scraping tools because they don't even know how to work together.
Quote:
So an internal (or external) service can easily be provided to other teams w/o those teams needing to know how its implemented.
This is fine when other teams are dependent on your service on a purely feature basis but again, there's a scale at which other teams have to know how your stuff works. There are many teams, like devops, security, incident reporting, product, customer support, test engineering, etc, who aren't necessarily consumers of your service but need to work with you on the details.