What is Cloud Native?
As the Cloud has evolved, smart organizations have rethought their application development and delivery models to best use the advantages of cloud architectures. First-generation cloud workloads in Amazon AWS, Microsoft Azure, Google Cloud Engine and other clouds were primarily a “lift and shift” exercise. These efforts moved on-prem apps and infrastructure into a commodity unmanaged platform for cost savings in both hardware spend and IT overhead.
This “Cloud Native” approach takes advantage of the architecture of the cloud, in combination with microservice architecture and container technologies to rethink what’s possible with application architectures in a cloud-based world. Cloud native app strategies has created a revolution in IT, but requires a new way of thinking to best take advantage of the power of the cloud.
3. Dynamic Application Management with Supervisors
With composed and connected microservices running across a containerized infrastructure, it’s important to manage these for predictable results. The third characteristic, dynamic management, provides a supervisory layer on top of the services to give operations teams a view into the inner workings of the applications. A cloud native supervisor looks at the components of an application infrastructure, across both the cloud platform, container status and contents, and service state to understand both current configuration state, service status and other critical elements of the ecosystem. Defects found in the current state can then be identified and corrected by the appropriate dev or operations team for remediation.
Successfully Delivering Cloud Native Apps
At Chef we believe the success of delivering cloud native applications hinges on four core facets:
- Composability: Components can be easily composed and connected with specific service requirements
- Flexibility: Not limited (or appears to not be limited) from the perspective of the Developer.
- Programmability: API first approach to provisioning, deployment, and management
- Frictionless: The infrastructure is hidden from the perspective of the Developer.
These four characteristics of cloud native applications are key to not only a successful initial code deployment, but enable the agile and continuous delivery of value to customers.
As teams begin to envision applications that are cloud native at birth, the next question to answer is “how do we actually build these things?” Teams need to think about how to build, deploy, and manage cloud native applications differently from traditional applications. Cloud native architectures are well suited to the DevOps practices of lean and agile, where new discrete features are built quickly, deployed and tested frequently, and delivered to customers as rapidly as possible. Every day is “Day 1” in a cloud native organization, with innovation and velocity the keys to success.
Build. Deploy. Manage. The Cloud Native Journey
Application development processes need to evolve to thrive in a cloud native world. The basic workflow of build-deploy-test-fix remains the same, but containerized images free up developers to begin building to a known platform. Find an image in a registry, download it locally and start coding. As you check in code, continuous integration automatically triggers new builds that can be tested in the container environment locally or in your cloud infrastructure.
As the operations team sees new applications appear in the container registry, they can test the app in the containerized environment. Applications are packaged for the environment by design, and can be tested to ensure the app and dependencies work properly. And the container run times, whether Docker, Kubernetes, Cloud Foundry or others can be easily moved from testing into production deployment, and across nodes to enable scale. The decoupling of runtime from platform brought about by containers and the cloud makes deployment flexible and scalable.
Containerized app runtimes and cloud-based platforms make scale nearly infinite. Cloud native apps allow for actionable insights to be gathered by the ops team to gauge the health of the apps and infrastructure. Ops team members can understand the performance of application and add additional resources or nodes, identify unhealthy nodes in the system, and spin down resources as demand changes. The ability to dynamically manage application cloud infrastructure creates optimal experiences for customers with improved performance, new features, and fast detection and correction of failures.
Delivering Cloud Native Applications with Habitat from Chef
For organizations looking to start moving to a cloud native world, or app-centric teams who want to automate delivery processes to increase velocity, Habitat Builder automates the app delivery process from code to container to production.
Developers connect their GitHub and Docker Hub accounts to Habitat, provide a few lines of configuration code, and go back to coding. As code changes are committed to GitHub, Habitat Builder then takes care of packaging, building, and exporting your app as a fully-packaged Docker container. These packages include Habitat Supervisor, which allow apps built in Habitat to be deployed quickly and easily, but also to provide insights back to the operator to ensure apps are delivering great experiences to end users.