By James Wilt, Distinguished Architect
Cloud has matured into a PaaS existence where Cloud-Native means you have infrastructure as code, network as code, security as code, essentially, everything as code. All this “as code” raises the question, “Is Cloud a Platform or a Language?”
The concept of wave-particle duality can help us explain how it really is both. As Cloud is leveraged using IaaS and self-managed containers, it takes on the personality of a platform where you want to minimize risk and promote efficiency. When leveraged using PaaS and serverless Cloud-Native components, it takes on the personality of a development language where you want flexibility to promote innovation.
You’ll want to enable or disable Cloud features/components based on this utilization context. Under the context of a platform, fewer moving parts is better to accommodate least privilege scoping. It makes no sense to introduce features/components unless they have specific purpose.
Under the context of a language, more options & choices foster higher fidelity in quality, time-to-market, and innovation. Who could productively develop in a language with only four statements? The same holds for serverless Cloud-Native development. The more obvious contexts exist at the ends of the phases in the SDLC continuum. Those in-between become more subjective, however, a gradual progression is sensible:
“As-code” artifacts from the language phases should feed directly into templates and boilerplates for future platform configurations.
The challenge with this platform-language duality is when organizations attempt to govern Cloud from one context without the other. They either stifle engineering productivity or introduce unnecessary risk. Or, as Albert Einstein puts it, “It seems as though we must use sometimes the one theory and sometimes the other, while at times we may use either. We are faced with a new kind of difficulty.”