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.
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.
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.
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
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:
Tier 2:
Tier 3:
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.
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.
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.
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.
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)