ClapDB

Use Cloud-First Over Cloud-Native: Rethinking the Value of Cloud Computing

Leo

Cloud-native, as the name suggests, refers to software or services designed specifically for the cloud. However, since the term was coined, few stateful services have truly been “native” to the cloud. On the contrary, their deployment costs are often many times higher than on traditional servers. This is absurd. The original goal of the cloud was to reduce costs and improve efficiency. Today, we can set aside “efficiency” for a moment, as “cost reduction” has become an empty promise. This prompts industry professionals to reflect: is cloud-native a step forward or a step backward?

To answer this, we need data: the same price with better performance, or the same performance at a lower price, is progress. Otherwise, it’s regression. Currently, stateful services deployed using cloud-native approaches neither perform well nor are cost-effective. Such an approach is unworthy of being called “cloud-native” and should rather be termed “cloud-inefficient.”

cloud-computing

The Essence of Cloud Computing

In simple terms, cloud providers purchase a large number of servers and, using the internet as a medium, offer resource rental services on a pay-as-you-go basis, providing “elasticity.” What does this “elasticity” mean for users? To make it easier to understand, let’s compare it to everyday travel solutions:

  1. Buying a Car: If you frequently need a car, have ample funds, and require customization, buying a car is a great option.
  2. Renting a Car: If you rarely need a car but occasionally require one for long periods, renting is cost-effective and convenient.
  3. Hailing a Ride: If you only need a car occasionally or are on a tight budget, hailing a ride is the best choice.

From a cost perspective, option 3 has the lowest total cost but the highest cost per use. Similarly, cloud providers buy long-term assets and offer short-term rental services. Beyond hardware costs, cloud providers also bear various management costs and need to ensure profitability. Therefore, cloud computing doesn’t inherently make computing cheaper; instead, it can make it more expensive.

The Real Benefit: Elasticity

The only way users can genuinely feel the “cost reduction” is through elasticity: paying a higher cost per use when needed but releasing resources when not in use, thus reducing overall costs. But can “cloud-native” truly leverage this elasticity?

cloud-native

What is Cloud-Native?

“Cloud-native” refers to technologies that empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. Essentially, cloud-native is a set of technologies that ensure software can be deployed in containers.

For stateless services, cloud-native can indeed improve availability and reduce costs. However, for stateful services, the situation is entirely different.

Are Stateful Services Truly Suitable for Cloud-Native?

For stateful services like data warehouses or databases, Kubernetes provides StatefulSets and Persistent Volumes for cloud-native deployments. However, options for persistent volumes are limited on cloud platforms. For example, on AWS, the choices are primarily EBS or EFS. Using EBS significantly increases the total cost compared to deploying the same software on traditional servers, making EBS-based stateful services unsuitable for cloud-native.

Beyond EBS: Other Issues

  1. Cloud-Inefficient Architectures: Traditional stateful services, designed for single-machine systems, are not inherently scalable and carry the legacy of an older era. This includes share-nothing architectures and local computation preferences, which lead to resource mismatches and inefficiencies.
  2. Complex Architectures and Resource Wastage: Many stateful services are designed following the KISS principle, separating roles such as proxy, query node, and meta server. This complexity increases server and maintenance costs, making scalability difficult.

Given these inherent “genetic defects,” it’s no surprise that so-called “cloud-native” solutions often exhibit “cloud-inefficiency.”

Symptoms of Cloud-Inefficiency

  1. Fortune Telling for Resource Planning: Users must estimate virtual machine sizes based on data growth and workload, often resulting in over-provisioning.
  2. High Bills: Without leveraging elasticity, costs skyrocket as resources remain allocated even when not in use.
  3. Manual Intervention for Scalability: Despite using IaC (Infrastructure as Code), services often require manual intervention for scaling, undermining the promise of automation and efficiency.
  4. Expensive and Inefficient: For many, cloud-inefficient services result in higher costs and poorer performance.

A New Approach: Cloud-First

We propose a new architectural principle: CloudFirst.

Checkout the article for the CloudFirst Architecture detail.

rack

Conclusion

Unlike cloud-native, Cloud-First focuses on maximizing the elasticity of cloud computing, shedding components that mimic traditional computing resources. Adopting Cloud-First means developers must abandon much of their existing code, dependencies, and instincts. This paradigm shift aims to optimize costs and truly achieve the promise of cloud computing: cost reduction and efficiency.

In conclusion, stateful services cannot benefit from cloud-native architectures and require a Cloud-First approach to achieve cost-effectiveness and efficiency. Stay tuned as we share more about our Cloud-First designed, next-generation data warehouse: ClapDB.

← Back to Blog