Cloud Native — What does it mean?
Last week at the Linux Opensource Leadership Summit #lfosls the Cloud Native Computing Foundation, @CloudNativeFdn meet to discuss the last year operating and project support. Their was a lot of questions about what does Cloud Native mean.
When the CNCF started, we had a simple definition for Cloud native:
- Distributed Management and Orchestration
- Micro-services Architecture
The first 2 aspects make perfect sense with the current maturity of development, virtualization, and cloud deployment experience. However they are not really definitions but more components of the architecture. The 3rd definition is very much at the root of what defines a cloud native. What exactly is a Micro-services Architecture?
Micro-services Architecture Defined
A micro-service architecture is a software architecture style where complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These application services are small, highly decoupled and focus on doing a small task.
The figure above further decomposes the architecture into 4 key sub-systems:
- Application Composition — How the application is composed of individual services and the API interface requirements. Most application architectures consist of common software patterns which can be further decomposed into application services focusing on individual tasks.
- Application Delivery — How the application is deployed must be separate from the composition. Application portability is a key business requirement and one of the more reliability methods to achieve this to decouple the application code from the underlying deployment target. This can be accomplished by:
- Deploying the application into different environments (dev, test, prod) each of which can consists of different environments (laptop, server, bare metal, private cloud, or public cloud)
2. Deploying to different locations (data center(s), availability zones, geo-location constraints)
3. Continuous Integration and Continuous Delivery of the application services across environments, location, and hybrid models
- Provide governance, security, networking, and application policy intent frameworks
- Provide common single control panel for running of the services, policy management, and operational support
The @cloudnativefdn is refining the definition along the lines of:
1. Speed of change — Used to refer to this as agility
2. Resilience — The ability to change software quickly and not have it break due to internal or external factors
3. Scale- We’d like to do really big stuff
Cisco Live Europe This Week
Come join Ken Owens, Chris Aniszczyk, Luke Marsden, Ben Sigelman, and Jonathan Boulle Tuesday in #devnet zone at Cisco Live EMEA for the CNCF TOC Panel to learn more about that @cloudnativefdn projects, how to get involved, and what makes a cloud native solution.