The situation: we have a diaspora of IT tribes that have specialized in the old way. OpenStack represents a new way that breaks the time tested practices of the old way. In OpenStack there are many ways to accomplish a goal, and lots of opinions about what’s good and bad about each. How to resolve this?
OpenStack is revolutionary in that it allows us to create programs that, when executed, represent (codify) the combined knowledge of many different people. In traditional IT organizations much of this knowledge was centralized. As those orgs grew and matured processes developed that represented good practice with the tools of the time. Each tool set had associated skill sets required so it was hard, or impossible, for one person to deeply understand it all. Think about the gulf between archival storage and network security! Each tribe codified knowledge in very different ways, mostly in the form of process documents rich in implementation detail, making it tough to understand how it all fit together.
Then outsourcing came along and the barriers that had been developing between those disciplines got so much larger. It quickly became very difficult, and consequently costly, to institute systematic IT changes. It’s no wonder some IT organizations feel like they’re in the dark ages when they consider adopting technologies like containers, or software defined networks.
OpenStack, to me, represents a natural reaction to the dispersed knowledge and skills that brought organizational innovation to its knees. OpenStack brings the diaspora back together by representing all these different skills and practices in a common set of APIs. It then shouldn’t be surprising that this is a bit messy and confusing. Now we have the beginnings of a set of artifacts that codify the way a system operates, making it easier to see the whole.
We now face complexity at many levels:
- Scale of distributed systems is hard
- Diversity of subsystems and tooling
- Uneven knowledge within our organizations
- Disagreement about patterns, and when they apply (don’t get me started on anti-patterns)
- Distributed understanding about what works well
This complexity is a classic architectural problem. How can this be solved? Because this is a systematic problem, it must be solved at the system level, which in this case is at the community level.
It’s not enough that some of you already know the answers – those answers need to be accessible to both the grizzled OpenStack veteran and the n00b.
- Gather artifacts that represent ways to express the variety of ways to solve the problem
- Learn about the various ways to solve problems
- Codify the solutions in a way all, from grizzled to n00b, can consume and use
The OpenStack Community App Catalog is the seed of step one — gathering the bits together in one place.
- Plant more seeds.
- Organize them and grow them.
- Nurture. Weed! Harvest…