The Journey to Cloud Native
Software engineering and developer communities are driving the market for cloud consumption and leading each industry into a new era of software-defined disruption. There are no longer questions about elastic and flexible agile development as the way to innovate and reduce time to market for businesses. Open source software plays a key role in the digital transformation taking place to cloud native and understanding how your business strategy needs to address this next disruption in software development is crucial to the success of your business.
The Cloud Native Computing Foundation (CNCF) has defined cloud native as:
- 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 the 3rd aspect is very much at the root of how digital transformation will explode over the next several years.
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 cac 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)
- Deploying to different locations (data center(s), availability zones, geo-location constraints)
- 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 Tale of Two Towers
When you’re beginning a journey, it’s important to recognize how you arrived at today and the lessons learned and in retrospective, what you would have done differently. The stack of today is shown below:
This stack is very much about metadata and system of record mindset. Orchestration and management is all about automation of the infrastructure and OSS systems. There is no running code or executable services. This model is all about templates and scripts that must be executed in a specific sequence to ensure minimal configuration drift. All the application code must handle the integration, orchestration, and deployment complexity in code.
The container stack for cloud native development takes a different approach based on all the great experiences and lessons we have learned over the last decade. This stack is shown below:
The cloud native stack will consist of:
- Micro-services architecture
- Distributed cluster and workflow orchestrators and managers
- Containerization – file format will be driven admins and becomes the new metadata
- Infrastructure – scale out infrastructure with lightweight linux and HDFS services
Developer Experience Matters
Shipped is a modern, simple developer experience for cloud native. The project addresses both the developer needs in the build and deploy phases as well as the operations users in the run (monitor and metering) capabilities. Shipped leverages another open source project called Mantl for multi-cloud/data center deployments for a full container platform that supports Kubernetes and Mesos side by side.
The mantl components are shown below.
Mantl is an open source, end to end, integrated stack for running container workloads across multiple clouds. Mantl includes deployment automation and assurance and monitoring. We designed the project to be pluggable and grow into a hybrid platform to support application development and data services. With Mantl, enterprise grade networking (L2-4 and overlay), security (secret, AAA, network), and storage (persistent, object, and ephemeral) capabilities built in.
Mantl address a common problem in application orchestration – multi-orchestrator capabilities. There are several use cases and different types of orchestrators that address these use cases. Mantl’s design is extensible and today supports Mesos/Marathon, and/or Kubernetes, and/or Docker Swarm. What is important in a multi-orchestrator model is unification across the service discovery and load balancing to enable multi-cloud deployments – customer choice.
If you are in Toronto at CloudNativeDay, stop by for demos of Mantl and Shipped as well as FD.io and Calico for enhanced network and security without compromise.