By now, you know that Dell Technologies has joined Cloud Native Computing Foundation (CNCF) as a Platinum member. We’re genuinely excited about this. We see it as an opportunity to contribute our experience in Cloud Native across the breadth of Dell Technologies. Joining CNCF helps us all – industry and practitioners – connect the dots for technologies and methodologies for successful applications natively running from any cloud.
But for all the marketing-shininess of the term “cloud native,” some people are allergic to buzzwords. “Oh, right, another marketing term; where are we in the hype-cycle again?” they think, as they roll their eyes. However, sometimes a term encapsulates an important concept, particularly when it connects several endeavors, and I assert this is among those scenarios.
For example, the word “ecology” was an obscure concept before Rachel Carson wrote Silent Spring; before she used the term, activists concerned about air pollution, farming practices, and environmental issues worked separately. The umbrella word “ecology” recognized that these people shared the same goal: protecting the planet. That made it easier for ecology activists to share interrelated concerns, work together towards common goals, and communicate clearly to outsiders.
In more technical realms, software architects spent decades creating applications before the “gang of four” captured the notion of design patterns. The authors described these fundamentally reusable solutions to commonly-occurring software problems, in their now-classic book Design Patterns: Elements of Reusable Object-Oriented Software. It’s provided guidance to millions of software developers in creating designs with predictable results. Nowadays, it is operational patterns related to as delivering portability, microservices, and continuous integration for any cloud architecture.
Like ecology, cloud native is an umbrella term. It encompasses everything we can do – together! – to create a sustainable cloud ecosystem built around applications.
That’s clearly important to every organization, large or small. Everyone wants to create or operate rugged applications that work all the time. We want dynamically managed software that is scalable, resilient, and built to meet user demands.
Computing environments that are optimized for cloud do just this. Initially, with applications running in data center silos, even with virtualization, applications didn’t change that much. But to make software that’s scalable and resilient in cloud, we need computing environments optimized for cloud operating models. Cloud native computing represents a material change in infrastructure with a focus on interoperability and software-based technologies providing supporting services. These environments will help applications thrive through being able to be portable, collaborate more, scale on demand, consume external APIs, and delegate to (public or private) cloud services when necessary. Applications and infrastructure can then easily take full advantage of cloud, but also handle cloud peculiarities.
And with so many critical enterprise applications running worldwide, few of us can afford to stumble.
To put it simply, when we say cloud native we are talking about an opportunity to optimize not only your applications, but your infrastructure to support these traditional or modern applications. This shift enables you to take advantage of any cloud.
It isn’t as though that is impossible without a buzzword installed. Plenty of enterprise IT departments have done impressive stuff with applications in cloud. They just called it DevOps and containers and open source and whatever other technology was employed in a successful implementation. It took talented people who knew how to glue things together with automation, just as software engineers applied the Decorator design pattern long before it was given a formal name.
The idea, however, is to simplify and bring these capabilities to the masses so that you don’t have to be brilliant – or even particularly experienced with cloud computing – to get outstanding results.
Among the roles of the Cloud Native Computing Foundation are to provide guidance on what services are needed to achieve success; to provide a trusted taxonomy and collaborative components for solutions; and to ensure interoperability. In practical terms, that means supporting application design patterns on cloud architectures: templates and recipes for how to solve common problems that give practitioners more predictability.
Isn’t it more valuable to learn from someone else’s mistakes? If nothing else, it’s useful to learn from companies that have taken an early leap, in order to recognize what a similar project can have on your own operations’ efficiency. We expect this to encourage more contribution to open source projects and to spur collaboration.