Today, majority of organizations who are building modern digital cloud native applications are making the strategic platform investment to containerize these mission-critical, revenue generating applications. The benefits of containerization include faster time to market with new capabilities, application elasticity to easily handle peak demand, and the benefits of portability through hybrid or mulitcloud deployments. Organizations are seeing the benefits: 85% of organizations have become cloud-native and 86% of those are using container platforms for more applications (“Container Adoption Statistics…”).
With success comes growth, and with growth comes challenges of ensuring you can have a scalable platform that will provide capacity needed without overprovisioning. The pace of change is faster than ever before. Organizations need to grow to adjust to the ever-expanding pipeline of applications and lines-of-business who, in turn, want to get the benefits of containerization, while at the same time adapt to handling deployments that can be bi-weekly, weekly or even daily. With every change the platform must provide the resources needed to assure application performance.
Implementing containerized applications and effectively managing the platforms they run at scale is no easy task. Companies can find enterprise level offerings which provide a platform around Kubernetes. However, to determine how much resources an application needs, most organizations rely on spreadsheets and allocation models. This method creates more labor around a manual process to assess capacity requirements and organizations end up over-provisioning to mitigate the risk of possibly running out of resources. These organizations need to slow down the rate of onboarding new or updated services as increased labor plus high overprovisioning will reduce the ROI of containerization. Our customers are overcoming this because Turbonomic is defining resources needed based on actual utilization, optimization of guaranteed resources, and desired service level objectives. It’s a platform that also continuously analyzes the changes in demand, against the tradeoffs of performance, efficiency and cost. Turbonomic’s software will identify how much is needed and define the exact actions to take to optimize both application and cluster level resources, freeing up DevOps and SREs to focus on executing plans of action.
To effectively manage cluster capacity, let’s start with the questions that software needs to answer:
- Which applications or services are in need of more resources, and constrained by either limits, quota or cluster capacity? What are the limits that these specs should be sized to? How does this change the number of nodes required?
- Which applications or services are overallocated in requests, and have guaranteed cluster resources that are not being used? What are the requests that these specs should be sized to? How does executing on these decisions change the number of nodes required?
- How can I simulate more application workload to determine the number of nodes needed? Such as account for horizontal scaling of services (increasing replicas that will use more node resources) or simulate promoting services from Non-prod into Production?
- How do I simulate better distribution of workload across compliant nodes to better utilize the capacity in the cluster?
- How do I simulate some or all of the above factors, so that based on current, projected and historical demand, I understand how many nodes are required? What investment is required, or savings can I achieve by executing this plan?
Turbonomic continuously analyzes the full stack of application components, Kubernetes resources, and underlying infrastructure to provide actions that manage sizing, placement and capacity of resources. These same analytics allow you to run simulations that can answer these questions, all from real data that represents your environment.
Requests and Cluster Capacity Planning
We’ve discussed how requests can be the silent killer of cluster capacity1, but requests do have value in ensuring workloads have a defined guaranteed minimum required resource. Turbonomic analyzes for peak and average usage and applies percentile analysis to define what requests can be resized to. For workloads that define more requests are needed, safely reclaiming these resources not only assures the application will get what it needs, it also allows for those resources to be utilized by other workloads, potentially without needing to add more nodes to the cluster.
1Check out “Kubernetes CPU Throttling: The Silent Killer of Response Time and What to Do About It” to learn more.
Limits, Utilization, and Simulating Demand
This same analysis can help you understand how to safely add a workload to a cluster, and simultaneously optimize an existing workload. In the same plan, you can increase limits to prevent performance issues, decrease requests and limits where not needed, and manage cluster capacity by managing the tradeoffs based on actual utilization.
Turbonomic allows you to control the degree of optimization you want to simulate.
This is important to be able to have a comparison between plans where in one you only allow node scaling and pod redistribution versus a scenario where a workload resizes. This provides the data and analysis to encourage application teams to optimize where the benefits also include identifying cluster capacity that can be used to run more demand.
Today’s microservice applications provide the benefits of agility, portability and faster time to market with new features, but comes as a price of a rapid pace of change that makes capacity planning even more challenging. Relying on only allocation planning models, and you will end up spending more labor and money in over provisioning. Turbonomic can uniquely provide the answers to how many nodes you need by managing the tradeoffs of demand (both allocation and utilization) and supply. When running a plan in Turbonomic you can simulate optimizing your environment to see the impact this optimization has on cluster capacity and simulate onboarding more containerized applications/services to better identify how many nodes are really needed to assure application performance. This simulation capability takes only minutes to run and allows you to project the benefits of our actions when automated, whether your DevOps / SRE teams want to visualize the capacity impact of optimizing cluster resources, or your AppDev team want to see the changes when optimizing container specs. Whether you are simulating taking actions or managing change in your environment, Turbonomic provides you data, decisions and confidence when you are capacity planning your Kubernetes / OpenShift environments.