A Comprehensive Guide to Cloud Computing: Deployment, Services, and Providers (Part 1)

Author: Aleksandr Volochnev

DataStax
Building Real-World, Real-Time AI
9 min readJun 1, 2022

--

The advantages of deploying your application to the cloud are endless. From elasticity to scalability, deploying your application to the cloud means you get the benefits of seamless data integration, easy management, and distribution. In this two-part series, we discuss cloud computing, Google Cloud Platform, Google Kubernetes Engine (GKE), and how to go cloud-native by hooking a PetClinic demo application up to GKE.

In this first post of a two-part cloud-native series, you’ll learn all about cloud computing: history, principles, cloud deployment models, cloud service models, and different cloud providers available in the market. In the second post, you’ll go hands-on with deploying a demo K8 app powered by Kubernetes to the cloud using Google Cloud Platform (GCP).

GKE is a managed Kubernetes environment on the Google Cloud Platform (GCP) which allows you to take your K8 applications to the cloud. You can use other cloud services like Amazon Web Services (AWS) and Azure. But we’ll be using GKE in our hands-on tutorial because others may charge a usage fee, while GCP offers a $300 free credit when you sign up. Plus, GCP has a lot of educational resources, and you can get the hang of it easily if you’re just starting out.

Since applications need to store data, we’ll be using Cassandra, a highly-scalable NoSQL database. It can handle massive volumes of data with zero downtime, making it the perfect companion for mission-critical cloud applications.

However, deploying Cassandra clusters takes at least a few hours, or a few days for a big cluster. This is why we’re using DataStax Astra DB, the multi-cloud Cassandra-as-a-Service, for this tutorial so you can deploy Cassandra clusters, no matter the size, in one click.

Astra DB reduces the deployment time because it radically simplifies database and streaming operations by automating tuning and configuration. So, you don’t have to manage and maintain Cassandra independently but leave it up to the DataStax team–top level Cassandra experts.

If you don’t prefer Database as a Service (DBaaS) and you’d like complete control over the process, you can use open-source Cassandra or K8ssandra. This will allow you to deploy your version of the technologies to the cloud.

In Part 1 of this post, we’ll get started with the basics:

  • Cloud computing overview
  • Different cloud deployment models
  • Different cloud service models
  • Cloud providers and services

Cloud computing overview

Cloud computing is defined as the on-demand availability of the computer system resources, especially data storage (cloud storage) and computing power, without direct active management by the user. It was first introduced in 2006 with the creation of Amazon Web Services (AWS) and Elastic Cloud Computing.

In other words, you outsource the data storage and computing infrastructure to dedicated cloud service providers. This way, you can focus on developing your apps instead of dealing with downtimes.

Cloud also provided an ability to scale with ease, going from 10 servers to a thousand within minutes. This degree of scale was unimaginable before.

A brief history of cloud computing

Amazon came up with the concept of cloud services when they realized that they needed adaptable infrastructure to keep up with the varying demand. For instance, the demand for books would increase during the holidays and drop during the other seasons.

The traditional in-house infrastructure management was cumbersome as it took them a long time to scale or downsize their infrastructure according to their needs. This led to losses as Amazon couldn’t respond to customers and fulfill their orders on time due to a shortage of servers.

Conversely, if they upgraded their infrastructure to incorporate more servers, they paid extra for idling servers, resulting in losses. So, Amazon decided to sell the computation power of servers to other businesses when they didn’t need it to make a profit, and this was how cloud services were born.

In short, cloud services provide the flexibility and computing power you need on-demand without the added headache of maintaining the infrastructure.

Principles of cloud computing

There are plenty of lists online that talk about the main principles of cloud computing, but in our opinion, these principles are the most important and beneficial for everyone.

  • On-demand self-service: You don’t have to make calls or wait for your service provider to increase your server counts. Using cloud services is akin to purchasing things at a supermarket; you can scale or cut down on the services without additional actions and pay for the services according to the usage.
  • Rapid flexibility: Cloud services allow you the ability to change the size of your infrastructure rapidly. For instance, when we did a K8ssandra workshop at KubeCon in 2021, we had to upgrade the number of servers to accommodate the participants. So, we used cloud services to scale our infrastructure for the duration of the workshop. While traditional services would have taken us days, cloud services made sure we got what we needed in less than an hour.

    We were scaling from zero servers to a thousand and then back to zero within a very short period of time. This meant we didn’t have to overpay for infrastructure and still be able to provide a server for each attendee to experiment with.
  • Resource pooling: Cloud services allow you to share resources with others which helps you save money in the long run. It’s akin to sharing your living space with flatmates, so your rent comes down considerably. This doesn’t mean cloud services don’t provide dedicated resources. You’ve got the option of dedicated servers as well, but in most instances, businesses prefer to use shared resources as they help save money in the long run.
  • Elastic Scalability: This is related to rapid flexibility, and it means you can add or remove as many servers as you want almost instantly. The best part is that if you tell it to, the data center will automatically adapt to changes in the traffic and add or remove servers according to the influx of traffic.
  • Pay as you go: In the traditional ecosystem, you’d have to wait several months for additional servers and equipment. But with cloud services, you pay as you go and as mentioned earlier, the data center adds or removes services according to your needs. For example, Amazon Web Services’ Lambda Serverless functions measure your consumption down to microseconds, and you pay only for consumption without any overpaying.
  • Global availability: You can easily set up a server in any part of the world. In fact, you can set up servers close to your location to save costs while enjoying faster speed.
  • Programmable management: The most important benefit of having cloud services is that you can set up an auto-scaling program that will adjust the computational power of the infrastructure. So, your cloud provider will change the number of servers or network configuration based on a schedule, application metrics, management scripts, or all of them.

Different cloud deployment models

Figure 1. Cloud deployment models.

Cloud deployment models identify the specific type of cloud environment based on the ownership, the nature of the cloud, and its purpose. They are:

  • Public cloud: An open cloud system where anyone can purchase computational power or storage online. Examples include AWS, Azure, and Google Cloud Platform.
  • Private cloud: If your network is hosted on a private cloud, the computing services are offered only to select users instead of the general public. Unlike public clouds, where resources are shared, private clouds don’t share resources and are usually used by large organizations with high security needs. An example is OpenStack.
  • Hybrid cloud: You’re using a hybrid cloud setup if you’ve got a setup of in-house servers and rely on shared resources to meet your computational needs. One of the biggest advantages of a hybrid cloud system is that it allows you the flexibility of a public cloud and lets you maintain sensitive data on-premises. But the drawback is that you’ll have to maintain and pay for the in-house hardware. So, assess your needs thoroughly before switching to a hybrid cloud solution.
  • Multi-cloud: Some companies prefer to distribute their workloads over servers from different companies. This setup is called a multi-cloud setup, and it’s beneficial because the system becomes disaster tolerant.

    In other words, if your company is using AWS and Azure and one of the services fails for a reason, you can rely on the other service provider to scale their services according to your needs. It can get expensive, but multi-cloud deployment is your solution if you want a bulletproof strategy.

    With multi-cloud, you can also take advantage of varying prices of different cloud providers. For example, the same workload may bring very different costs as it’s executed on different providers.
Figure 2. Cassandra cloud deployments.

Cassandra is platform-agnostic and cloud-native, as illustrated in Figure 2. It perfectly supports all the primary features of cloud deployment; you can geographically distribute it and become a multi-cloud and hybrid cloud simultaneously.

Three types of cloud service models

Figure 3. Cloud service examples.

Based on responsibility-sharing, there are three kinds of cloud service models. All of the models mentioned below share responsibilities to some degree, but if you want to host a data center and maintain everything, you should go for a private cloud.

Although it guarantees security, you’ll have to deal with the downsides of maintenance, incur power supply costs, and build a strong department to deal with unfavorable contingencies.

Figure 4. Cloud service models.
  • Infrastructure-as-a-Service (IaaS): APIs that abstract various low-level details of underlying network infrastructure like physical computing resources, location, data partitioning, scaling, security, and backup.

    If you don’t have the resources to maintain and manage your network and security, you can outsource the lower layers to vendors and focus on other crucial operations.
  • Platform-as-a-Service (PaaS): Consumer-created or acquired applications created using libraries, services, and tools supported by a provider and deployed on the cloud infrastructure.

    Here, you focus only on developing an application and not worry about deploying it. But now, the focus has shifted more to using Containers-as-a-Service as they contain software packages with the necessary elements to run in any environment.
  • Software-as-a-Service (SaaS): Applications running on cloud infrastructure. The applications are accessible from various client devices or through a thin client interface like a web browser or a program interface.

    Here, you allow the vendor to take care of everything from applications to networking. So, when you use applications like Shopify, you don’t have to worry about your system’s computational power or capabilities as the company will take care of everything.

    Companies in recent years are using a mixed approach in most cases, running IaaS, PaaS, and SaaS simultaneously.
Figure 4. Cloud provider competitive positioning.

Amazon was the first cloud service provider and continues to reign as the market leader today. Microsoft is also catching up, and from the chart above, we can see that there are a lot of players in the cloud service provider space. So, you can use any service provider to take your K8 apps to the cloud depending on your computational needs. However, for this tutorial, we’ll use the Google Cloud Platform (GCP), which we will discuss in Part 2 of the post.

Conclusion

In Part 1 of this post, we covered cloud computing fundamentals. In Part 2, we will discuss how to deploy your K8 app into the cloud with GCP with a hands-on workshop to deploy applications on GKE1 and GKE2.

For more workshops on Cassandra, check out DataStax’s Academy on GitHub and DataStax Devs YouTube channel. If you have any specific questions about Cassandra, join the DataStax Community and get answers from the experts or chat with us on Discord.

Follow the DataStax Tech Blog for more developer stories, and DataStax Developers on Twitter for the latest news about our developer community.

Resources

  1. Astra DB
  2. Google Kubernetes Engine
  3. Amazon Web Services
  4. Microsoft Azure
  5. YouTube Tutorial: Taking your K8 App to the Cloud
  6. Github Tutorial: Taking your K8 App to the Cloud
  7. Join our Discord: Fellowship of the (Cassandra) Rings
  8. DataStax Community Platform
  9. DataStax Academy
  10. DataStax GitHub
  11. DataStax Certifications
  12. DataStax Workshops
  13. DataStax Developers Twitter
  14. DataStax Medium
  15. DataStax YouTube Channel

--

--

DataStax
Building Real-World, Real-Time AI

DataStax provides the real-time vector data tools that generative AI apps need, with seamless integration with developers' stacks of choice.