DEV Community

Cover image for Cloud Computing
Madhav Ganesan
Madhav Ganesan

Posted 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.

Types of Cloud Services:

Infrastructure as a Service (IaaS)

It provides virtualized computing resources over the internet.
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
Zoom, Microsoft Teams, Salesforce

Image description

Popular public cloud providers:

Amazon Web Services (AWS)
Microsoft Azure
Google Cloud Platform (GCP)
IBM Cloud
Oracle Cloud
Alibaba Cloud
DigitalOcean
Heroku
Vercel
Linode
Enter fullscreen mode Exit fullscreen mode




Deployment models of cloud computing:

Public cloud

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.

Private Cloud

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

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

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.

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)