Densify is a cloud optimization service that uses Machine Learning to precisely and continuously align application demands with the right public resources. At the heart of the Densify service is “Cloe,” Densify’s Cloud Learning Optimization Engine, which learns workload patterns and automatically matches them with the optimal cloud services, instance types, and container resource specifications. The result is continuous optimization of supply and demand in the cloud, removing guesswork and human error from the equation, and enabling higher levels of cloud automation.
Cloe is an extremely beneficial application of machine learning from an operational perspective, as the cloud supply and demand landscape is very complex, and it is not possible for humans to manually consider all the data and constraints necessary to make optimal decisions. As a result, organizations buy the wrong cloud services and instance types, creating unnecessary risk and unnecessarily high cloud bills. And from an AI perspective it is an interesting challenge to solve, as it is not sufficient to make educated guesses – the results must be deterministic, auditable, and correct.
Here’s How Cloe Solves Challenges
Cloe is able to solve this challenge through several innovative steps. First, Cloe analyzes raw resource utilization data to learn the meaningful patterns of activity and cannot only understand the amount and type of resources being consumed, but can understand the “personality” of the workload. For example, some workloads are sustained while others are peaky, and some are predictable while others are more random. These are all factors that influence exactly how that workload should be hosted, and the ability to learn these patterns is what enables Cloe to go beyond the simple recommendations of “first generation” cloud optimization tools, which tended to focus more on the bill and less on the workloads themselves.
Next, Cloe then uses benchmarks to normalize this data between different cloud platforms and even different services within cloud providers. This is extremely important, as different services have different performance characteristics; and, to generate the optimal answer, it is necessary to understand how a workload will behave if it is moved to a different provider, service or instance type. Cloe is able to generate more advanced cross-family optimization recommendations, such as moving from a general purpose instance to a compute optimized instance, which has a far higher impact on efficiency. And when combined with knowledge of workload personalities, such as the “peakyness” of an application, this enables even more advanced optimization, such as recommending moving to burstable instances, containers, etc.
Patented Rule Engine
All of this is combined with a patented rule engine that is able to analyze the impact of these types of changes and gauge not only the savings potential, but also the effort to make the change. This is key to enabling full automation: In order to execute any recommendations, it is important to understand whether the recommendation can be done transparently or whether human intervention may be required. For example, in Amazon EC2, it is important to look at an instance’s use of ephemeral storage, EBS optimization, enhanced networking, paravirtualization type, and other factors when determining if a specific optimization action can be fully automated. Get this step wrong, and humans will need to review every recommendation that is made.
Making Applications Self-Aware
Cloe ultimately uses all of these capabilities to make applications “self-aware” and automatically embeds the key analysis findings back into the cloud objects themselves. This not only makes the cloud objects more intelligent, but provides transparency across the organization, allowing applications teams, CloudOps, and finance to work seamlessly together with a single point of truth. And for those who want to completely close the loop, Cloe integrates directly with technologies like Terraform to actually automate the optimization actions. This enables full “self-optimizing” applications, where application components intelligently optimize themselves based on their learned behavior.