DEV Community

Cover image for Cloud Computing
Madhav Ganesan
Madhav Ganesan

Posted on • Edited on

Cloud Computing

What is cloud computing?

It refers to the use of remote servers, usually hosted on the internet, to store, manage, and process data rather than relying on local servers or personal computers.

Hosting

It refers to the service that allows individuals or organizations to make their websites accessible on the internet. It involves storing your website’s files (such as HTML, CSS, images, etc.) on a server that is connected to the internet, ensuring your website can be viewed by visitors.

Types of Hosting

1) Dedicated Server Hosting

  • A website gets an entire physical server dedicated to it.
  • It requires advanced technical knowledge or managed services. It gets full access to server resources (CPU, RAM, storage).
  • It provides high level of control and customization.
  • It is suitable for large-scale applications or high-traffic websites.
  • Enhanced security.

2) VPS (Virtual Private Server) Hosting
A physical server is divided into virtual servers using virtualization technology, providing dedicated resources to each user.
It acts like a dedicated server but on a smaller scale.
It is cost-effective compared to dedicated hosting.

A VPS is essentially a virtualized environment similar to a VM on your laptop, but it's hosted on a remote server for production use and accessible via the internet. It provides isolated, dedicated resources for hosting websites or running applications, making it more reliable for real-world use cases compared to local VMs.

Image description

3) Shared Hosting

  • Multiple websites share the resources of a single physical server
  • Resources like CPU, RAM, and storage are shared among users.
  • Limited customization and control.
  • If one site experiences high traffic, others may suffer ("bad neighbor effect").
  • Cost-effective for small websites.

Image description

4) Cloud Hosting

  • Websites or applications are hosted on a network of interconnected servers (the cloud) rather than a single physical server.
  • Resources like storage and processing power are scalable.
  • Pay-as-you-go pricing model.
  • High redundancy and availability.

Image description

Types of Cloud Services:

Infrastructure as a Service (IaaS)

It provides virtualized computing resources over the internet.
For every Iaas, it has four components:

a) Compute
Ex. EC2 Virtual Machine
b) Storage
Ex. EBS Virtual Hard Drives
c) Database
Ex. RDS SQL Databases
d) Networking
Ex. VPC Private Cloud Network

Examples:
Amazon Web Services (AWS) EC2
Microsoft Azure Virtual Machines
Google Cloud Compute Engine

It is the services that sit on top of IaaS and enable you to build applications to support the business.

Platform as a Service (PaaS):

It offers a platform allowing users to develop, run, and manage applications without worrying about infrastructure.

Examples:
Heroku, Vercel, AWS Elastic Beanstalk

Software as a Service (SaaS)

It delivers software applications over the internet on a subscription basis. Users access the software through a web browser, which means they don’t need to install or maintain any hardware or software locally.

Examples:
Microsoft Office 365, Gmail
Zoom, Microsoft Teams, Salesforce

Image description

Cloud Service Providers (CSP)

They are companies that offer cloud computing services, including storage, computing power, databases, machine learning, and other resources, over the internet. These services allow businesses and individuals to scale resources dynamically without owning physical hardware.

Popular Cloud Service Providers (CSPs)

Tier 1:

Image description

Tier 2:

Image description

Tier 3:

Image description

Cloud Platform

It is the environment or suite of tools and services provided by a CSP to developers, businesses, and users for building, deploying, and managing applications in the cloud. The platform includes the specific tools, APIs, and technologies a CSP offers.
Ex. HashiCorp, Heroku, Vercel, Linode

Deployment models of cloud computing:

Public cloud (Cloud Native)

It is a cloud infrastructure that is owned and operated by a third-party cloud service provider, which delivers computing resources such as servers, storage, and applications over the internet.
Everything is built on the CSP

Private Cloud (On-Premise)

It is a cloud infrastructure dedicated exclusively to a single organization. It can be managed internally by the organization.
Ex. Openstack

Hybrid Cloud

It combines both public and private clouds, allowing data and applications to be shared between them. This model enables businesses to take advantage of both the scalability of the public cloud and the control and security of the private cloud.

Cross Cloud

It refers to the use of multiple cloud service providers (CSPs) or cloud environments (public, private, or hybrid clouds) simultaneously, with the goal of optimizing performance, cost, flexibility, or redundancy. It involves integrating or managing workloads and applications across different cloud platforms, enabling a business to avoid reliance on a single cloud provider.

Scaling

Horizontal Scaling (Scale Out)

It involves adding more machines (nodes) to a system to distribute the load.

Example:
It adds more servers to a cluster.

Use Case:

  • Web applications with heavy traffic (e.g., social media platforms).
  • Systems requiring high availability or disaster recovery.
  • Databases like NoSQL (e.g., MongoDB, Cassandra) that support distributed data.

Image description

Vertical Scaling (Scale Up)

It involves increasing the resources (CPU, RAM, storage) of an existing machine to handle more load.

Example:
Upgrading a server’s processor or memory.

Use Case:

  • Applications with tightly coupled processes or stateful applications.
  • Relational databases like MySQL or PostgreSQL where scaling horizontally is complex.
  • Systems where simplicity is prioritized over scalability.

Image description

Serverless Compute

  • It refers to a cloud computing model where developers can run applications or functions without managing the underlying infrastructure.
  • The term serverless doesn't mean servers are absent but that the cloud provider fully manages server provisioning, scaling, and maintenance, abstracting these tasks from developers.
  • It can scale automatically to handle increased loads and scale down when demand is low. Ex. AWS Lambda

Containerization (Write once, run anywhere)

It is a technology that packages an application and its dependencies into a single unit called a container. These containers run consistently across various environments, whether it’s a developer’s laptop, a testing environment, or production servers.

Image description

It is a standardized unit of software that encapsulates : Application code, Runtime environment (e.g., programming languages, libraries), System tools and dependencies

It shares the host operating system's kernel but remain isolated from other containers and the host system.

Image description

Ex. Docker, Podman

Orchestration

It refers to the automated management, coordination, and scheduling of multiple containers. It ensures that applications made up of many interdependent containers run efficiently, reliably, and at scale.

Ex. Kubernetes(K8s), Docker Swarm, Apache Mesos

CI/CD (Continuous Integration/Continuous Deployment)

It is a set of practices and tools that enable developers to automate and streamline the processes of integrating code, testing, and deploying software. It forms the backbone of modern DevOps workflows, ensuring faster and more reliable delivery of software.

Key Components of CI/CD

Continuous Integration (CI):
It automates the process of integrating code changes from multiple developers into a shared repository.

Continuous Deployment (CD):
It automates the release of code to production after passing all stages of the CI pipeline.

Workflow

Code Commit: Developers push code changes to a shared repository (e.g., GitHub, GitLab, Bitbucket).
Build Process:
CI tools (e.g., Jenkins, GitHub Actions) compile the code to ensure it builds correctly.
Dependencies and libraries are installed.
Automated Testing:
Unit tests, integration tests, and sometimes UI tests run automatically.
Ensures that the new code doesn't introduce bugs.
Artifact Generation:
If tests pass, an artifact (e.g., a Docker image or compiled binary) is created for deployment.
Staging Deployment:
The application is deployed to a staging or test environment for further testing.
Production Deployment:
For Continuous Deployment: Automatically deployed to production.
For Continuous Delivery: Requires manual approval before deployment.
Monitoring and Feedback:
Post-deployment monitoring ensures the application is performing as expected.
Alerts are sent if issues arise.

Ex. Jenkins, GitHub Actions, GitLab CI/CD, AWS CodePipeline

Stay Connected!
If you enjoyed this post, don’t forget to follow me on social media for more updates and insights:

Twitter: madhavganesan
Instagram: madhavganesan
LinkedIn: madhavganesan

Top comments (0)