Creasoft.dev 2021
Intro to Cloud Native
Young Suk Ahn Park / MSEng
Jan 2021
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
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
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.
Creasoft.dev 2021
Enters
Cloud
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
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.
Creasoft.dev 2021
Fulfil the Promise!
You need to work to obtain the benefits!
Your apps need to follow certain principles.
Creasoft.dev 2021
“The cloud is about
HOW you do
computing, not WHERE
you do computing”
- Paul Maritz
Creasoft.dev 2021
Towards Cloud
THE CLOUD
Lift and Shift
Creasoft.dev 2021
DEVELOPMENT OPERATIONS
TOOLS
PRACTICES
Towards Cloud Native
Use Tools,
Apply Cloud
Practices
Creasoft.dev 2021
TOOLS
PRACTICES
Towards Cloud Native
DEV-OPS
Converge Teams,
Evolve
Architecture
Creasoft.dev 2021
DEVELOPMENT OPERATIONS
TOOLS
PRACTICES
Cloud Native elements (non-comprehensive)
● Automate
● Frequent releases
● Managed secrets
● Gitops
● Telemetry
● SLA / SLO
● SRE / RCA
● IaaC
● Manage
dependencies
● Scale out
● Externalize config
● Security upfront
● Microservices
● Observable
design
● Container orchestration
● Pipeline automation
● Autn/Auth
● APM & Logging PAAS
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
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.
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.
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
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
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
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.
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
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
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.
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.
Creasoft.dev 2021
We just touched a tiny surface…
Reach out to us for more details
https://creasoft.dev/en/
info@creasoft.dev
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
Creasoft.dev 2021
Other Related Concepts
1. Domain Driven Design (DDD)
2. Reactive Model
3. DevOps & System Reliability Engineering practices
4. Chaos Engineering

Intro to Cloud Native _ v1.0en (2021/01)

  • 1.
    Creasoft.dev 2021 Intro toCloud Native Young Suk Ahn Park / MSEng Jan 2021
  • 2.
    Creasoft.dev 2021 About thisdeck 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.
  • 5.
  • 6.
    Creasoft.dev 2021 The CloudPromise 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 FasterDevelopment 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 thePromise! You need to work to obtain the benefits! Your apps need to follow certain principles.
  • 9.
    Creasoft.dev 2021 “The cloudis about HOW you do computing, not WHERE you do computing” - Paul Maritz
  • 10.
  • 11.
    Creasoft.dev 2021 DEVELOPMENT OPERATIONS TOOLS PRACTICES TowardsCloud Native Use Tools, Apply Cloud Practices
  • 12.
    Creasoft.dev 2021 TOOLS PRACTICES Towards CloudNative DEV-OPS Converge Teams, Evolve Architecture
  • 13.
    Creasoft.dev 2021 DEVELOPMENT OPERATIONS TOOLS PRACTICES CloudNative elements (non-comprehensive) ● Automate ● Frequent releases ● Managed secrets ● Gitops ● Telemetry ● SLA / SLO ● SRE / RCA ● IaaC ● Manage dependencies ● Scale out ● Externalize config ● Security upfront ● Microservices ● Observable design ● Container orchestration ● Pipeline automation ● Autn/Auth ● APM & Logging PAAS
  • 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-FactorApp 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. Portbinding 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 theTwelve-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 isnot 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 yourfear 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 justtouched a tiny surface… Reach out to us for more details https://creasoft.dev/en/ info@creasoft.dev
  • 26.
    Creasoft.dev 2021 Links 1. TheTwelve-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 RelatedConcepts 1. Domain Driven Design (DDD) 2. Reactive Model 3. DevOps & System Reliability Engineering practices 4. Chaos Engineering

Editor's Notes

  • #2 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/
  • #4 Let’s start by examining the traditional monolith application. Teams: dev, qa, DBA, release, operation
  • #5 SPOF: Single Point of Failure
  • #7 Image: https://pixabay.com/vectors/cloud-cloud-computing-3331240/ CI/CD: https://favpng.com/png_download/rxv15DAX
  • #10 https://unsplash.com/photos/K-Iog-Bqf8E
  • #11 Often, we omit the “lift” step and attempt to just deploy the same application in the cloud.
  • #14 Iaac: Infrastructure as a Code
  • #18 Add examples.
  • #19 Service should be based on SLA’s
  • #22 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,
  • #25 https://www.thoughtworks.com/radar/techniques/generic-cloud-usage