First things first - what the heck is a “Cloud Native App”, great a new buzzword… and we yet another buzzword (YAB ;-) like we need a punch in the face :-)
It is a real idea, but an idea that lacks a discrete authoritative definition, but you know it when you see it.
Let me throw out some of my thoughts on this through my travels, customers dialogs, and insights from other customers.
Hang on to your hats if you don’t Iive in this world (common for the “traditional VMware admin” - frankly for most people).
Whenever an idea hits the “zeitgeist” (like “Cloud Native Apps” have), you find a TON of info that is high level. You find a lot of pithy (technically silly) analyst/press comments. For example, the “VMware vs. Containers” thing for example is a case where people want eyeballs, but are unwilling (unable?) to really understand.
If you want to understand - you need to be curious. If you are curious - read on!
So… WTH is a Cloud Native App (Cloud Native App)?
Recently, Subbu Allamaraju from Ebay did a great post sharing the last 3 years of his experience here.
Here’s a key quote that I think captures a couple central ideas that are “Cloud Native App” thinking.
"I would describe a cloud native abstraction as one with two fundamental characteristics:
Durable: The abstraction may be built using ephemeral parts, but the abstraction itself is durable in the sense that it survives failure of its parts.
Declarative: The user of the abstraction declares the desired state, and the service providing that abstraction attempts to maintain the abstraction in that desired state."
For people with a developer’s or comp-sci background that want a more technical definition (personally, I think this is very authoritative), The Twelve Factor App is a nearly perfect characterization that defines a real Cloud Native App.
Notice that those definitions say nothing about the “HOW” of the infrastructure layer should work - only that the app has no infrastructure dependencies. What is an infrastructure dependency? A simplistic way to say it would be “anything that the app cares about”. Does the app get unhappy if the IOps drop by 50%? Does the app freak out if a VM blows up? Do you think about backup? These are all examples of infrastructure dependency.
And remember - I’m not talking about “hardware” here. I’m talking about the way that the infrastructure (in totality) manifests itself: ultimately, the top IaaS layer.
Let me give you a real example.
To highlight the launch of the vCloud Air object store - the EMC team (thanks Matt and others!) built an app that is a real world example. It’s pretty simple, and illustrative. It pulls twitter pictures that match a hashtag (#VMworld), filters for NSFW content (warning, this isn’t perfect), and stores the pictures in the vCloud Air object store (which uses the EMC SDS Elastic Cloud Storage object stack). The app architecture follows the “12 factor app” rules - and this is is a real Cloud Native App example.
First, go and check out the app here.
Next, if you want to understand how this works - it’s running in vCloud Air, where there is a Pivotal Cloud Foundry instance which makes the app scale with a single command (“cf scale”), and we’ve gone through multiple updates with zero downtime not because of things like “VM HA” or “highly resilient infrastructure” (in any form), but because of the durable and declarative way the app is constructed. Each micro service is ephemeral, and we are using a cloud-scale geo-distributed object store (the new vCloud Air Object storage model which is powered by ECS) for underlying persistence.
You can see the app architecture in the logical diagram below:
There is a funny story behind the app name “Vasco da Gama” - from Matt Cowger (@mcowger): “The very first version I wrote had no name and was a hack. Then Kenny and Jonas took it, improved the interface and dockerized it and deployed it over a ton of world wide AWS instances and called it "Marco polo”. I then rewrote it into the uServices architecture and called is Vasco da Gama.” The people here are a great group of folks, all EMC SEs currently or in the past, and now part of the EMC {code} team.
So - what does this app want from infrastructure? What does any Cloud Native App want from infrastructure? What matters for “Cloud Native App” IaaS is a couple things:
- programmability (“infrastructure as code”)
- elasticity (which demands a very scale-out architectural model)
- economics (which steers towards commodity hardware + software architectures)
- powered by open-source software stacks - to a smaller degree for economic reasons, but to a LARGE degree for the rapid rate of innovation and collaboration that only a community approach can bring
- Bonus (but not required) is strong instrumentation and telemetry of the IaaS layer
This is a tricky thing (strategically) for us as the Federation - because we’re REALLY good at the other kind of IaaS: very feature rich, very resilient at the VMware SDDC (SDC, SDN, SDS) layer and the hardware layer. We have all kinds of data services to protect, recover, create active-active models, and DR with RPOs you can dial in however you want. We have even industrialized it with the Federation Enterprise Hybrid Cloud model - that makes the whole solution turnkey.
Furthermore - exactly because these IaaS stacks support monolithic, fragile, NON resilient apps (usually sitting on a creaking Oracle RDBMS for the data fabric), they are wrapped with organizational models and processes that are built to reduce RISK at all cost - including agility. If you can spell ITIL, you know what I mean. Very valuable, very mature change control processes built over decades.
So - what’s a customer to do? What’s VMware, EMC to do?
First - an important (REALLY important) observation: Brownfield and Greenfield models.
Cloud Native Apps (cattle in the “pets and cattle” - or “pets and chickens" for my Hindu friends :-) can absolutely be deployed on an existing “infrastructure resilient” IaaS stack and operational model.. Call that a “brownfield” deployment. It will have exactly the elasticity and agility that the organization and process that supports it can deliver.
There is then logically a “Cloud Native App” version of IaaS. There, things like VM HA, DRS, Storage DRS, heck VMAX, XtremIO, Data Domain and the ilk have dramatically lowered value. Why? Because they suck? No. Because you value elastic, programmable IaaS - and don’t care particularly about infrastructure resilience. You do resource management at some higher level in the stack (either PaaS does it for you, or a container/cluster scheduler like Cloud Foundry, Kubernetes or Mesos does)
Which of these is “right”?
BTW this idea was presented in the VMworld keynote on the topic this way:
Sigh. Get ready for years of stupid debates - with people who are rabid fanatics one way or another. This will be the next version of “NFS vs. VMFS”, or “AFA or HFA”, “Converged or Hyper-Converged" or “Public or Private Cloud”. Hint: when you talk to someone that is fanatical - that can’t reflect, consider circumstance, or nuance, walk away. Unless it’s Donald Trump, in which case, mess with his hair.
Clearly - a customer needs to evaluate their strategy, and EMC and VMware must support both models (on premises and off premises). We must have the BEST IaaS stack for monolithic apps, and also Cloud Native App stacks.
Now - there are experiences and observations that I’ve been noting over the last year or so on the “Brownfield vs. Greenfield” topic.
Observations re Brownfield / Greenfield:
- Most enterprises start with the brownfield. There’s overwhelming weight of monolithic non Cloud Native apps that they just can’t mentally justify another stack and separate operational team.
- Many pivot to the Greenfield (again technology stack, and organizational/process) over time.
- The reason for the pivot is not the technology delta (though there are technology differences that are material) - it’s the organizational and process considerations. Simply put, the organizational models (very SLA oriented into silos with clear demarcation and handoff) and processes (very mature, very geared to focus on “risk = bad”) simply cannot be elastic enough, programmable enough. This is the root of the Gartner “bi-modal IT” observation.
Aside - this train of thought (wanting to rationalize options down to a singular choice) exists in so many brains because all humans struggle to maintain two opposing ideas in their brain at the same time - we naturally want to “harmonize” or “reconcile”. Again - note the pattern - when someone says “this is the answer, all the time” - gather up sharp objects and back away slowly.
- In general, Enterprises seem to get better results from Structured PaaS than unstructured. This is the PaaS version of the “mix and match vs. converged/hyper-converged infrastructure” observation. Stop building things that you should just buy.
- In general, SaaS startups and Hyper-Scale players seem to get better results from unstructured PaaS - because they get specific benefits out of their own, very specific selections around all the “integrate” and “need to be built” topics in the table above.
- Brownfield and greenfield models exist and are both important
- We must be open at every level, but also deliver an integrated stack with a “First and Best” model.
- Structured (PaaS) Cloud Native App patterns are best for enterprises, but we recognize that an important unstructured Cloud Native App marketplace exists
- Pivotal focuses on three parts of Cloud Native Apps - having the best structured PaaS model (Pivotal Cloud Foundry), the best data fabric (Pivotal Hadoop as part of the Open Data Platform effort), winning over customers and developers by helping them build apps (Pivotal Labs)
- … which means Pivotal needs to continue continue to focus on winning in he structured Cloud Native App ecosystem with Cloud Foundry
- … and Big Data
- … and keep expanding Pivotal Labs capacity directly or via franchising Cloud Foundry Dojos.
- VMware is focused on one part of Cloud Native Apps - having the best Cloud Native Apps IaaS layer…
- … which means VMware needs to focus their R&D $$ to build the best stack (Photon Platfrom) which must integrate and support a “First and Best” structured Cloud Native App using Cloud Foundry
- … while also supporting an unstructured Cloud Native App ecosystem (e.g. supporting Kubernetes, Mesos on Photon Controller/Photon)
- EMC focuses on two parts of Cloud Native Apps - having the best persistence (storage) stacks - and to “industrialize” the offer including on hyper-converged rack scale infrastructure…
- … which means EMC needs to focus their R&D $$ build the best Cloud Native App persistence/storage (ScaleIO, ECS, OneFS, DSSD)
- … which must integrate and support the Photon Platform as the “First and Best” Cloud Native App IaaS
- ... while also supporting an OpenStack based offering and ecosystem (Project Caspian)
Now, you're probably saying to yourself: "that’s a lot of pieces that I have to assemble myself - can you make it easier?” Together, Pivotal, VMware, and EMC have heard this feedback from our customers and we understand the value to simplify the integration and consumption options.This is why Pivotal and VMware have announced a new single SKU that includes both the PCF structured platform and the Photon Platform Cloud Native Application platform to run it on. Info on that here!
- At the strategic level, congratulations to VMware as a whole. This embrace of brownfield AND greenfield is right, and is the choice that customers want to be put in front of them. It means that a Federation level greenfield Cloud Native App stack is possible for the first time. Customers and partners love you for vSphere and the SDDC Suite - let’s make them also love you for Photon Platform as THE BEST Cloud Native App IaaS stack. THANK YOU!
- On a personal level, congratulations to Kit Colbert and all the people on the VMware Cloud Native App team - they’ve been working on this for years, and it’s always a great day when you can welcome your baby to the world!
Chad,
I am so glad I found this blog, everything you have described here is what I addressed in my email to you and Chris.
My conclusion is exactly as you have drawn on, VxRack makes perfect sense in this space of what I have now learned as Structured and Unstructered PaaS. Before I would just describe it as just CF or DIY PaaS :-) GE Appliances and GrubHub at DockerCon 2015 are great examples of the Unstructured PaaS side of things.
The business value customers are creating out of moving this way is phenomenal and as you correctly stated, this whole debate about this evolving, fast paced eco system on delivery mechanisms, one way vs another, are entirely missing the point. THAT's the really GREAT thing about this space, you have such immense choice to do what is BEST for your unique business requirements and with the unique employees you have.
As we know, every week a new tool is mentioned and released in the opensource community. When you have the flexibility at a MicroService/Container level to take on more risk with trialing new tools, because applications are not Infrastructure dependent, you start to really find new value adds and potential improvements on the day to day services you deliver internally or externally.
Really great post and aligns to everything I have been reading.
p.s. we need to change the language we use in this space for example when talking to people dealing in this area its not storage, its persistence etc....
Posted by: Sean Pedrosa | September 18, 2015 at 05:53 AM
@Sean - thanks bro - keep up your furious learning, and read my Q4 memo carefully. I'm thinking of you (and many of your kindred spirits amongst the SE family :-)
Posted by: Chad Sakac | September 22, 2015 at 07:29 AM
Hi Chad, thanks for it. Just wanted to follow what Matt did with Twitter and VMworld, however it seems not to live anymore? or is the link broken? http://tweets.vmworld.emccode.com/
Posted by: David | October 20, 2015 at 09:25 AM