Cloud computing 101
Victor Morales
Victor Morales
• +15 yrs as a Software Engineer
• .NET, Java, python, Go programmer
• OpenStack, OPNFV, ONAP and CNCF
contributor.
https://about.me/electrocucaracha
DevOps Culture
https://www.devops.ch/2017/05/10/devops-explained/
Agenda
• Cloud Computing
• Business drivers
• History – Technology Innovations
• Definition
• Deployment models
• Service models
• Cloud Strategies
• Cloud-Native Development
• Microservices vs Monolithic services
• Virtual Machines vs Docker Containers
• The Twelve-Factor App
• Immutable servers
• Infrastructure as a Code
• Demo
DevOps
Cloud Computing
https://dilbert.com/
https://www.google.com/about/datacenters/gallery/
Business Drivers
• Capacity planning - Involves ensuring that an
organization has the right infrastructure,
resources and services to support their business
and customer base in the future.
• Operating Overhead - Reducing the up-front
cost of acquiring new IT infrastructure and the
on-going cost of owning and maintaining said
infrastructure.
• Operational Agility - The ability of a business to
respond to change by being able to scale its IT
resources.
https://d1smfj0g31qzek.cloudfront.net/above_the_clouds.ppt.pdf
https://timesofcloud.com/cloud-tutorial/history-and-vision-of-cloud-computing/
Cloud computing is a specialized
form of distributed computing
that introduces utilization
models for remotely
provisioning scalable and
measured IT resources.
Service Models
Deployment models
• Private Cloud – Operated solely for a
single organization.
• Community Cloud – Shared by several
entities that have a common purpose.
• Public Cloud – Available to be general
public and owned by a single organization
selling cloud services.
• Hybrid Cloud – Any combination of two or
more private/community or public clouds.
Cloud strategies In/Out
• Cloud In: Launch
applications directly onto
cloud IaaS, then later pull
workloads into your
datacenter.
• Cloud Out: Move your
datacenter into the modern
era with virtualization
https://www.idg.com/tools-for-marketers/2020-cloud-computing-study/
https://www.gartner.com/doc/reprints?id=1-1ZDZDMTF&ct=200703&st=sb
https://www.fortunebusinessinsights.com/cloud-computing-market-102697
The global cloud computing market size
was USD 193.60 billion in 2019 and is
projected to reach USD 684.55
billion by 2027, exhibiting a CAGR of 17.6%
during the forecast period.
Cloud-Native
Development
https://d1smfj0g31qzek.cloudfront.net/above_the_clouds.ppt.pdf
1. We design software to reduce its cost.
2. The cost of software is ≈ the cost of changing the
software.
3. The cost of changing the software is ≈ the cost of the
expensive changes (power laws and all that).
4. The cost of the expensive changes is generated by
cascading changes
5.Coupling between elements of a design is this
propensity for a change to propagate.
6. So, design ≈ cost ≈ change ≈ big change ≈ coupling.
Transitively, software design ≈ managing
coupling.
https://medium.com/@kentbeck_7670/monolith-services-theory-practice-617e4546a879
The measure of good software architecture is the effort needed to satisfy client requirements.
It is a methodology for building software-as-a-service
apps.
1. Codebase: One codebase tracked in revision control, many deploys.
2. Dependencies: Explicitly declare and isolate dependencies
3. Config: Store config in the environment
4. Backing services: Treat backing services as attached resources
5. Build, release, run: Strictly separate build and run stages
6. Processes: Execute the app as one or more stateless processes
7. Port binding: Export services via port binding
8. Concurrency: Scale out via the process model
9. Disposability: Maximize robustness with fast startup and graceful
shutdown
10. Dev/prod parity: Keep development staging, and production as similar
as possible
11. Logs: Treat logs as event streams
12. Admin processes: Run admin/management task as one-off processes
https://12factor.net/
Microservices vs Monolithic services
https://microservices.io/
https://www.martinfowler.com/articles/microservices.html
User Interface User Interface
Business Logic
Data Access Layer
Microservice
Microservice Microservice
Demo 1
https://github.com/electrocucaracha/k8s-Ingress-demo
demo/main.go
vs
Hardware
OS
Kernel
VM
Kernel
Apps Services
VM
Kernel
Apps Services
Hardware
OS
Kernel
Containers
Apps
Services
Containers
Apps
Services
Containers
Apps
Services
https://www.suse.com/c/demystifying-containers-part-i-kernel-space/
Dockerfile
Multi-stage builds
https://docs.docker.com/
develop/develop-
images/dockerfile_best-
practices/
Demo 2
https://github.com/electrocucaracha/k8s-Ingress-demo
Kubernetes (K8s) is an
open-source system for
automating deployment,
scaling, and management
of containerized
applications.
Kubernetes resources
control-plane
kind
worker worker2 worker3
deployment-default-
<rs_id>-<pod_id>
deployment-default-
<rs_id>-<pod_id>
deployment-es-
<rs_id>-<pod_id>
deployment-es-
<rs_id>-<pod_id>
deployment.apps/deployment-es
deployment.apps/deployment-default
client
service-default service-es
website-ingress
http localhost/eshttp localhost/en
Q&A

Cloud native fundamentals