SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Jumpstart Your Cloud Native Development:
An Overview of Practices and Tooling
Daniel Bryant
@danielbryantuk
tl;dr
2
• Continuous delivery requires safety and speed throughout the engineering workflow


• Bringing old mental models and tools can increase toil when building, testing, and
running cloud native services


• Artifact syncing, dev environment bridging, and GitOps increase both safety and speed
@danielbryantuk
3
getambassador.io
@danielbryantuk
Continuous delivery of value
4
“Continuous delivery is achieved when stability and speed
can satisfy business demand.


Discontinuous delivery occurs when stability and speed


are insu
ff
icient.”


- Steve Smith (@SteveSmith_Tech)
@danielbryantuk
Continuous delivery of value
5
“Continuous delivery is achieved when stability and speed
can satisfy business demand.


Discontinuous delivery occurs when stability and speed


are insu
ff
icient.”


- Steve Smith (@SteveSmith_Tech)
@danielbryantuk
Continuous delivery of value
6
“Continuous delivery is achieved when stability and speed
can satisfy [your] business demand.


Discontinuous delivery occurs when stability and speed


are insu
ff
icient.”


- Steve Smith (@SteveSmith_Tech)
7
Two modern so
ft
ware trends


for speed and safety
@danielbryantuk
Trend #1: Microservices
8
• Modularisation


• Aka “microservices”


• Independently:


• Build


• Release


• Scale


• Operate


• Strive for


• High cohesion


• Loose coupling
@danielbryantuk
Trend #2: Kubernetes
9
• Automated orchestration of container-based services


• Declarative config (with reconciliation loops)


• Common API/platform to support and extend


• But… a non-trivial set of abstractions/components for developers


• And it’s not a PaaS
@danielbryantuk
tl;dr
10
With cloud native, the focus is o
ft
en on speed
The Kubernetes Migration Journey(s)
11
Exploration
Organizational buy-in Cloud-native organization


(Loosely coupled, highly aligned)
Building services, but we’re not actually moving faster
Let’s release our microservices as a monolith
Centres of excellence


(Tech & process changes)
No coordination results in disasters and blame


(deploy and operate K8s same as old infra)
Investing in “paved road” platforms


And new dev workflows
Clinging to old mental models and


“the way it’s always been done”
12
Safety


The ability to quickly ship
changes to production,
without fear
Safety requires multiple strategies
13
Prevention
Mitigation
Detection
Response
Most common strategy (e.g., testing, QA, gated release)
Critical strategies for cloud-native organizations when
the application is a “complex adaptive system”
}
}
Safety Strategies in the Cloud
14
Prevention
Mitigation
Detection
Response
• Testing: integration tests, user acceptance tests, …


• High-fidelity replica environments for dev & test
• Engineering for resilience


• Progressive delivery: canary release, blue/green rollouts, …
• Observability


• Chaos engineering
• Instant rollback & traceability


• Runbooks, fast dev / test loops


• Blameless postmortems


• Game days
Safety needs to
be part of your
workflow.
15
Develop
Test
Deploy/
Release
Run
Progressive Delivery


Rollback
Observability


Chaos Engineering


Runbooks
Fast dev loop


Fast feedback
Realistic test
environments
16
Develop
Test
Deploy/
Release
Run
Progressive Delivery


Rollback
Observability


Chaos Engineering


Runbooks
Fast dev loop


Fast feedback
Realistic test
environments
Developer


Self-Service
@danielbryantuk
17
Patterns, practices, and tooling
@danielbryantuk
Pattern: Artifact Syncing
18
• Pain points:


• Can’t run all required dependent services locally


• Sick of slow dev loop: code, build image, push to remote registry


• Integration tests rely on mocks (with implicit assumptions)


• Solution


• Deploy all services to remote environment and sync local changes (combine with buildpacks)


• O
ft
en combined with development environment bridging


• Example tool


• Ska
ff
old (ksync, Tilt, Garden)
@danielbryantuk
Ska
ff
old: “Source to K8s” CLI Tool
$ skaffold dev
19
Listing files to watch...


- skaffold-example


Generating tags...


- skaffold-example -> skaffold-example:v1.1.0-113-g4649f2c16


Checking cache...


- skaffold-example: Not found. Building


Found [docker-desktop] context, using local docker daemon.


Building [skaffold-example]...


Sending build context to Docker daemon 3.072kB


Step 1/6 : FROM golang:1.12.9-alpine3.10 as builder


---> e0d646523991


Step 2/6 : COPY main.go .


---> Using cache


---> e4788ffa88e7


Step 3/6 : RUN go build -o /app main.go


---> Using cache


---> 686396d9e9cc


Step 4/6 : FROM alpine:3.10


---> 965ea09ff2eb


Step 5/6 : CMD ["./app"]


---> Using cache


---> be0603b9d79e


Step 6/6 : COPY --from=builder /app .


---> Using cache


---> c827aa5a4b12


Successfully built c827aa5a4b12


Successfully tagged skaffold-example:v1.1.0-113-g4649f2c16


Tags used in deployment:


- skaffold-example -> skaffold-example:c827aa5a4b12e707163842b803d666eda11b8ec20c7a480198960cfdcb251042


local images can't be referenced by digest. They are tagged and referenced by a unique ID instead


Starting deploy...


- pod/getting-started created


Watching for changes...


[getting-started] Hello world!


[getting-started] Hello world!


[getting-started] Hello world!
@danielbryantuk
Ska
ff
old: “Source to K8s” CLI Tool
20
getambassador.io/summer-of-k8s/code/week3
@danielbryantuk
Ska
ff
old: “Source to K8s” CLI tool
21
skaffold dev & skaffold debug


• Detects changes in your source code and handles the pipeline to build, push etc


skaffold build & skaffold deploy


• Execute as part of your CI/CD pipeline, or ska
ff
old run end-to-end


skaffold render


• Build your images and render templated Kubernetes manifests for use in GitOps
workflows
@danielbryantuk
Pattern: Dev Environment Bridging/Extension
22
• Pain points:


• Can’t run all required dependent services locally


• Integration tests rely on mocks (with implicit assumptions)


• Need “hot reload” coupled to remote services/resources


• Solution


• Deploy all services to remote environment and proxy/re-route tra
ff
ic to/from
a local running copy of a service (or subset of services)


• Example tool


• Telepresence (kubefwd, kubectl port-forward)
@danielbryantuk
Telepresence: Local-to-Remote bridge
$ telepresence intercept dataprocessingnodeservice --port 3000
23
getambassador.io/summer-of-k8s/code/week3
@danielbryantuk
Telepresence: Local-to-Remote bridge
24
www.youtube.com/watch?v=W_a3aErN3NU
@danielbryantuk
Telepresence: Local-to-Remote bridge
25
telepresence connect


• Open a tunnel to the remote cluster; exposes “in-cluster” services/network/DNS


telepresence intercept my-service —port 3000


• Re-routes (intercepts) tra
ff
ic to my-service in the remote cluster to my local machine


telepresence login & telepresence intercept


• Create preview URL to isolate and share results of the intercept
@danielbryantuk
Telepresence: Local-to-Remote bridge
$ telepresence intercept dataprocessingnodeservice --port 3000
26
Using deployment dataprocessingnodeservice


intercepted


State : ACTIVE


Destination : 127.0.0.1:3000


Intercepting: HTTP requests that match all of:


header("x-telepresence-intercept-id") ~= regexp ("76a1e848-1829-74x-1138-e3294c1e9119:dataprocessingnodeservice")


Preview URL : https://[random-subdomain].preview.edgestack.me


www.youtube.com/watch?v=W_a3aErN3NU
@danielbryantuk
Pattern: GitOps
27
• Pain points:


• No repeatable, auditable, & understandable deployment of infra and apps


• Slow hand-o
ff
s and manual deploys


• Solution


• Use version control (git) as single source of truth


• Declarative config; reconciled against target cluster


• Example tool


• Argo CD (Flux, JenkinsX, werf)
https://www.weave.works/blog/what-is-gitops-really
@danielbryantuk
Argo CD: GitOps for K8s
28
$ argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git /


--path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default
getambassador.io/summer-of-k8s/ship/week2
@danielbryantuk
GitOps in a Nutshell
29
https://www.weave.works/blog/the-gitops-pipeline
@danielbryantuk
Argo Rollouts: K8s Progressive Delivery Controller
30
getambassador.io/summer-of-k8s/ship/week3
@danielbryantuk
Putting it All Together: Safety and Speed
31
https://www.weave.works/blog/what-is-gitops-really
Development Production
Artifact syncing, Dev Env Bridging GitOps
Speed
Safety
@danielbryantuk
32
What about the platform
and the people?
@danielbryantuk
Workflow: Full Cycle Development
33
• App teams have full responsibility (and authority) for
delivering a service, and ultimately, value to users


• Increase agility by accelerating the feedback loop


• https://netflixtechblog.com/full-cycle-developers-at-netflix-a08c31f83249
@danielbryantuk
Conclusion
34
• Continuous delivery of value to users requires a focus on safety and
speed throughout the engineering workflow


• Bringing old mental models and tools can add toil to the process of
building, deploying, and operating cloud native services


• Adopt best practices first, such as artifact syncing, dev environment
bridging, and GitOps to increase both safety and speed
@danielbryantuk
• Learn more:


• www.getambassador.io/resources


• www.getambassador.io/use-case/local-kubernetes-development


• www.infoq.com/profile/Daniel-Bryant


• Find me in:


• Ambassador OSS Slack: a8r.io/slack


• Twitter @danielbryantuk
Many thanks!
35
@danielbryantuk
36
getambassador.io/dev-house

Más contenido relacionado

La actualidad más candente

A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...
CollabNet
 

La actualidad más candente (20)

GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
 
A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...
 
Ambassador Developer Office Hours: Summer of Kubernetes Ship Week 1: Intro to...
Ambassador Developer Office Hours: Summer of Kubernetes Ship Week 1: Intro to...Ambassador Developer Office Hours: Summer of Kubernetes Ship Week 1: Intro to...
Ambassador Developer Office Hours: Summer of Kubernetes Ship Week 1: Intro to...
 
CI/CD on Google Cloud Platform
CI/CD on Google Cloud PlatformCI/CD on Google Cloud Platform
CI/CD on Google Cloud Platform
 
Fully Orchestrating Applications, Microservices and Enterprise Services with ...
Fully Orchestrating Applications, Microservices and Enterprise Services with ...Fully Orchestrating Applications, Microservices and Enterprise Services with ...
Fully Orchestrating Applications, Microservices and Enterprise Services with ...
 
10 Steps to Cloud Happiness
10 Steps to Cloud Happiness10 Steps to Cloud Happiness
10 Steps to Cloud Happiness
 
Continuous Everything in a Multi-cloud and Multi-platform Environment
Continuous Everything in a Multi-cloud and Multi-platform EnvironmentContinuous Everything in a Multi-cloud and Multi-platform Environment
Continuous Everything in a Multi-cloud and Multi-platform Environment
 
Securing the Pipeline
Securing the PipelineSecuring the Pipeline
Securing the Pipeline
 
Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...
Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...
Overseeing Ship's Surveys and Surveyors Globally Using IoT and Docker by Jay ...
 
Evolving DevOps in the Age of Cloud Native
Evolving DevOps in the Age of Cloud NativeEvolving DevOps in the Age of Cloud Native
Evolving DevOps in the Age of Cloud Native
 
OpenWhisk: Event-driven Design
OpenWhisk: Event-driven DesignOpenWhisk: Event-driven Design
OpenWhisk: Event-driven Design
 
stackconf 2021 | Platform as a Product
stackconf 2021 | Platform as a Productstackconf 2021 | Platform as a Product
stackconf 2021 | Platform as a Product
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)
 
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
 
DevOps Moves To Production (Lori MacVittie)
DevOps Moves To Production (Lori MacVittie)DevOps Moves To Production (Lori MacVittie)
DevOps Moves To Production (Lori MacVittie)
 
Cloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native ApplicationsCloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native Applications
 
DevOps to DevSecOps Journey..
DevOps to DevSecOps Journey..DevOps to DevSecOps Journey..
DevOps to DevSecOps Journey..
 
Kubecon seattle 2018 workshop slides
Kubecon seattle 2018 workshop slidesKubecon seattle 2018 workshop slides
Kubecon seattle 2018 workshop slides
 
DevOps Spain 2019. Beatriz Martínez-IBM
DevOps Spain 2019. Beatriz Martínez-IBMDevOps Spain 2019. Beatriz Martínez-IBM
DevOps Spain 2019. Beatriz Martínez-IBM
 
DevOps Spain 2019. David Cañadillas -Cloudbees
DevOps Spain 2019. David Cañadillas -CloudbeesDevOps Spain 2019. David Cañadillas -Cloudbees
DevOps Spain 2019. David Cañadillas -Cloudbees
 

Similar a JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Practices and Tooling

Robust Network Security and Observability with GitOps and Cilium
Robust Network Security and Observability with GitOps and CiliumRobust Network Security and Observability with GitOps and Cilium
Robust Network Security and Observability with GitOps and Cilium
Weaveworks
 

Similar a JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Practices and Tooling (20)

Cloud native development without the toil
Cloud native development without the toilCloud native development without the toil
Cloud native development without the toil
 
Robust Network Security and Observability with GitOps and Cilium
Robust Network Security and Observability with GitOps and CiliumRobust Network Security and Observability with GitOps and Cilium
Robust Network Security and Observability with GitOps and Cilium
 
Don't Deploy Into the Dark: DORA Metrics for your K8s GitOps Deployments
Don't Deploy Into the Dark: DORA Metrics for your K8s GitOps DeploymentsDon't Deploy Into the Dark: DORA Metrics for your K8s GitOps Deployments
Don't Deploy Into the Dark: DORA Metrics for your K8s GitOps Deployments
 
Safe deployments with Blue-Green and Spinnaker
Safe deployments with Blue-Green and SpinnakerSafe deployments with Blue-Green and Spinnaker
Safe deployments with Blue-Green and Spinnaker
 
DevOps and AWS
DevOps and AWSDevOps and AWS
DevOps and AWS
 
OpenStack Enabling DevOps
OpenStack Enabling DevOpsOpenStack Enabling DevOps
OpenStack Enabling DevOps
 
Advanced deployment scenarios
Advanced deployment scenariosAdvanced deployment scenarios
Advanced deployment scenarios
 
AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementAzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release Management
 
DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013
 
AppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security AgileAppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security Agile
 
Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Part 3: Models in Production: A Look From Beginning to End
Part 3: Models in Production: A Look From Beginning to EndPart 3: Models in Production: A Look From Beginning to End
Part 3: Models in Production: A Look From Beginning to End
 
Splunk: Forward me the REST of those shells
Splunk: Forward me the REST of those shellsSplunk: Forward me the REST of those shells
Splunk: Forward me the REST of those shells
 
Delivering Applications Continuously to Cloud
Delivering Applications Continuously to CloudDelivering Applications Continuously to Cloud
Delivering Applications Continuously to Cloud
 
Linux Collaboration Summit Keynote: Transformation: It Takes a Platform
Linux Collaboration Summit Keynote: Transformation: It Takes a PlatformLinux Collaboration Summit Keynote: Transformation: It Takes a Platform
Linux Collaboration Summit Keynote: Transformation: It Takes a Platform
 
Full stack development best practice and toolset
Full stack development best practice and toolsetFull stack development best practice and toolset
Full stack development best practice and toolset
 
Continuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyContinuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases Weekly
 
Azure from scratch part 4
Azure from scratch part 4Azure from scratch part 4
Azure from scratch part 4
 

Más de Daniel Bryant

SACON EU 2019 "API Gateways and Service Meshes: Opening the Door to Applicati...
SACON EU 2019 "API Gateways and Service Meshes: Opening the Door to Applicati...SACON EU 2019 "API Gateways and Service Meshes: Opening the Door to Applicati...
SACON EU 2019 "API Gateways and Service Meshes: Opening the Door to Applicati...
Daniel Bryant
 

Más de Daniel Bryant (20)

ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
 
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
 
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
 
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
 
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
 
Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"
 
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
 
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
 
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
 
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
 
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextKubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
 
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
 
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
 
SoftwareCircus 2020 "The Past, Present, and Future of Cloud Native API Gateways"
SoftwareCircus 2020 "The Past, Present, and Future of Cloud Native API Gateways"SoftwareCircus 2020 "The Past, Present, and Future of Cloud Native API Gateways"
SoftwareCircus 2020 "The Past, Present, and Future of Cloud Native API Gateways"
 
DevOpsCon 2020: The Past, Present, and Future of Cloud Native API Gateways
DevOpsCon 2020: The Past, Present, and Future of Cloud Native API GatewaysDevOpsCon 2020: The Past, Present, and Future of Cloud Native API Gateways
DevOpsCon 2020: The Past, Present, and Future of Cloud Native API Gateways
 
AllTheTalks 2020: "The Past, Present, and Future of Cloud Native API Gateways"
AllTheTalks 2020: "The Past, Present, and Future of Cloud Native API Gateways"AllTheTalks 2020: "The Past, Present, and Future of Cloud Native API Gateways"
AllTheTalks 2020: "The Past, Present, and Future of Cloud Native API Gateways"
 
[DW Webinar] Effective Management of APIs and the Edge when Adopting Kubernetes
[DW Webinar] Effective Management of APIs and the Edge when Adopting Kubernetes[DW Webinar] Effective Management of APIs and the Edge when Adopting Kubernetes
[DW Webinar] Effective Management of APIs and the Edge when Adopting Kubernetes
 
KubeCon NA 2019 "Introduction to Telepresence: Fast Development (and Debuggin...
KubeCon NA 2019 "Introduction to Telepresence: Fast Development (and Debuggin...KubeCon NA 2019 "Introduction to Telepresence: Fast Development (and Debuggin...
KubeCon NA 2019 "Introduction to Telepresence: Fast Development (and Debuggin...
 
SACON EU 2019 "API Gateways and Service Meshes: Opening the Door to Applicati...
SACON EU 2019 "API Gateways and Service Meshes: Opening the Door to Applicati...SACON EU 2019 "API Gateways and Service Meshes: Opening the Door to Applicati...
SACON EU 2019 "API Gateways and Service Meshes: Opening the Door to Applicati...
 
JAX London 2019 "Cloud Native Communication: Using an API Gateway and Service...
JAX London 2019 "Cloud Native Communication: Using an API Gateway and Service...JAX London 2019 "Cloud Native Communication: Using an API Gateway and Service...
JAX London 2019 "Cloud Native Communication: Using an API Gateway and Service...
 

Último

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 

Último (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 

JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Practices and Tooling

  • 1. Jumpstart Your Cloud Native Development: An Overview of Practices and Tooling Daniel Bryant
  • 2. @danielbryantuk tl;dr 2 • Continuous delivery requires safety and speed throughout the engineering workflow • Bringing old mental models and tools can increase toil when building, testing, and running cloud native services • Artifact syncing, dev environment bridging, and GitOps increase both safety and speed
  • 4. @danielbryantuk Continuous delivery of value 4 “Continuous delivery is achieved when stability and speed can satisfy business demand. Discontinuous delivery occurs when stability and speed are insu ff icient.” - Steve Smith (@SteveSmith_Tech)
  • 5. @danielbryantuk Continuous delivery of value 5 “Continuous delivery is achieved when stability and speed can satisfy business demand. Discontinuous delivery occurs when stability and speed are insu ff icient.” - Steve Smith (@SteveSmith_Tech)
  • 6. @danielbryantuk Continuous delivery of value 6 “Continuous delivery is achieved when stability and speed can satisfy [your] business demand. Discontinuous delivery occurs when stability and speed are insu ff icient.” - Steve Smith (@SteveSmith_Tech)
  • 7. 7 Two modern so ft ware trends for speed and safety
  • 8. @danielbryantuk Trend #1: Microservices 8 • Modularisation • Aka “microservices” • Independently: • Build • Release • Scale • Operate • Strive for • High cohesion • Loose coupling
  • 9. @danielbryantuk Trend #2: Kubernetes 9 • Automated orchestration of container-based services • Declarative config (with reconciliation loops) • Common API/platform to support and extend • But… a non-trivial set of abstractions/components for developers • And it’s not a PaaS
  • 10. @danielbryantuk tl;dr 10 With cloud native, the focus is o ft en on speed
  • 11. The Kubernetes Migration Journey(s) 11 Exploration Organizational buy-in Cloud-native organization (Loosely coupled, highly aligned) Building services, but we’re not actually moving faster Let’s release our microservices as a monolith Centres of excellence (Tech & process changes) No coordination results in disasters and blame (deploy and operate K8s same as old infra) Investing in “paved road” platforms And new dev workflows Clinging to old mental models and 
 “the way it’s always been done”
  • 12. 12 Safety The ability to quickly ship changes to production, without fear
  • 13. Safety requires multiple strategies 13 Prevention Mitigation Detection Response Most common strategy (e.g., testing, QA, gated release) Critical strategies for cloud-native organizations when the application is a “complex adaptive system” } }
  • 14. Safety Strategies in the Cloud 14 Prevention Mitigation Detection Response • Testing: integration tests, user acceptance tests, … • High-fidelity replica environments for dev & test • Engineering for resilience • Progressive delivery: canary release, blue/green rollouts, … • Observability • Chaos engineering • Instant rollback & traceability • Runbooks, fast dev / test loops • Blameless postmortems • Game days
  • 15. Safety needs to be part of your workflow. 15 Develop Test Deploy/ Release Run Progressive Delivery Rollback Observability Chaos Engineering Runbooks Fast dev loop Fast feedback Realistic test environments
  • 16. 16 Develop Test Deploy/ Release Run Progressive Delivery Rollback Observability Chaos Engineering Runbooks Fast dev loop Fast feedback Realistic test environments Developer Self-Service
  • 18. @danielbryantuk Pattern: Artifact Syncing 18 • Pain points: • Can’t run all required dependent services locally • Sick of slow dev loop: code, build image, push to remote registry • Integration tests rely on mocks (with implicit assumptions) • Solution • Deploy all services to remote environment and sync local changes (combine with buildpacks) • O ft en combined with development environment bridging • Example tool • Ska ff old (ksync, Tilt, Garden)
  • 19. @danielbryantuk Ska ff old: “Source to K8s” CLI Tool $ skaffold dev 19 Listing files to watch... - skaffold-example Generating tags... - skaffold-example -> skaffold-example:v1.1.0-113-g4649f2c16 Checking cache... - skaffold-example: Not found. Building Found [docker-desktop] context, using local docker daemon. Building [skaffold-example]... Sending build context to Docker daemon 3.072kB Step 1/6 : FROM golang:1.12.9-alpine3.10 as builder ---> e0d646523991 Step 2/6 : COPY main.go . ---> Using cache ---> e4788ffa88e7 Step 3/6 : RUN go build -o /app main.go ---> Using cache ---> 686396d9e9cc Step 4/6 : FROM alpine:3.10 ---> 965ea09ff2eb Step 5/6 : CMD ["./app"] ---> Using cache ---> be0603b9d79e Step 6/6 : COPY --from=builder /app . ---> Using cache ---> c827aa5a4b12 Successfully built c827aa5a4b12 Successfully tagged skaffold-example:v1.1.0-113-g4649f2c16 Tags used in deployment: - skaffold-example -> skaffold-example:c827aa5a4b12e707163842b803d666eda11b8ec20c7a480198960cfdcb251042 local images can't be referenced by digest. They are tagged and referenced by a unique ID instead Starting deploy... - pod/getting-started created Watching for changes... [getting-started] Hello world! [getting-started] Hello world! [getting-started] Hello world!
  • 20. @danielbryantuk Ska ff old: “Source to K8s” CLI Tool 20 getambassador.io/summer-of-k8s/code/week3
  • 21. @danielbryantuk Ska ff old: “Source to K8s” CLI tool 21 skaffold dev & skaffold debug • Detects changes in your source code and handles the pipeline to build, push etc skaffold build & skaffold deploy • Execute as part of your CI/CD pipeline, or ska ff old run end-to-end skaffold render • Build your images and render templated Kubernetes manifests for use in GitOps workflows
  • 22. @danielbryantuk Pattern: Dev Environment Bridging/Extension 22 • Pain points: • Can’t run all required dependent services locally • Integration tests rely on mocks (with implicit assumptions) • Need “hot reload” coupled to remote services/resources • Solution • Deploy all services to remote environment and proxy/re-route tra ff ic to/from a local running copy of a service (or subset of services) • Example tool • Telepresence (kubefwd, kubectl port-forward)
  • 23. @danielbryantuk Telepresence: Local-to-Remote bridge $ telepresence intercept dataprocessingnodeservice --port 3000 23 getambassador.io/summer-of-k8s/code/week3
  • 25. @danielbryantuk Telepresence: Local-to-Remote bridge 25 telepresence connect • Open a tunnel to the remote cluster; exposes “in-cluster” services/network/DNS telepresence intercept my-service —port 3000 • Re-routes (intercepts) tra ff ic to my-service in the remote cluster to my local machine telepresence login & telepresence intercept • Create preview URL to isolate and share results of the intercept
  • 26. @danielbryantuk Telepresence: Local-to-Remote bridge $ telepresence intercept dataprocessingnodeservice --port 3000 26 Using deployment dataprocessingnodeservice intercepted State : ACTIVE Destination : 127.0.0.1:3000 Intercepting: HTTP requests that match all of: header("x-telepresence-intercept-id") ~= regexp ("76a1e848-1829-74x-1138-e3294c1e9119:dataprocessingnodeservice") Preview URL : https://[random-subdomain].preview.edgestack.me www.youtube.com/watch?v=W_a3aErN3NU
  • 27. @danielbryantuk Pattern: GitOps 27 • Pain points: • No repeatable, auditable, & understandable deployment of infra and apps • Slow hand-o ff s and manual deploys • Solution • Use version control (git) as single source of truth • Declarative config; reconciled against target cluster • Example tool • Argo CD (Flux, JenkinsX, werf) https://www.weave.works/blog/what-is-gitops-really
  • 28. @danielbryantuk Argo CD: GitOps for K8s 28 $ argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git / --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default getambassador.io/summer-of-k8s/ship/week2
  • 29. @danielbryantuk GitOps in a Nutshell 29 https://www.weave.works/blog/the-gitops-pipeline
  • 30. @danielbryantuk Argo Rollouts: K8s Progressive Delivery Controller 30 getambassador.io/summer-of-k8s/ship/week3
  • 31. @danielbryantuk Putting it All Together: Safety and Speed 31 https://www.weave.works/blog/what-is-gitops-really Development Production Artifact syncing, Dev Env Bridging GitOps Speed Safety
  • 32. @danielbryantuk 32 What about the platform and the people?
  • 33. @danielbryantuk Workflow: Full Cycle Development 33 • App teams have full responsibility (and authority) for delivering a service, and ultimately, value to users • Increase agility by accelerating the feedback loop • https://netflixtechblog.com/full-cycle-developers-at-netflix-a08c31f83249
  • 34. @danielbryantuk Conclusion 34 • Continuous delivery of value to users requires a focus on safety and speed throughout the engineering workflow • Bringing old mental models and tools can add toil to the process of building, deploying, and operating cloud native services • Adopt best practices first, such as artifact syncing, dev environment bridging, and GitOps to increase both safety and speed
  • 35. @danielbryantuk • Learn more: • www.getambassador.io/resources • www.getambassador.io/use-case/local-kubernetes-development • www.infoq.com/profile/Daniel-Bryant • Find me in: • Ambassador OSS Slack: a8r.io/slack • Twitter @danielbryantuk Many thanks! 35