SlideShare a Scribd company logo
1 of 28
Download to read offline
SUCCESSFUL DEVOPS
IMPLEMENTATION FOR
SMALL TEAMS:
A TRUE STORY
What is DevOps?
Definition
“A set of practices intended to reduce the time
between committing a change to a system
and the change being placed into normal production,
while ensuring high quality”
Bass, Len; Weber, Ingo; Zhu, Liming. DevOps: A
Software Architect's Perspective. ISBN
978-0134049847.
It’s not a new thing
already established in the industry - tons of job offerings confirm that
● automation, automation, automation
● containers eeeeverywheeereee
● The Cloud (i.e. someone else’s computer)
Simple test:
“are you DevOps level over 9000?”
● your answer for “how many servers do you have?” is “I have to check..”
● you do multiple production deployments each day
● your dev team can create new (micro)service along with all supporting
components without any ticket for ops team
● you can terminate any random instance in your infrastructure and the
environment will self-heal
● .. but let’s not even start with security related topics
DON’TS
How not to do “DevOps”
● Post a job description for
“DevOps Engineer” and hire a
few
● Put them on an “on-call”
● Push away developers from
directly interacting with the
environment
Effect?
Apart from low velocity and
quality you will get these:
● “Hey, can you send me logs
from my service?”
● “Heey, can you purge Redis for
me on staging?”
● “Heeey, I clicked deploy on
Jenkins and it’s stuck, HALP”
● “Heeeeeeeeeeeeeey….”
Let’s try another
approach
DO’S
● Do enable developers
● Streamline deployment
process
● Streamline infrastructure
management
● Guide, advise, discuss
● Hide complexity, but not too
much
● Treat yourself as a service
provider - deliver products not
tickets
BUT HOW ?!
It’s ok to hire
devops engineer
Brings experience and
specialized focus
● Communication skills are super
important here
● Tech requirements: good *nix
skills, good google skills and
sixth sense for sniffing bad
practices
● Probably the first person to
handle Security in your new
startup
Starting point
● Production environment: two servers,
dozen microservices
● Everything spinned up manually through
AWS Console
● Deployment meant ssh’ing to a server,
downloading new docker image,
stop+start (incurring downtime)
● Monitoring? Just cloudwatch logs
❌
● Spring Boot + Spring Cloud (Netflix)
● Dockerized, built on Jenkins
● Configured via environment variables
● Stateless
● Use of AWS
● Use of managed services
● Most important thing: competent
development team, eager to innovate 🚀
✅
1. Kubernetes
Fixing error prone deployments
● batteries-included approach
● documentation
○ courses, FAQs, examples
● popular
● reasonably sane
○ apart from Milicores concepts and
a few others ;-)
● Lots of progress in the past ~2 years
○ stable
○ reliable
○ lots of know-how
○ lots of lessons learned
○ powerful CLI
Kubernetes
cont’d
● Helm
● Spinnaker
● Jenkins integrations
● Operators for complex
deployments
● Monitoring stack
● Cloud offerings (GKE, EKS,
Azure) tons of tools on top of it
Tons of tools on top of it
Still, not a silver
bullet
YAAAML 😱
● 200-400 lines of YAML to
describe a service..
● Secrets management..
● Even with Helm, deployment
is a complex command
● Tains, tolerations, affinity,
heap vs total memory,
exposing ports, scraping
metrics .. and keep it all
consistent across multitude
of services
● Tooling versioning
Re: hide complexity, but not too much
● Jenkins deployment job is nice and all, up until it stops working
● How can you expect proficiency with Kubernetes / kubectl if all developers
ever do is push a Run button?
● Enable them by making it easy to use CLI tools
○ Prepare Helm, helm-secrets, helm-diff, all along with binaries, configs and ./setup.sh script
for easy installation
○ Create one template for all services, supporting most common configuration
○ Add yet another abstraction layer for most common tasks
Demo: qp
~200 lines of BASH script as an
abstraction layer on top of Helm
●
afterbefore
DevOps == Collaboration
● Example: monitor performance of all microservices
○ Example stack: Prometheus via Prometheus Operator
○ Add Service Monitor objects to each deployment
● New application<->platform contract emerged: just expose prometheus
metrics on port N and you will see your service graphs on Grafana
○ Developers responsible for adjusting their services to obey the new contract, make domain
specific dashboards
● Good tools helped here: Kubernetes made it easy to deploy the stack,
Spring framework made it easy to expose metrics
2. Infrastructure
as Code
Terraform + Atlantis
● Git-versioned infrastructure
● Migrate/Move or import existing
resources
● Setup Atlantis for audited and
peer-reviewed infrastructure changes
● Use the same tools to detect state drift
(changes that were made outside of
atlantis flow)
● Optionally remove user permissions so
that changes must go through Pull
Requests
Terraform
Declarative infrastructure
management
● Define AWS resources
○ Readable syntax
○ Combine multiple resources into
reusable module
● Plan
○ Compare definition with current
state
○ Display detailed changeset
● Apply
○ Make changes to infrastructure
○ Record state
● Team-workflow supported
○ State in AWS S3
○ Locks in DynamoDB
Atlantis
Pull Requests for infrastructure
1. GitHub hook on each Pull
Request to terraform repo
2. Additional layer of locking so
no other PR can touch the
same parts of infrastructure
3. Autoplan: show plan preview in
PR comments
4. Review & Approve Pull Request
5. Apply changes
6. Remove locks and merge
Demo?
If time permits ;-)
If time won’t permit: shout out to
my friend Szymon W. who made a
nice blogpost about introducing
terraform and atlantis across whole
company:
https://lab.getbase.com/terraform-base/
Does it work?
From my own experience
Cosmose:
● One “devops engineer”, seven contributors
to terraform repo in a month, eleven now
● > 10 production deployments per day
● 3x more microservices since I joined (~6
months)
● Infrastructure autoscaled 10x one time,
when a dev wanted to “speed up his
processing task” ;-)
Base / Zendesk Sell:
● Around 8 Ops and 42 (!) contributors to
terraform repo
● 30-50 deployments to prod daily
● High level of ownership in dev teams,
including expertise in running databases
(e.g. ElasticSearch, MySQL), building their
own infrastructure stacks (QA Kubernetes)
It works!
Thanks!
Jakub P. Głazik
zytek@nuxi.pl
github.com/zytek
Questions are more than welcome

More Related Content

What's hot

DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
Docker, Inc.
 
2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings
Haufe-Lexware GmbH & Co KG
 

What's hot (20)

Intro to Kubernetes Workshop — Innovation Labs July 2020
Intro to Kubernetes Workshop — Innovation Labs July 2020Intro to Kubernetes Workshop — Innovation Labs July 2020
Intro to Kubernetes Workshop — Innovation Labs July 2020
 
Unlimited Staging Environments
Unlimited Staging EnvironmentsUnlimited Staging Environments
Unlimited Staging Environments
 
Cloud Native Okteto Cloud
Cloud Native Okteto Cloud Cloud Native Okteto Cloud
Cloud Native Okteto Cloud
 
Why observability matters - now and in the future (w/guest Grafana)
Why observability matters - now and in the future (w/guest Grafana)Why observability matters - now and in the future (w/guest Grafana)
Why observability matters - now and in the future (w/guest Grafana)
 
Managing short lived Kubernetes (Production) deployments
Managing short lived Kubernetes (Production) deploymentsManaging short lived Kubernetes (Production) deployments
Managing short lived Kubernetes (Production) deployments
 
Deployment Strategies
Deployment StrategiesDeployment Strategies
Deployment Strategies
 
Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020
 
Docker + Tenserflow + GOlang - Golang singapore Meetup
Docker + Tenserflow + GOlang - Golang singapore MeetupDocker + Tenserflow + GOlang - Golang singapore Meetup
Docker + Tenserflow + GOlang - Golang singapore Meetup
 
Docker for tooling
Docker for toolingDocker for tooling
Docker for tooling
 
Openstack benelux 2015
Openstack benelux 2015Openstack benelux 2015
Openstack benelux 2015
 
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
 
5 cool ways to get started with Cloud Native Development ( with Okteto)
5 cool ways to get started with Cloud Native Development ( with Okteto)5 cool ways to get started with Cloud Native Development ( with Okteto)
5 cool ways to get started with Cloud Native Development ( with Okteto)
 
Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...
Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...
Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...
 
Monitoring and alerting as code with Terraform and New Relic
Monitoring and alerting as code with Terraform and New RelicMonitoring and alerting as code with Terraform and New Relic
Monitoring and alerting as code with Terraform and New Relic
 
Making it Easier to Contribute to Open Source Projects Using Docker Container...
Making it Easier to Contribute to Open Source Projects Using Docker Container...Making it Easier to Contribute to Open Source Projects Using Docker Container...
Making it Easier to Contribute to Open Source Projects Using Docker Container...
 
Hot deploy
Hot deployHot deploy
Hot deploy
 
Helm at reddit: from local dev, staging, to production
Helm at reddit: from local dev, staging, to productionHelm at reddit: from local dev, staging, to production
Helm at reddit: from local dev, staging, to production
 
Monitoring Weave Cloud with Prometheus
Monitoring Weave Cloud with PrometheusMonitoring Weave Cloud with Prometheus
Monitoring Weave Cloud with Prometheus
 
2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings
 
Journey of Kubernetes Scaling
Journey of Kubernetes ScalingJourney of Kubernetes Scaling
Journey of Kubernetes Scaling
 

Similar to Successful DevOps implementation for small teams a true story

Microservices Docker @Bonn Agile
Microservices Docker @Bonn AgileMicroservices Docker @Bonn Agile
Microservices Docker @Bonn Agile
Timo Derstappen
 

Similar to Successful DevOps implementation for small teams a true story (20)

Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShift
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015
 
Serverless - DevOps Lessons Learned From Production
Serverless - DevOps Lessons Learned From ProductionServerless - DevOps Lessons Learned From Production
Serverless - DevOps Lessons Learned From Production
 
The Self-Service Developer - GOTOCon CPH
The Self-Service Developer - GOTOCon CPHThe Self-Service Developer - GOTOCon CPH
The Self-Service Developer - GOTOCon CPH
 
Dynamic infrastructure for development
Dynamic infrastructure for developmentDynamic infrastructure for development
Dynamic infrastructure for development
 
Free GitOps Workshop
Free GitOps WorkshopFree GitOps Workshop
Free GitOps Workshop
 
Intro to OpenShift, MongoDB Atlas & Live Demo
Intro to OpenShift, MongoDB Atlas & Live DemoIntro to OpenShift, MongoDB Atlas & Live Demo
Intro to OpenShift, MongoDB Atlas & Live Demo
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
 
How Ansible Tower and Prometheus can help automate continuous deployments
How Ansible Tower and Prometheus can help automate continuous deployments How Ansible Tower and Prometheus can help automate continuous deployments
How Ansible Tower and Prometheus can help automate continuous deployments
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Kubernetes and CoreOS @ Athens Docker meetup
Kubernetes and CoreOS @ Athens Docker meetupKubernetes and CoreOS @ Athens Docker meetup
Kubernetes and CoreOS @ Athens Docker meetup
 
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...
 
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
 
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
DevOps Days Boston 2017: Real-world Kubernetes for DevOpsDevOps Days Boston 2017: Real-world Kubernetes for DevOps
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
 
Microservices Docker @Bonn Agile
Microservices Docker @Bonn AgileMicroservices Docker @Bonn Agile
Microservices Docker @Bonn Agile
 
PaaSTA: Running applications at Yelp
PaaSTA: Running applications at YelpPaaSTA: Running applications at Yelp
PaaSTA: Running applications at Yelp
 
Gaganjot Kaur- The Nx Workspace.docx
Gaganjot Kaur- The Nx Workspace.docxGaganjot Kaur- The Nx Workspace.docx
Gaganjot Kaur- The Nx Workspace.docx
 
Idi2018 - Serverless does not mean Opsless
Idi2018 - Serverless does not mean OpslessIdi2018 - Serverless does not mean Opsless
Idi2018 - Serverless does not mean Opsless
 

Recently uploaded

"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
mphochane1998
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Kandungan 087776558899
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
AldoGarca30
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
Kamal Acharya
 
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
MayuraD1
 

Recently uploaded (20)

"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdf
 
Engineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planesEngineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planes
 
kiln thermal load.pptx kiln tgermal load
kiln thermal load.pptx kiln tgermal loadkiln thermal load.pptx kiln tgermal load
kiln thermal load.pptx kiln tgermal load
 
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
 
A Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna MunicipalityA Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna Municipality
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
 
Online electricity billing project report..pdf
Online electricity billing project report..pdfOnline electricity billing project report..pdf
Online electricity billing project report..pdf
 
Computer Lecture 01.pptxIntroduction to Computers
Computer Lecture 01.pptxIntroduction to ComputersComputer Lecture 01.pptxIntroduction to Computers
Computer Lecture 01.pptxIntroduction to Computers
 
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
Moment Distribution Method For Btech Civil
Moment Distribution Method For Btech CivilMoment Distribution Method For Btech Civil
Moment Distribution Method For Btech Civil
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
 
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
Call Girls in South Ex (delhi) call me [🔝9953056974🔝] escort service 24X7
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
 

Successful DevOps implementation for small teams a true story

  • 3. Definition “A set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality” Bass, Len; Weber, Ingo; Zhu, Liming. DevOps: A Software Architect's Perspective. ISBN 978-0134049847.
  • 4. It’s not a new thing already established in the industry - tons of job offerings confirm that ● automation, automation, automation ● containers eeeeverywheeereee ● The Cloud (i.e. someone else’s computer)
  • 5. Simple test: “are you DevOps level over 9000?” ● your answer for “how many servers do you have?” is “I have to check..” ● you do multiple production deployments each day ● your dev team can create new (micro)service along with all supporting components without any ticket for ops team ● you can terminate any random instance in your infrastructure and the environment will self-heal ● .. but let’s not even start with security related topics
  • 6. DON’TS How not to do “DevOps” ● Post a job description for “DevOps Engineer” and hire a few ● Put them on an “on-call” ● Push away developers from directly interacting with the environment
  • 7. Effect? Apart from low velocity and quality you will get these: ● “Hey, can you send me logs from my service?” ● “Heey, can you purge Redis for me on staging?” ● “Heeey, I clicked deploy on Jenkins and it’s stuck, HALP” ● “Heeeeeeeeeeeeeey….”
  • 9. DO’S ● Do enable developers ● Streamline deployment process ● Streamline infrastructure management ● Guide, advise, discuss ● Hide complexity, but not too much ● Treat yourself as a service provider - deliver products not tickets
  • 11. It’s ok to hire devops engineer Brings experience and specialized focus ● Communication skills are super important here ● Tech requirements: good *nix skills, good google skills and sixth sense for sniffing bad practices ● Probably the first person to handle Security in your new startup
  • 12. Starting point ● Production environment: two servers, dozen microservices ● Everything spinned up manually through AWS Console ● Deployment meant ssh’ing to a server, downloading new docker image, stop+start (incurring downtime) ● Monitoring? Just cloudwatch logs ❌ ● Spring Boot + Spring Cloud (Netflix) ● Dockerized, built on Jenkins ● Configured via environment variables ● Stateless ● Use of AWS ● Use of managed services ● Most important thing: competent development team, eager to innovate 🚀 ✅
  • 13. 1. Kubernetes Fixing error prone deployments ● batteries-included approach ● documentation ○ courses, FAQs, examples ● popular ● reasonably sane ○ apart from Milicores concepts and a few others ;-) ● Lots of progress in the past ~2 years ○ stable ○ reliable ○ lots of know-how ○ lots of lessons learned ○ powerful CLI
  • 14. Kubernetes cont’d ● Helm ● Spinnaker ● Jenkins integrations ● Operators for complex deployments ● Monitoring stack ● Cloud offerings (GKE, EKS, Azure) tons of tools on top of it Tons of tools on top of it
  • 15. Still, not a silver bullet
  • 16. YAAAML 😱 ● 200-400 lines of YAML to describe a service.. ● Secrets management.. ● Even with Helm, deployment is a complex command ● Tains, tolerations, affinity, heap vs total memory, exposing ports, scraping metrics .. and keep it all consistent across multitude of services ● Tooling versioning
  • 17. Re: hide complexity, but not too much ● Jenkins deployment job is nice and all, up until it stops working ● How can you expect proficiency with Kubernetes / kubectl if all developers ever do is push a Run button? ● Enable them by making it easy to use CLI tools ○ Prepare Helm, helm-secrets, helm-diff, all along with binaries, configs and ./setup.sh script for easy installation ○ Create one template for all services, supporting most common configuration ○ Add yet another abstraction layer for most common tasks
  • 18. Demo: qp ~200 lines of BASH script as an abstraction layer on top of Helm ●
  • 20. DevOps == Collaboration ● Example: monitor performance of all microservices ○ Example stack: Prometheus via Prometheus Operator ○ Add Service Monitor objects to each deployment ● New application<->platform contract emerged: just expose prometheus metrics on port N and you will see your service graphs on Grafana ○ Developers responsible for adjusting their services to obey the new contract, make domain specific dashboards ● Good tools helped here: Kubernetes made it easy to deploy the stack, Spring framework made it easy to expose metrics
  • 21. 2. Infrastructure as Code Terraform + Atlantis ● Git-versioned infrastructure ● Migrate/Move or import existing resources ● Setup Atlantis for audited and peer-reviewed infrastructure changes ● Use the same tools to detect state drift (changes that were made outside of atlantis flow) ● Optionally remove user permissions so that changes must go through Pull Requests
  • 22. Terraform Declarative infrastructure management ● Define AWS resources ○ Readable syntax ○ Combine multiple resources into reusable module ● Plan ○ Compare definition with current state ○ Display detailed changeset ● Apply ○ Make changes to infrastructure ○ Record state ● Team-workflow supported ○ State in AWS S3 ○ Locks in DynamoDB
  • 23. Atlantis Pull Requests for infrastructure 1. GitHub hook on each Pull Request to terraform repo 2. Additional layer of locking so no other PR can touch the same parts of infrastructure 3. Autoplan: show plan preview in PR comments 4. Review & Approve Pull Request 5. Apply changes 6. Remove locks and merge
  • 24. Demo? If time permits ;-) If time won’t permit: shout out to my friend Szymon W. who made a nice blogpost about introducing terraform and atlantis across whole company: https://lab.getbase.com/terraform-base/
  • 26. From my own experience Cosmose: ● One “devops engineer”, seven contributors to terraform repo in a month, eleven now ● > 10 production deployments per day ● 3x more microservices since I joined (~6 months) ● Infrastructure autoscaled 10x one time, when a dev wanted to “speed up his processing task” ;-) Base / Zendesk Sell: ● Around 8 Ops and 42 (!) contributors to terraform repo ● 30-50 deployments to prod daily ● High level of ownership in dev teams, including expertise in running databases (e.g. ElasticSearch, MySQL), building their own infrastructure stacks (QA Kubernetes)