Sam Newman, author of Building Microservices, opened the day’s talks by tackling the question directly. He reviewed the different ways that people define cloud native and unpicked whether they were useful.
“It’s a buzz-worthy term that has no real, good, formal definition,” says Sam. “A lot of people conflate many things in the term cloud native. In my talk, I came back down to the sub-characteristics we commonly talk about for cloud-based applications: they’ve got to be built for scale, there must be some concepts of fault tolerance, and they need to have high degrees of automation”.
While there are attempts to build vendor-agnostic, cloud native application platforms, even they are tied to a PaaS or “underlying container orchestrator”. So to be cloud native means to build for the specifics of your chosen platform. Whether it’s AWS, GCE or a private Kubernetes cluster, each has its own peculiarities.
Cloud native comes down to three things:
- Build microservices: before anything else, move to microservices, as they’ll have the biggest impact
- Use existing services: don’t re-implement anything that is available as a cloud-based service
- Automate everything: automated testing, continuous integration, continuous delivery
“I think it’s probably an overloaded term,” says Nicki, “For me, cloud native is really about making sure that the way you approach building your applications makes first class citizens out of being able to efficiently utilize your platform to scale, distribute and manage your systems in an automated way. At the moment, that’s predominantly cloud based“. That’s Nicki Watt’s take