I’ve previously documented my journey to Platform Application enlightenment and even proposed a reference architecture for Platform Applications. I’ve also documented what I believe all self-respecting Platform Applications should do. However, I believe there is one critical aspect of any PaaS/PaaA system that needs a lot more attention and credit:
The rules of engagement between the Platform and the Business applications, also known as the opinions of the Platform.
The old adage,“good boundaries create good neighbors,” sums it up perfectly for me.
If the Platform imposes a clear set of opinions on the application, I believe this leads to:
* Obviously a dependency packaging container solution like Docker can help with this, but there is a lot more to a Platform Application than just being able to run something.
A great example of opinions is the 12 Factor App by Heroku. I’ve heard it come under some criticism as being a ploy to encourage people to write applications that will run on Heroku. I think that argument is laughable. I know it’s also come under some criticism that its opinions are wrong. To quote the Big Lebowski, “that’s just your opinion, man”. Taking it as a definitive set of commandments written in stone for all to follow is the wrong interpretation. These are the rules for Heroku. All of them are sensible. All of them are important to Heroku. Some are transferable. Some are not.
I think there is relevance from this taxonomy referenced by Andrew Shafer:
Principles > Process > Tools
While he amusingly paralleled to Warren Buffet’s:
Innovators > Imitators > Idiots
I think we can parallel:
Principles > Platform Opinions > Platform Implementations
12 Factor App (or something equivalent such as the opinions from Cloud Foundry) may have principles you like. But equally some concrete opinions (e.g., log to standard out) you may not.
Gareth Rusgrove also called for an end to proliferations of lightweight Docker PaaS’ and:
“Publish more schemas and fewer incompatible duplicate implementations.”
I think Platform opinions can also be thought of as schemas.
What about the downsides of Platform opinions?
The only things I can think of would only be caused if opinions were created badly:
They could be inappropriate for the Business Applications, for example, mandating that all state and must be persisted in a database could be a good idea. But if an application that absolutely must store things to disk (e.g. Open LDAP) is needed, the opinion must be updated. But this really is just bad design.
They could inhibit Dev-to-Ops-harmony by the Platform Application team (Operations) enforcing “not-invented-here rules” on Developer (Business Application) teams. I think close initial collaboration around the creation of rules is key here.
They could be too prescriptive where one size may not fit all applications and lead to odd application designs.
They could be too loose, meaning they fail to make things predictable for the Platform and achieve the outcomes above.
So I believe clearly defined and optimized Platform opinions are an unsung hero of the PaaS/PaaA prospect.
In fact, I feel so strongly about this, I think it almost calls for Platform Opinions schema and even a Manifesto. I’m very surprised to find very little when searching Google for this. I’d like to see a book like “Patterns for Platform Opinions” or “How to Write Good Platform Opinions.” Is there anything like this out there? Is anyone with me? Let me know at @markosrendell.