Unit 1
Unit 1
to Cloud Computing
(CSE-19CSE445, AIE -22AIE305)
2-0-3-3 by
Dr. V Lakshmi Chetana
Assistant Professor ([Link])
Course Objectives
• This course introduces the basic principles of cloud computing, cloud native application
development and deployment, containerization principles, micro-services and application
scaling.
• It will also equip the students to understand major industry players in the public cloud
domain for application development and deployment.
Course Outcomes
• CO 1: Understand the basic principles of cloud computing.
• CO 2: Apply cloud native application development for containerization and container
orchestration.
• CO 3: Analyze different types of cloud services – Delivery models, Deployment models.
• CO 4: Implement different solution approaches in Cloud – containers in public cloud, setting
up private cloud and convert monolithic applications to containers
Syllabus
Unit 1
Distributed Computing Taxonomy – Cluster, Grid, P2P, Utility, Cloud, Edge, Fog computing paradigms;
Introduction to Cloud Computing – Cloud delivery models (XaaS), Cloud deployment models (Private, Public,
Hybrid); Characteristics of Cloud, Major use cases of Cloud; disadvantages and best practices; Major public
cloud players in the market; Security Issues and Challenges; Cloud Native application development –
Introduction to JavaScript Cloud native application development
Unit 2
Public Cloud – Using public cloud for infrastructure management (compute and storage services), Web
application deployment using public cloud services, and Deploying container images in public cloud,
Overview of cognitive services, Case study on architecting cloud-based solutions for a chosen scenario
Unit 3
Rajkumar Buyya [Link]. Mastering cloud Matthias K, Kane SP. Docker: Up & Running:
computing, McGraw Hill Education;2013. Shipping Reliable Containers in Production. "
O'Reilly Media, Inc."; 2018.
Reference(s)
• Kocher PS. Microservices and Containers. Addison-Wesley Professional; 2018.
• Sarkar A, Shah A. Learning AWS: Design, build, and deploy responsive applications
using AWS Cloud components. Packt Publishing Ltd; 2018.
• Menga J. Docker on Amazon Web Services: Build, deploy, and manage your container
applications at scale. Packt Publishing Ltd; 2018.
• This process is called scalability. This can be done either by increasing the current system
configuration (increasing RAM, number of servers) or adding more power to the configuration.
• Scalability plays a vital role in the designing of a system as it helps in responding to a large
number of user requests more effectively and quickly.
1. Vertical Scaling
2. Horizontal Scaling
Vertical Scaling
• To scale vertically is to scale up or down, and is defined as to add more resources, such as
CPUs, memories, or GPUs, to nodes in a system. Such vertical scaling of existing systems
also enables virtualization technology to be more effective, as it provides more resources
for the hosted set of operating system and application modules to share.
• To scale horizontally is to scale out or in, and is defined as to add more nodes to or
remove nodes from a system in a server, such is also explained as adding new computers
to a distributed software application.
Distributed Computing
⮚ Distributed computing is the method of making multiple computers work together to solve a common
problem. It makes a computer network appear as a powerful single computer that provides large-scale
resources to deal with complex challenges.
⮚ It is a system where multiple computers, often geographically dispersed, collaborate to solve a problem
that is beyond their individual computing capabilities.
⮚ Distributed systems bring many advantages over single system computing. The following are some of
them.
• Scalability
• Availability
• Consistency
• Transparency
• Efficiency
⮚ In a distributed computing system, 'node', is self-sufficient,
meaning it operates independently while also contributing
to the overall goal.
⮚ Each processor has its own local memory and all the
processors communicate with each other over a network.
Distributed Computing Taxonomy
• Under the umbrella term of distributed computing, there are different distributed
architectures like
• Cluster Computing
• Grid Computing
• Other methods.
Cluster Computing
⮚ The term “cluster” refers to the connection of computers or
servers to each other over a network to form a larger
“computer”, which is based on the distributed computing
architecture.
⮚ Such a computing cluster is usually made up of
standardized servers, workstations, or even consumer-grade
PCs, linked to each other over LAN or WAN.
⮚ Some advantages include processing speed, cost efficiency,
Scalability, and increased resource availability.
⮚ One popular implementation of cluster computing is
Google search engine.
• Example: Every time you enter a query into your web browser, the task is actually being
distributed to different nodes in different locations. The nodes conduct their search independently;
no communication between them is necessary. The results are then aggregated and returned to the
user device.
2. High availability (HA) clusters: A collection group that maintains very high Availability.
Computers pulled from these systems are considered to be very much reliable and may not
face downtime, even possibly in any instance.
⮚You typically pay only for cloud services you use, helping you lower your operating costs, run
your infrastructure more efficiently, and scale as your business needs change.
⮚Cloud computing provides a superior alternative to traditional information technology, including
these areas:
• Cost – eliminate capital expenses
• Speed – instantly provision space for development and testing
• Global-scale – scale elastically
• Productivity – increased collaboration, predictable performance, and customer isolation
• Performance – better price/performance for cloud-native workloads
• Reliability – fault-tolerant, scalable, distributed systems across all services
Edge Computing
⮚Edge computing is the process of bringing information
storage and computing abilities closer to the devices that
produce that information and the users who consume it.
⮚Traditionally, applications have transmitted data from smart
devices like sensors and smartphones to a central data
center for processing.
⮚However, the unprecedented complexity and scale of data
have outpaced network capabilities.
⮚By shifting processing capabilities closer to users and
devices, edge computing systems significantly improve
application performance, reduce bandwidth requirements,
and give faster real-time insights.
⮚Some benefits of edge computing.
✔ Reduced latency/increased speed
✔ Improved data security
✔ Increased productivity
✔ Reduced costs
✔ Reliable performance
Fog Computing
⮚ Fog computing extends the concept of cloud computing
to the network edge, making it ideal for the internet of
things (IoT) and other applications that require real-time
interactions.
⮚ Fog computing is defined as the type of computing that
acts a computational structure between the cloud and the
data producing devices.
⮚ The cloud is connected to the physical host via a network
connection in fog computing. The storage capacity,
computational power, data, and applications are located
in this middle space.
⮚ These functionalities focus on the host, place close to it,
and make processing faster as it is done close to where
data is created.
⮚ The goal of fog computing is to improve the overall
network efficiency and performance.
Edge Computing Vs Fog Computing
Edge Computing Fog Computing
• Location: Edge computing processes data • Location: Fog computing extends the cloud
directly at or near the source of data computing model to the edge of the network
generation, such as sensors, IoT devices, or but involves intermediate nodes (fog nodes)
user devices. between the edge devices and the central
cloud.
• Purpose: It aims to reduce latency and • Purpose: It provides additional processing,
bandwidth usage by performing data storage, and networking capabilities closer to
processing tasks locally, thereby enabling the edge devices but not directly on them. Fog
faster decision-making and response times. computing is designed to enhance the
• Scalability: May face challenges with performance and efficiency of edge computing
scalability as each device needs sufficient by offloading some tasks to nearby fog nodes.
processing power. • Scalability: More scalable due to the
• Visualization: Device -> Local Processing intermediate layer that can handle processing
from multiple edge devices.
• Visualization: Device -> Fog Node -> Cloud
Introduction to Cloud
Computing
Cloud Computing
• Cloud computing transforms IT infrastructure into a
utility: It lets you ‘plug into’ infrastructure via the
internet, and use computing resources without installing
and maintaining them on-premises.
• It is the delivery of computing services – including
servers, storage, databases, networking, software,
analytics, and intelligence – over the Internet (“the
cloud”) to offer faster innovation, flexible resources, and
economies of scale.
• Cloud computing is the on-demand delivery of computing
resources (such as storage and infrastructure), as services
over the internet with pay-as-you-go principle.
• It eliminates the need for individuals and businesses to
self-manage physical resources themselves, and only pay
for what they use.
Without Network:
▪ Users cannot access their cloud
services.
▪ Applications, data, and users cannot
move between clouds.
▪ The infrastructure components that must
work together to create a cloud cannot.
Cloud Computing Reference Architecture: NIST
The below figure presents an overview of the NIST cloud computing reference architecture, which identifies the
major actors, their activities and functions in cloud computing. The diagram depicts a generic high-level
architecture and is intended to facilitate the understanding of the requirements, uses, characteristics and standards
of cloud computing.
When Cloud Computing should be used?
• If your organization experiences any of the following, you’re probably a good candidate for cloud computing:
✔ Large volumes of data that are overwhelming your on-premises data storage resources
• Service Models
• Deployment Models
Cloud Service Models
• There are three main types of cloud computing service models
• Each model provides different levels of control, flexibility, and management for users.
Infrastructure as a Service (IaaS)
• Definition: IaaS provides virtualized computing resources over the internet. Users can rent infrastructure
such as servers, storage, and networking on a pay-as-you-go basis.
• Examples:
• Amazon Web Services (AWS) EC2: Offers virtual servers that you can configure with various
operating systems and software.
• Microsoft Azure Virtual Machines: Allows users to deploy and manage virtual machines on a large
scale.
• Google Cloud Platform Compute Engine: Provides scalable virtual machines running in Google’s
data centers.
Note: A company that needs to run its own custom applications but doesn't want to invest in physical
hardware can use IaaS to rent the necessary infrastructure and scale up or down as needed.
Platform as a Service (PaaS)
• Definition: PaaS provides a platform allowing customers to develop, run, and manage applications
without dealing with the underlying infrastructure. It includes services such as development tools,
database management, and middleware.
• Examples:
• Heroku: A cloud PaaS that supports several programming languages and allows developers to
build, run, and operate applications entirely in the cloud.
• Google App Engine: Lets developers build and deploy applications on Google’s infrastructure,
automatically managing the scaling and infrastructure.
• Microsoft Azure App Services: Provides a platform for building, deploying, and scaling web apps
and APIs quickly.
• Note: A development team that wants to focus on writing code and deploying applications without
worrying about managing servers, storage, or networks can use PaaS to streamline their workflow.
Software as a Service (SaaS)
• Definition: SaaS delivers software applications over the internet, on a subscription basis. Users can
access the software via a web browser, without needing to install or maintain it locally.
• Examples:
• Google Workspace (formerly G Suite): Provides productivity tools such as Gmail, Docs, Drive,
and Calendar.
• Salesforce: A customer relationship management (CRM) platform that allows businesses to manage
customer data and interactions.
• Microsoft Office 365: Offers cloud-based versions of Office applications like Word, Excel, and
PowerPoint, along with other services like email and OneDrive.
• Note: A business that needs productivity software for its employees can subscribe to SaaS services to
ensure they always have the latest features and updates without dealing with installations and
maintenance.
Summary
• IaaS: Provides virtualized computing resources
over the internet. (Examples: AWS EC2, Azure
Virtual Machines, Google Cloud Compute
Engine)
• Public Cloud
• Private Cloud, and
• Hybrid Cloud
Public Cloud
• Public clouds are run by third-party cloud service providers.
• They offer compute, storage, and network resources over the internet, enabling companies to
access shared on-demand resources based on their unique requirements and business goals.
• Advantages of the Public Cloud Model
• Minimal Investment: Because it is a pay-per-use service, there is no substantial upfront fee,
making it excellent for enterprises that require immediate access to resources.
• No setup cost: The entire infrastructure is fully subsidized by the cloud service providers, thus
there is no need to set up any hardware.
• Infrastructure Management is not required: Using the public cloud does not necessitate
infrastructure management.
• No maintenance: The maintenance work is done by the service provider (not users).
• Dynamic Scalability: To fulfill your company’s needs, on-demand resources are accessible.
• They provide greater control, security, and management of data while still enabling internal users
to benefit from a shared pool of compute, storage, and network resources.
• Advantages of the Private Cloud Model
• Better Control: You are the sole owner of the property. You gain complete command over service
integration, IT operations, policies, and user behavior.
• Data Security and Privacy: It’s suitable for storing corporate information to which only authorized
staff have access. By segmenting resources within the same infrastructure, improved access and
security can be achieved.
• Supports Legacy Systems: This approach is designed to work with legacy systems that are unable
to access the public cloud.
• Customization: Unlike a public cloud deployment, a private cloud allows a company to tailor its
solution to meet its specific needs.
Scalability and
High High High
Flexibility
[Link]-Demand Self-Service: With cloud computing, you can provision computing services, like server
time and network storage, automatically. You won’t need to interact with the service provider. Cloud
customers can access their cloud accounts through a web self-service portal to view their cloud
services, monitor their usage, and provision and de-provision services.
2. Broad Network Access: Another essential cloud computing characteristic is broad network access.
You can access cloud services over the network and on portable devices like mobile phones, tablets,
laptops, and desktop computers. A public cloud uses the internet; a private cloud uses a local area
network. Latency and bandwidth both play a major role in cloud computing and broad network access,
as they affect the quality of service.
3. Resource Pooling: With resource pooling, multiple customers can share physical resources using
a multi-tenant model. This model assigns and reassigns physical and virtual resources based on
demand. Multi-tenancy allows customers to share the same applications or infrastructure while
maintaining privacy and security. Though customers won't know the exact location of their resources,
they may be able to specify the location at a higher level of abstraction, such as a country, state, or
data center. Memory, processing, and bandwidth are among the resources that customers can pool.
4. Rapid Elasticity: Cloud services can be elastically provisioned and released, sometimes
automatically, so customers can scale quickly based on demand. The capabilities available for
provisioning are practically unlimited. Customers can engage with these capabilities at any time in
any quantity. Customers can also scale cloud use, capacity, and cost without extra contracts or fees.
With rapid elasticity, you won’t need to buy computer hardware. Instead, can use the cloud
provider's cloud computing resources.
5. Measured Service: In cloud systems, a metering capability optimizes resource usage at a level
of abstraction appropriate to the type of service. For example, you can use a measured service for
storage, processing, bandwidth, and users. Payment is based on actual consumption by the
customer via a pay-for-what-you-use model. Monitoring, controlling, and reporting resource use
creates a transparent experience for both consumers and providers of the service.
• Other Cloud Computing Characteristics: While not among the NIST essential characteristics,
cloud computing offers a variety of other characteristics that can benefit customers.
6. Resiliency and Availability: Resilience in cloud computing refers to the ability of a service to
recover quickly from any disruption. Cloud resiliency is measured by how fast its servers,
databases, and networks restart and recover after any damage. To prevent data loss, cloud services
create a copy of the stored data. If one server loses data for any reason, the copy version from the
other server restores.
Availability is a related key concept in cloud computing. The benefit of cloud services is that you can
access them remotely, so there are no geographic restrictions when using cloud resources.
7. Flexibility: Companies need to scale as their business grows. The cloud provides customers with
more freedom to scale as they please without restarting the server. They can also choose from several
payment options to avoid overspending on resources they won't need.
8. Remote Work: Cloud computing helps users work remotely. Remote workers can safely and
quickly access corporate data via their devices, including laptops and smartphones. Employees who
work remotely can also communicate with each other and perform their jobs effectively using the
cloud.
Major Use Cases of Cloud
Cloud computing offers a wide range of services and solutions that can be applied to various use
cases across different industries. Here are some major use cases:
1. Data Storage and Backup: Companies and individuals use cloud storage to save and back up
their data securely. Cloud storage solutions provide scalable and reliable storage options.
2. Application Hosting: Businesses host their applications on cloud platforms to make them
accessible from anywhere, reduce infrastructure costs, and scale resources as needed.
Examples: Web applications like e-commerce sites hosted on AWS or Azure, SaaS applications
like Salesforce.
3. Disaster Recovery: Cloud services offer disaster recovery solutions to ensure business continuity in case
of hardware failures, natural disasters, or other disruptions.
4. Big Data and Analytics: Organizations use cloud computing to process and analyze large volumes of data
quickly and cost-effectively, leveraging powerful cloud-based analytics tools.
5. Machine Learning and AI: Cloud platforms provide powerful tools and infrastructure for building,
training, and deploying machine learning and artificial intelligence models.
6. Development and Testing: Developers use cloud environments to build, test, and deploy applications.
Cloud-based development tools offer scalable resources and collaborative features.
Examples: Content Delivery Networks (CDNs) like Cloudflare, AWS CloudFront, Akamai.
8. Internet of Things (IoT): Cloud computing supports IoT by providing platforms for managing, analyzing, and
storing data from connected devices.
Examples: AWS IoT Core, Azure IoT Hub, Google Cloud IoT.
9. Collaboration Tools: Cloud-based collaboration tools help teams work together, share files, and communicate
in real-time from different locations.
10. Gaming: Cloud gaming services allow users to play video games over the internet without needing high-end
hardware, as the games run on powerful cloud servers.
• Website: [Link]
• Use Cases: Web and application hosting, data storage, machine learning, big data analytics.
2. Microsoft Azure: Azure is a major cloud provider that offers a broad range of services
similar to AWS. It is known for its strong integration with Microsoft products and services.
• Key Services: Virtual Machines, Azure Blob Storage, Azure SQL Database, Azure Functions (serverless
computing), Azure Kubernetes Service (AKS).
• Website: [Link]
• Website: [Link]
• Use Cases: Data analytics, machine learning, application development, containerized applications.
4. IBM Cloud: IBM Cloud offers a mix of IaaS, PaaS, and SaaS solutions, with a focus on enterprise
applications, hybrid cloud environments, and AI.
• Key Services: IBM Cloud Virtual Servers, IBM Cloud Object Storage, IBM Watson (AI services), IBM Kubernetes
Service.
• Website: [Link]
• Use Cases: AI and machine learning, blockchain, enterprise IT, hybrid cloud.
5. Oracle Cloud: Oracle Cloud offers a comprehensive set of cloud services focusing on databases,
applications, and enterprise solutions. It is known for its strong database services.
• Key Services: Oracle Cloud Infrastructure (OCI), Oracle Autonomous Database, Oracle Cloud Applications.
• Website: [Link]/cloud
6. Alibaba Cloud: Alibaba Cloud is a leading cloud provider in China and Asia, offering a wide range of
cloud services including computing, storage, and big data analytics.
• Key Services: Elastic Compute Service (ECS), Object Storage Service (OSS), Alibaba Cloud RDS, Alibaba Cloud Machine
Learning Platform for AI.
• Website: [Link]
• Website: [Link]
8. Salesforce: Salesforce provides cloud-based software and platform services, primarily focusing on
customer relationship management (CRM).
• Key Services: Salesforce CRM, Salesforce Service Cloud, Salesforce Marketing Cloud, Salesforce AppExchange.
• Website: [Link]
• Google Cloud Platform (GCP): Focuses on big data, machine learning, and containers.
6. Vendor Lock-In: Relying heavily on a single cloud provider can create dependency, making it
difficult to switch providers or move back to on-premises solutions without significant effort and cost.
7. Limited Control and Flexibility: Cloud users have less control over the underlying infrastructure
compared to on-premises systems. This can limit customization and control over certain aspects of the
environment.
8. Compliance and Legal Issues: Different countries have varying regulations regarding data
storage and processing. Ensuring compliance with these regulations can be challenging when using
cloud services that operate globally.
9. Performance and Latency: Cloud-based applications may experience latency and performance
issues due to the physical distance between users and data centers or network congestion.
1. Data Breaches: Unauthorized access to sensitive data stored in the cloud. Data breaches can result in the
exposure of confidential information, leading to financial loss, reputational damage, and regulatory penalties.
Solution: Ensuring that data is encrypted both at rest and in transit, implementing strong access controls, and
regularly monitoring for vulnerabilities.
2. Data Loss: The permanent loss of data due to accidental deletion, cyberattacks, or hardware failure. Loss of
critical data can disrupt business operations and lead to legal and compliance issues.
Solution: Implementing robust backup solutions, disaster recovery plans, and redundancy mechanisms.
3. Insider Threats: Malicious or negligent actions by employees or contractors who have access to cloud
resources. Insider threats are challenging to detect and can lead to data theft, system sabotage, or the compromise
of security measures.
Solution: Implementing strict access controls, regular audits, and monitoring user activities to detect and prevent
insider threats.
4. Insecure Interfaces and APIs: Cloud services are accessed through APIs, which, if not properly secured, can
be exploited by attackers. Vulnerable APIs can lead to unauthorized access, data leakage, and other security
breaches.
Solution: Securing APIs through authentication, authorization, encryption, and regular testing for vulnerabilities.
5. Account Hijacking: Attackers gaining unauthorized access to cloud accounts through phishing, weak
passwords, or social engineering. Hijacked accounts can be used to manipulate data, steal information, or launch
further attacks within the cloud environment.
Solution: Enforcing multi-factor authentication (MFA), monitoring for suspicious activities, and educating users
on security best practices.
6. Denial of Service (DoS) Attacks: Overwhelming cloud services with traffic to disrupt operations. DoS
attacks can render cloud services unavailable, affecting business continuity and causing financial losses.
Solution: Deploying traffic filtering, rate limiting, and implementing a robust incident response plan to mitigate
the impact.
7. Shared Technology Vulnerabilities: Exploiting vulnerabilities in the underlying infrastructure shared among
multiple cloud users (e.g., hypervisors). Shared technology vulnerabilities can lead to cross-tenant attacks where
one user's data or applications are compromised due to another user's vulnerabilities.
Solution: Regularly updating and patching systems, and implementing segmentation to isolate tenants from each
other.
8. Lack of Visibility and Control: Limited visibility into the cloud environment can hinder effective security
monitoring and management. A lack of control can lead to security blind spots, where potential threats or
vulnerabilities go unnoticed.
Solution: Implementing centralized logging and monitoring, and using cloud-native security tools to maintain
visibility and control.
9. Compliance and Legal Issues: Ensuring that cloud services comply with regulatory requirements and legal
standards. Non-compliance can result in legal penalties, loss of business, and reputational damage.
Solution: Ensuring that the cloud service provider meets compliance requirements and that the organization’s usage
aligns with those standards.
10. Vendor Lock-In: Dependence on a single cloud provider, making it difficult to switch providers or migrate data.
Vendor lock-in can limit flexibility and increase the risk if the provider experiences security issues or service outages.
Solution: Designing systems to be as portable as possible, using multi-cloud strategies, and understanding the exit
strategy from the chosen cloud provider.
11. Insecure Cloud Migration: Security risks associated with transferring data and applications to the cloud. During
migration, data can be exposed to vulnerabilities, leading to potential breaches or loss.
Solution: Planning and executing a secure migration strategy, including data encryption, and using secure transfer
protocols.
12. Lack of Expertise: Insufficient knowledge of cloud security leading to misconfigurations and vulnerabilities.
Solution: Investing in training and hiring qualified personnel to manage cloud security effectively.
Addressing these security challenges requires a combination of robust technology solutions, well-defined processes,
and continuous vigilance.
Cloud Native Applications
• A native app is software that is developed for use on a specific platform or device.
• Cloud native is the software approach of building, deploying, and managing modern applications in
cloud environments. A cloud-native application is a program that is designed for a cloud
computing architecture.
• Modern companies want to build highly scalable, flexible, and resilient applications that they can
update quickly to meet customer demands.
• Cloud-native is an approach to build & run applications that can leverage the advantages of the cloud
computing model — On demand computing power & pay-as-you-go pricing model.
• These applications are built and deployed in a rapid cadence to the cloud platform and offer
organizations greater agility, resilience, and portability across clouds.
•
Cloud Native Applications
• Big Tech companies like FANG (Facebook, Amazon, Netflix & Googleare
quick to adopt new technology. They have created systems that allow them to
add new features to their apps very often (like every week, day, or even
hour).
• They've achieved this agility without sacrificing reliability or safety, enabling
them to better serve their customers.
• They have achieved this level of agility by moving by adopting cloud native
practices. The four key pillars of cloud-native - DevOps, Continuous
Delivery, microservices, and containers - all aim to streamline application
development and operations through automation, making teams more
efficient and effective.
Cloud Native Development Vs Traditional Development
• Cloud Native development differs from traditional development in several key aspects, particularly
in terms of architecture, deployment, scalability, and overall development philosophy.
1. Architecture
• Traditional Development:
• Often monolithic, where the application is built as a single, large codebase.
• Scaling typically involves running multiple instances of the entire application.
• Tight coupling between components, making updates and changes more complex and riskier.
• Cloud Native Development:
• Emphasizes microservices architecture, where applications are composed of small, independent
services.
• Each service can be developed, deployed, and scaled independently.
• Services communicate over APIs, promoting loose coupling and easier maintenance.
2. Deployment
• Traditional Development:
• Deployments are less frequent, with long cycles between updates due to the complexity and risk
involved.
• Utilizes containers (e.g., Docker) and orchestrators (e.g., Kubernetes) for deployment.
• Traditional Development:
• Scaling typically involves adding more hardware (vertical scaling) or running additional instances
of the entire application (horizontal scaling).
• Scaling can be resource-intensive and less efficient.
• Traditional Development:
• Applications often have single points of failure.
• Downtime during failures can be significant, with recovery requiring manual intervention.
• Cloud Native Development:
• Designed for resilience, with services distributed across multiple servers or even data centers.
• Self-healing mechanisms are common, with automated failover and recovery.
• Emphasizes statelessness and redundancy to minimize downtime.
5. Development Process
• Traditional Development:
• Waterfall or similar linear development methodologies are common, with long development
cycles.
• Changes and updates are less frequent, with significant testing and QA phases before
deployment.
• Cloud Native Development:
• Agile and DevOps practices are standard, promoting iterative development and rapid delivery.
• Frequent updates, with a focus on automation, testing, and continuous improvement.
• Developers work closely with operations (DevOps) to ensure smooth deployment and
operation.
6. Resource Management
• Traditional Development:
• Resources are often statically allocated, with fixed infrastructure costs.
• Scaling up or down can be slow and expensive.
• Cloud Native Development:
• Resources are dynamically allocated, paying only for what is used.
• Allows for efficient resource utilization and cost savings, especially during varying loads.
7. Security
• Traditional Development:
• Security is often an afterthought, added late in the development cycle.
• Manual patching and updates can lead to vulnerabilities.
• Cloud Native Development:
• Security is integrated from the start (DevSecOps), with automated security testing.
• Emphasizes container security, network segmentation, and automated patching.
8. Environment and Infrastructure
• Traditional Development:
• Environments (development, testing, production) are often managed manually, leading to
inconsistencies.
In summary, Cloud Native development is more modular, automated, and scalable, leveraging the
cloud’s capabilities to deliver resilient, scalable, and rapidly deployable applications. Traditional
development, by contrast, tends to be more monolithic, slower in terms of updates, and less flexible
in scaling and resource management.
Major pillars of Cloud-native Application
• DevOps is the collaboration between software developers and IT operations with the goal of automating
the process of software delivery & infrastructure changes.
• Continuous Delivery enables applications to released quickly, reliably & frequently, with less risk.
services that run on their own and communicate over HTTP APIs. This approach breaks large complex
applications into smaller pieces so that they can be developed, tested and managed independently.
• Containers provide light-weight virtualization by dynamically dividing a single server into one or more
isolated containers. Containers offer both efficiency & speed compared to standard Virtual Machines
(VMs). Containers provide the ability to manage and migrate the application dependencies along with the
application, while abstracting away the OS and the underlying cloud platform in many cases.
• Microservices: Cloud-native applications are divided into small components known as
microservices that are loosely coupled to each other. These microservices are independent and
communicate with each other via APIs. It is a microservices architecture which cloud-native apps
are built upon. Every microservice handles a particular job and collectively they make the whole
system functional.
APIs are used to ensure communication between different microservices that are loosely
coupled with each other. Microservices request data with APIs and provide output through APIs. This
type of architecture provides a lightweight, simple, and quick system that is efficient and consumes
fewer resources.
• CI/CD: Cloud-native development requires a Continuous Integration and Continuous Deployment
pipeline that provides a collaborative and iterative approach for DevOps teams to build, test, and deploy
applications. There is a centralized repository for coding that is accessible to all developers, and they
can contribute to it. Automation is used in the CI/CD pipeline to compile, build, and test the application
code while minimizing human error for quick deployment.
• DevOps: Apart from reconsidering your application design, you also need to rethink the way your team
is organized. An agile approach is needed to harness the full potential of the cloud and adopt new kinds
of philosophy and culture for your team. DevOps is the model that you need for your team.
DevOps brings closer the development and operations teams that have been siloed. It provides a
workflow that helps teams build and deliver software applications more quickly and reliably.
The benefits that can be reaped by adopting these methodologies include…
1. Self managing infrastructure through automation: The Cloud Native practice goes beyond ad-hoc
automation built on top of virtualization platforms, instead it focuses on orchestration, management and
automation of the entire infrastructure right upto the application tier.
2. Reliable infrastructure & application: Cloud Native practice ensures that it much easier to handle
churn, replace failed components and even easier to recover from unexpected events & failures.
3. Deeper insights into complex applications: Cloud Native tooling provides visualization for health
management, monitoring and notifications with audit logs making applications easy to audit & debug
4. Security: Enable developers to build security into applications from the start rather than an afterthought.
5. More efficient use of resources: Containers are lighter in weight that full systems. Deploying
applications in containers lead to increased resource utilization.
Cloud Native Stack/Landscape
The goal of the cloud native landscape is to compile and organize all cloud native open source projects
and proprietary products into categories, providing an overview of the current ecosystem.
Infrastructure: At the very bottom, we have the infrastructure layer which provides the compute, storage,
network & operating system usually provided by the Cloud (AWS, GCP, Azure, Openstack, VMware).
Provisioning: The provisioning layer consists of automation tools that help in provisioning the
infrastructure, managing images and deploying the application. Chef, Puppet & Ansible are the DevOps
tools that give the ability to manage their configuration & environments. Spinnaker, Terraform,
Cloudformation provide workflows to provision the infrastructure. Twistlock, Clair provide the ability to
harden container images.
Runtime: The Runtime provides the environment in which the application runs. It consists of the Container
Engines where the application runs along with the associated storage & networking. containerd & rkt are the
most widely used Container engines. Flannel, OpenContrail provide the necessary overlay networking for
containers to interact with each other and the outside world while Datera, Portworx, AppOrbit etc. provide
the necessary persistent storage enabling easy movement of containers across clouds.
Orchestration and Management: Tools like Kubernetes, Docker Swarm and Apache Mesos abstract the
management container clusters allowing easy scheduling & orchestration of containers across multiple
hosts. etcd, Consul provide service registries for discovery while AVI, Envoy provide proxy, load
balancer etc. services.
Application Definition & Development: We can build micro-services for applications across multiple
langauges— Python, Spring/Java, Ruby, Node. Packer, Habitat & Bitnami provide image management for
the application to run across all infrastructure — container or otherwise. Jenkins, TravisCI, CircleCI and
other build automation servers provide the capability to setup continuous integration and delivery
pipelines.
Monitoring, Logging & Auditing: One of the key features of managing Cloud Native Infrastructure
is the ability to monitor & audit the applications & underlying infrastructure.
All modern monitoring platforms like Datadog, Newrelic, AppDynamic support monitoring of
containers & microservices.
Splunk, Elasticsearch & fluentd help in log aggregration while Open Tracing and Zipkin help in
debugging applications.
How do Businesses Benefit from Cloud Native
Application Development?
• Cloud native app development benefits businesses in multiple ways, inclusive of the competitive
advantage. It is one of the best application modernization methods. The following are all the benefits
of cloud native applications.
Cloud Native Application Examples
2 As a best practice, define all the dependencies of the app, isolate them and package them within
Dependencies
the app. Containerization helps here.
3 Build, Release, and Run are the three important components of a software development project.
Configurations
4 Log storage should be decoupled from the app. Segregation and compilation of these logs lie in
Backing Services
the execution environment.
5 Build, Release and Run are the three important components of a software development project.
Build, Release, Run
6 Run all as a collection of stateless processes so that scaling becomes easy while unintended
Processes
effects are eliminated.
12-factor
Principle Description
Methodology
7 While the app contains multiple processes, it is important to run all as a collection of stateless
Port-Binding
processes so that scaling becomes easy while unintended effects are eliminated.
8 The app should gracefully dispose of broken resources and instantly replace them, ensuring a fast
Concurrency
start-up and shutdown.
9 When applications built on a cloud-native application architecture go down, the app should
Disposability gracefully dispose of broken resources and instantly replace them, ensuring a fast start-up and
shutdown.
10 Minimize differences between development and production environments. Building automated
Dev / Prod Parity
CI/CD pipelines, VCS, backing services and containerization will help you in this regard.
11 Minimize differences between development and production environments. Building automated
Logs
CI/CD pipelines, VCS, backing services, and containerization will help you achieve this.
12 Log storage should be decoupled from the app. Segregation and compilation of these logs lie in the
Admin Processes
execution environment.
Summary
• The 12 factors of cloud-native application development are:
✓ Codebase: One codebase is monitored in revision control and has numerous deployments.
✓ Dependencies: Clearly identify and segregate dependencies
✓ Configuration: Keep the environment’s configuration.
✓ Backing Services: These services should be considered an attachment to resources.
✓ Build, release, and run: Clearly distinct build and run phases
✓ Processes: Execute the application using one or more stateless processes.
✓ Port-Binding: Exporting services through port binding
✓ Concurrency: Scaling-out concurrency using the process model
✓ Disposability: A fast start-up and smooth shutdown will maximize resilience when it comes to
disposability.
✓ Dev/Prod Parity: Maintain as much balance between development and production as you can.
✓ Logs: Consider them to be event streams.
✓ Admin Processes: Run administrative and managerial activities as one-off procedures.
Tools for cloud-native app development
• Several software tools are used for each cloud-native application development process. Together, they
create a development stack. Here is the software found in a cloud-native development stack:
• Docker. The Docker platform is open source. It creates, deploys and manages virtualized
application containers using a common operating system (OS). It isolates resources allowing
multiple containers to use the same OS without contention.
• Kubernetes. The Kubernetes platform is used to manage and orchestrate Linux containers,
• Terraform. Designed for implementing IaC, Terraform defines resources as code and applies
version control so users can see when and where resources were altered.
• GitLab CI/CD. This continuous integration/continuous development (CI/CD)
software lets users automate software testing and deployment. GitLab can be
used for security analysis, static analysis and unit tests.
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
[Link]