2. Creasoft.dev 2021
About this deck
What is the purpose of this deck?
To provide a high level introduction to
the Cloud Native App concepts.
Who is the target audience?
Team leads and lead engineers.
No prior exposure to cloud native
required.
Outline
1. Traditional Application
2. Cloud Promise & Benefits
3. Moving Toward Cloud
a. Toward Cloud Native
b. The Twelve Factor App
c. Beyond Twelve Factors
d. Microservices
3. Creasoft.dev 2021
Traditional Application (sans-Cloud)
MONOLITH
Data Store
E
S
B
Manage Everything!
1. Required teams to specialize by process &
layer
2. Everyone worked on single mega app/repo
3. Architecture tended toward tightly coupled
components (sync)
4. Apps scaled vertically: bigger memory,
faster processor, and more threads
5. Apps are responsible for operations
support such as log management,
monitoring, alerting, scheduling
4. Creasoft.dev 2021
Traditional Application - Pain Points
Practice Pain Points
Specialize teams by process
& layer
Time consuming, error prone hands-offs between teams.
Inefficiency handling service outage. Culture of blaming.
Single mega app, single repo No technology freedom. Slow Development Life Cycle.
Tightly coupled components Rigid architecture, difficult to modify and evolve.
App scaled vertically Costly, complex, SPOF. There is limit to vertical scale.
App responsible for operative
support
Bloated code. Low development speed. Saturated with non-
core domain logics.
6. Creasoft.dev 2021
The Cloud Promise
Abstracted Infrastructure
1. Team can can specialize by domain and
own most of the processes & layers
2. Team manages smaller apps/repos
3. Apps can swap backing services: DB,
queue, etc.
4. Apps scaled horizontally: just add more
nodes
5. Infrastructure is responsible for log
management & other operation support
SERV-
ICE
Data
Store
SERV-
ICE
Data
Store
SERV-
ICE
Data
Store
App App
7. Creasoft.dev 2021
Cloud Benefits
Faster Development cycle
under unified team
Automation of build and deploy processes.
Infrastructure management offloaded to provider.
Better Technology Options No need to tie to a single language. Broad range of
services to choose from.
Achievable NFRs Security, Reliability, Scalability provided by the Cloud
Platform.
Focus on Core Domain Mix and match non-core services from the provider.
Lower Cost Low maintenance cost. Pay-per-use model: no cost on
idle resources.
8. Creasoft.dev 2021
Fulfil the Promise!
You need to work to obtain the benefits!
Your apps need to follow certain principles.
14. Creasoft.dev 2021
Cloud Native, How Do We Actually Get There?
1. The Twelve-Factor App by Heroku
2. Beyond the Twelve-Factor App, by VMWare
3. Microservice Architecture
15. Creasoft.dev 2021
The Twelve-Factor App
1. Code base One codebase tracked in revision control, many deploys. E.g. one
single source of truth.
2. Dependencies Explicitly declare and isolate dependencies. E.g. maven.
3. Config Store config in the environment. E.g. K8s ConfigMap, Consul.
4. Backing services Treat backing services as attached resources.
5. Build, release, run Strictly separate build and run stages. No special “back door.”
6. Processes Execute the app as one or more stateless processes.
16. Creasoft.dev 2021
7. Port binding Export services via port binding. E.g. do not rely on web container.
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. E.g. No in-app log file management.
12. Admin processes Run admin/management tasks as one-off processes. Have your
admin logic checked into the repo.
The Twelve-Factor App
Further detail on bolded ones, which we consider needs more discipline.
17. Creasoft.dev 2021
12FactorApp: 8. Concurrency
● WHAT: Scale out via the process model
○ Not by replacing CPU, adding memory,
increasing threads (“vertical” scaling)
● DOs: Design for horizontal scale
○ Make it horizontally partitionable: sharding
○ Test in multi-pod environment
○ Use eventing for long-running processes
● DONTs: Share or coordinate states across replicas
18. Creasoft.dev 2021
12FactorApp: 9. Disposability
● WHAT: Maximize robustness with fast startup and
graceful shutdown. Property for elasticity
○ Disposable → they can be started or stopped at a moment’s notice
● DOs: minimize startup time, shut down gracefully
○ Adopt fail-fast design
● DONTs: Implement heavy init. Designs that require
complex shut-down
○ Prime heavy state at boot time: e.g. load cache
19. Creasoft.dev 2021
12FactorApp: 10. Dev/prod parity
● WHAT: Keep development, staging, and
production as similar as possible
● DOs: keep the gap between development and
production small
○ The time, personnel, tool gap
● DONTs:
○ Delay the release once in dev
○ Maintain special files for specific environment
20. Creasoft.dev 2021
Beyond the Twelve-Factor App
API first API as a first-class artifact of the development process.
Clear contract removes cross-team dependency. Increases usability
Configuration,
credentials, and
code
Needless to say … Handle credentials with care.
Telemetry Enabling for Observability: Instrumenting application; collecting
performance, domain and health data; logging and alerting.
This is important due to the distributed nature of the system on
cloud.
Authentication and
authorization
Multiple services expose more attack surface.
Security is a must. Authentication and permission rules.
21. Creasoft.dev 2021
Microservices - Challenges for the Team
1. Need to understand distributed systems
2. Need to understand new tools and technologies
3. Need to understand what patterns to use when building
cloud native applications
22. Creasoft.dev 2021
Microservices - Hows
1. Breaking the Monolith
2. Operating in the Cloud
3. Using Anti-Corruption Layer
4. Using Strangler Pattern
5. Refactoring common code
6. Implementing for Security and Resiliency
Consider the CAP Theorem: Consistency, High Availability and
Network Partitioning
There is no prescription
for migrating from mono
to microservice
23. Creasoft.dev 2021
Cloud is not just a nebulous thing
out there.
It’s a proven new way of
developing application that runs
high performing businesses.
24. Creasoft.dev 2021
Fight your fear of Cloud.
Cloud native means committing to the cloud you chose,
Go all in!
It’s better to have an application that works excessively well
on AWS (or GCP) than a mediocre application that runs
poorly on AWS and Azure and GCP and onprem.
25. Creasoft.dev 2021
We just touched a tiny surface…
Reach out to us for more details
https://creasoft.dev/en/
info@creasoft.dev
26. Creasoft.dev 2021
Links
1. The Twelve-Factor App by Heroku
2. Beyond the Twelve-Factor App, by VMWare, 2016
3. Cloud Native, Using Containers, Functions, and Data to Build
Next-Generation Applications, O’Reilly, 2019
Sites
1. Cloud Native
2. Docker
3. Kubernetes
27. Creasoft.dev 2021
Other Related Concepts
1. Domain Driven Design (DDD)
2. Reactive Model
3. DevOps & System Reliability Engineering practices
4. Chaos Engineering
Notas del editor
Intro to Cloud Native, ver 1.0 (es)
-- DESCRIPTION --
A high level introduction to the Cloud Native App concepts.
Implications, principles and practices.
-- TAGS --
12 factor apps, cloud, cloud native, container, development, devops, docker, kubernetes, microservices, orchestration, software architecture
Photo: https://pixabay.com/photos/cloud-finger-smartphone-phone-2537777/
Let’s start by examining the traditional monolith application.
Teams: dev, qa, DBA, release, operation
Often, we omit the “lift” step and attempt to just deploy the same application in the cloud.
Iaac: Infrastructure as a Code
Add examples.
Service should be based on SLA’s
Skipping the benefits, so much has been said about it.
Additional knowledge: for the cloud:
Container, container orchestration
Security (OIDC), secret management, circuit breaker,
Distributed Logging, Eventing, CQRS, Functions & Lambdas
Gateways, Service Mesh,