How to simplify Platform as a Service complexity

Ben Kepes posted a good discussion on LinkedIn, Cloud computing and the concealment of complexity..  . Ben summarizes his position in a call to action at the end of the post:

 “Let’s make this stuff as simple as possible, articulating complexity does much to build barriers to cloud adoption….”

With any new technology, complexity is often a significant barrier, and technology professionals must carefully balance promised benefits and adoption challenges.  Widely adopted technologies (e.g. web browsers, HTML, DHCP, SMTP, Windows, text messaging) crossed the chasm when they simplified the user’s experience.    For example, Dynamic Host Configuration Protocol (DHCP) simplifies the Internet Protocol address assignment and helped TCP/IP adoption by non-network savvy individuals.   Mozilla spurred Web adoption compared to the text-based Lynx browser.  Ben’s comment foreshadows Cloud’s future path forward; continue to simplify the user experience or be relegated to a niche offering.

Sam Johnston sums up the goal in a recent Cloud complexity blog post:

“consumers of cloud services should finally be enabled to apply information technology to business problems, without unnecessary complexity.”  Online web applications serving as a forward face of Software as a Service (SaaS); enabling consumers to solve business processes without extensive installation.  While virtual machines and Cloud machine pools, which underlie Infrastructure as a Service (IaaS), undoubtedly simplify the IT procurement cycle.”

However, as we further Cloudify IT infrastructure and IT processes, the inherent complexity of technology may start to leak into the consumer experience.  Sam warns:

“If you find yourself using complex terminology or unnecessary acronyms (e.g. anything ending with *aaS) then ask yourself if you’re not part of the problem rather than part of the solution.”

Platform as a Service (PaaS) attempts to simplify a complex optimization and configuration process for technology enamored consumers (i.e. developers and operators).   Developers and operators understand how complex interactions between technology components, user requirements, and consumer interaction patterns can make their job a success or failure.  As Cloud matures, the industry is considering whether PaaS can or should simplify the application platform.  James Urquhart opines:

“If you are looking to cloud computing to simplify your IT environment, I’m afraid I have bad news for you.”

Ofir Nachmani post, Cloud Complexity ? It’s a Wrench , seems to agree with a straightforward warning:

“I think many enterprises, in their best efforts to implement all that they are told they can’t do without, are heading for more complexity than they ever dreamed possible.”

But Ofir and James diverge on our ability to successfully manage complexity.  James seems to place his trust in Cloud as an adaptive system, which can be managed by mankind.

“All you can do is constantly monitor the success and effectiveness of the technologies you deploy into the cloud, and constantly tweak them to make them as useful as they can be in that environment.

It’s up to people to make technologies that survive cloud as a complex system—one component at a time. That’s, well, how you deal with it.”

 

Directly dealing with complexity is not particularly compelling, and while compiling this blog post, I connected the dots between Jame’s last sentence and Ben’s message of

“Let’s make this stuff as simple as possible.”

As organizations near the adoption chasm, an important question remains as to whether infrastructure tooling is simple enough to tame complexity.   Ofir provides a negative view:

“Today, there isn’t a CMBD tool on earth (yet) that can realistically and efficiently keep pace with the inherent fluidity, agility and flexibility of even the most well intended cloud deployments.”

 

The result is “shit will happen in the Cloud”… “when complexity is mixed with a lack of clear visibility.”

Sam Johnston promotes a positive perspective, which could potentially be construed as encouraging IT professionals to bury their head in the sand:

“We should be working to make cloud computing as approachable as possible, and drawing attention to its complexity does not further that aim.”

Have the vendors reached a point whereby best practice processes and technologies can “make complex topics simple” and minimize negative emergent behavior?  Is industry discussion about complexity required or desirable?  To encourage adoption, do we need to constrain Cloud use cases and focus on the simplified set?

I believe we do need to have a serious and honest conversation about complexity. The conversation must span our ability to minimize negative emergent behavior by defining architectural patterns (i.e. Actor model, REST, eventual consistency), abstractions (e.g. workspaces and channels instead of machines and memory), and technologies (like DHCP), which correct negative behavior and simplify the consumer’s experience.   We also need to promote viable Cloud use cases, and use cases where unmanaged complexity will lead to disillusionment.  In January 2012, my position is the Cloudification of most application servers does not simplify nor guard against negative outcomes.  As an example, consider the figure below.   Does your PaaS simplify application environment complexity by abstracting away hardware infrastructure and application platform details?

PaaS Abstractions

How does PaaS simplify the application platform experience?

  • Can you integrate PaaS with your existing software development tooling and governance process?
  • Can you implement consumer-provider interactions across a hybrid Cloud environment while maintaining quality of service?
  • Can you decrease the number of configurations and standardize service offerings?

Many complex questions to answer this year and simplify the DevOps experience…..

Leave a Reply