SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
TDD –
Tatort-Driven Development
Oder: Wie wir bei waipu.tv auch an einem Sonntagabend
die Nerven behalten
Michael Bruns, inovex GmbH
› Q: How many people watched Tatort on 03 April 2017?
› A: 14.56m
› Q: What’s the market share of this?
› A: 39.6%
2TDD –Tatort-Driven Development
Let’s start with a quiz
(Source: http://bit.ly/2uHEt7M)
3TDD –Tatort-Driven Development
Please allow me to introduce myself:
› Software developer, architect, therapist, ...
› AWS fanboy
› Built quite a bit of waipu.tv
› http://sayat.me/mbruns
Michael Bruns
inovex GmbH
4TDD –Tatort-Driven Development
What did we build?
AuthRegistration PlayoutEPG Recording
Users Streaming
......
Third
Party
...
5TDD –Tatort-Driven Development
How do people use it?
20:15
› Anybody who likes working at 20:15
every day?
› Including and especially on weekends?
› Don’t build a platform, use one - in our case: AWS
› Use what’s already there: EC2, RDS, S3, Elasticsearch,
Kinesis, Route53, Lambda ...
› Add shared stuff (e.g. JVM, nginx) to base image (AMI)
› Leave the rest to the services
6TDD –Tatort-Driven Development
How did we build it?
› Foster DevOps, i.e. tear down all political and
technological barriers
› Make infrastructure reproducible
› Choose the right tool for the job:
Terraform, GitLab CI, Prometheus, …
7TDD –Tatort-Driven Development
How did we build it?
8TDD –Tatort-Driven Development
Use the right tool for the job...
...and use it wisely!
› 50+ EC2 instances, 25+ Auto-Scaling Groups,
25+ ELBs, 75+ Security Groups
› ~30m objects / 3+ TB in S3 Buckets
› ~60m documents stored in Elasticsearch
› 50+ Git Repositories with GitLab CI
9TDD –Tatort-Driven Development
What did we use?
› ~15 Lambdas (growing a lot)
› 8 PostgreSQL databases, 10 Redis Caches
› 75+ DNS entries
› Java, JS, Clojure, Kotlin (and some Ruby, Lua, Go, …)
› ~15 people working in 5+ locations
10TDD –Tatort-Driven Development
What did we use?
› Infrastructure as Code
› Independent of provider (AWS, Azure, OpenStack, …)
› Multi-cloud strategy is possible
› https://www.terraform.io/
11TDD –Tatort-Driven Development
Terraform - Basics
12TDD –Tatort-Driven Development
Terraform - Examples
13TDD –Tatort-Driven Development
Terraform - Examples
› Version control
› Reproducible
› Manages dependencies (both implicit and explicit)
› State can be “planned” (i.e. validated)
› Remote state for collaboration
14TDD –Tatort-Driven Development
Terraform - Advantages
› Continuous Integration & Deployment
› Pipelines
› Stages, Environments, Variables, Tags, …
› Easy integration of runners
15TDD –Tatort-Driven Development
GitLab CI
16TDD –Tatort-Driven Development
The whole pipeline
Local Git
Repo
GitLab
Repo
GitLab CI Build
(Gradle,
Leiningen, …)
GitLab CI
Deployment
(Terraform)
Dev
GitLab CI
Deployment
(Terraform)
GitLab CI
Deployment
(Terraform)
Preview Prod
auto auto
manually manually
GitLab CI
Tests
auto
GitLab CI
Tests
auto
› Launch Configuration for services
› Automatic scaling of services based on
› Network/CPU usage
› Number of requests
› Schedules
17TDD –Tatort-Driven Development
AWS - Auto Scaling Groups
18TDD –Tatort-Driven Development
AWS - Auto Scaling Groups - Example
› “Serverless” functions
› Stateless
› Java (or better: JVM), Node.js, Python, C#, Go
› React to events (Kinesis, S3, Alexa, CloudWatch, …)
› “Infinite” scaling
19TDD –Tatort-Driven Development
AWS - Lambda
› I’ve been at x-celerate a year ago ranting about
Docker & Kubernetes
› Definitely useful technologies, but we still don’t use them
› If you’re application is trash without a container,
it will be trash inside a container as well
20TDD –Tatort-Driven Development
My Two Cents on Containers
› These are all just tools
› A fool with a tool is still a fool
› Tools won’t fix your people issues
21TDD –Tatort-Driven Development
The Bad News
Don’t put your unmaintainable monolith
into the cloud and expect things to get better!
22TDD –Tatort-Driven Development
Most important advice
› You will get automatic scaling
› You will get continuous delivery
› You will get a better distribution
23TDD –Tatort-Driven Development
Unmaintainable monolith in the cloud
(of errors)
(of a big ball of mud)
(of the stuff you already
didn’t know how to debug before and which you now
can’t even find because you aren’t writing the logs to a
central store yet and once the machine is gone all logs
are gone and now you sit in your office yelling and…)
› Improve the interiors (package/module structure, DB
access, number/distribution of requests, …)
› Automate as much as possible
› Start small, go micro only if necessary
› But start! Today is the best day to improve your
architecture.
24TDD –Tatort-Driven Development
Where to Start?
› Talk to each other
› Take responsibility
› Don’t point your finger at someone
› Don’t fall into this trap:
“Weeks of coding can save you hours of planning!”
25TDD –Tatort-Driven Development
The Social Aspects
› Firefighter for bugs or urgent issues
› Take turns
› Create an easy way to notify the
person in charge (e.g. @firefighter)
› Don’t be afraid to ask for help
26TDD –Tatort-Driven Development
Share the operational load
› Be open for constant change
› However, don’t change everything just because you can
› Sometimes legacy is not necessarily a bad thing
› Some changes might have consequences you don’t expect
27TDD –Tatort-Driven Development
Embrace Change
› Create a central board to request improvements
› Let the team make decisions which improvements are
most important
› Accept if the others think that your suggestion isn’t useful
28TDD –Tatort-Driven Development
Track Change
› Set the same goal(s) for everybody, but don’t set
too many rules
› Let teams find their best modus operandi
› Be careful with stuff like coding guidelines, static code
analysis, Git flow, …
29TDD –Tatort-Driven Development
The Everyday Work
› Repeat these sentences ten times every day:
› We are not Netflix
› We are not Google
› We are not Facebook
› We are not Spotify
30TDD –Tatort-Driven Development
The Mantra
› Don’t build a single point of failure
› Monitor your stuff
› Couple your services not as loosely as possible,
but as loosely as feasible
› Do you really need Kafka, Event Sourcing, CQRS, …?
31TDD –Tatort-Driven Development
Coupling Services
› Loosely coupled, small services
› Isolated from each other
› Supposed to fit into your head
› But what if they don’t just because of the sheer number
of services?!
32TDD –Tatort-Driven Development
“Micro”services
“One common anti-pattern when introducing DevOps to
an organization is to assign someone the role of 'DevOps'
or to call a team a 'DevOps team'. Doing so perpetuates
the kinds of silos that DevOps aims to break down and
prevents DevOps culture and practices from spreading
and being adopted by the wider organization.”
(Rouan Wilsenach,
https://martinfowler.com/bliki/DevOpsCulture.html)
33TDD –Tatort-Driven Development
DevOps - How not to do it
34TDD –Tatort-Driven Development
The Fear of DevOps
› Do I have to become an nginx ninja?
› Am I doing deployments 4 hours/day?
› Will my weekends look like this?
› There’s this one person constantly calling me at the most
awkward times because something isn’t working:
35TDD –Tatort-Driven Development
The Fear of DevOps
› But my mum’s phone not
working the way she wants
it to work has nothing to do
with DevOps!
Of course this isn’t really my mum!
And her calls are perfectly fine.
36TDD –Tatort-Driven Development
One final note...
➔ ➔
› Wear a helmet when riding your bike, i.e.:
› Expect failure
› The person to trust least is you
› Accept help
38TDD –Tatort-Driven Development
One final note...
Vielen Dank
Michael Bruns
inovex GmbH
Ludwig-Erhard-Allee 6
76131 Karlsruhe
michael.bruns@inovex.de
Twitter: @der_miggel Feedback:
http://sayat.me/mbruns

Contenu connexe

Similaire à TTD Tatort-driven Development

FOSDEM 2021 - Infrastructure as Code Drift & Driftctl
FOSDEM 2021 - Infrastructure as Code Drift & DriftctlFOSDEM 2021 - Infrastructure as Code Drift & Driftctl
FOSDEM 2021 - Infrastructure as Code Drift & DriftctlStephane Jourdan
 
Inextricably linked: reproducibility and productivity in data science and AI
Inextricably linked: reproducibility and productivity in data science and AIInextricably linked: reproducibility and productivity in data science and AI
Inextricably linked: reproducibility and productivity in data science and AILuke Marsden
 
Hashitalks 2021 Infrastructure Drift & Driftctl
Hashitalks 2021 Infrastructure Drift & Driftctl Hashitalks 2021 Infrastructure Drift & Driftctl
Hashitalks 2021 Infrastructure Drift & Driftctl Stephane Jourdan
 
An illustrated guide to microservices (ploneconf 10 21-2016)
An illustrated guide to microservices (ploneconf 10 21-2016)An illustrated guide to microservices (ploneconf 10 21-2016)
An illustrated guide to microservices (ploneconf 10 21-2016)Ambassador Labs
 
Monitoring First - Instrumenting Your Entire Stack for the Ultimate in Observ...
Monitoring First - Instrumenting Your Entire Stack for the Ultimate in Observ...Monitoring First - Instrumenting Your Entire Stack for the Ultimate in Observ...
Monitoring First - Instrumenting Your Entire Stack for the Ultimate in Observ...Deborah Schalm
 
Performance monitoring and call tracing in microservice environments
Performance monitoring and call tracing in microservice environmentsPerformance monitoring and call tracing in microservice environments
Performance monitoring and call tracing in microservice environmentsMartin Gutenbrunner
 
Sunny Tech 2019 - Craft Forever
Sunny Tech 2019 - Craft ForeverSunny Tech 2019 - Craft Forever
Sunny Tech 2019 - Craft ForeverCyrille Martraire
 
De-Risk Your Digital Transformation — And Reduce Time, Cost & Complexity
De-Risk Your Digital Transformation — And Reduce Time, Cost & ComplexityDe-Risk Your Digital Transformation — And Reduce Time, Cost & Complexity
De-Risk Your Digital Transformation — And Reduce Time, Cost & ComplexityInductive Automation
 
Social media analytics using Azure Technologies
Social media analytics using Azure TechnologiesSocial media analytics using Azure Technologies
Social media analytics using Azure TechnologiesKoray Kocabas
 
“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...
“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...
“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...DevClub_lv
 
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...Loadzen
 
Infrastructure - a journey from datacentres to cloud
Infrastructure - a journey from datacentres to cloudInfrastructure - a journey from datacentres to cloud
Infrastructure - a journey from datacentres to cloudEqual Experts
 
Pushing the hassle from production to developers. Easily
Pushing the hassle from production to developers. EasilyPushing the hassle from production to developers. Easily
Pushing the hassle from production to developers. EasilyMartin Gutenbrunner
 
Hacklu2011 tricaud
Hacklu2011 tricaudHacklu2011 tricaud
Hacklu2011 tricaudstricaud
 
An illustrated guide to microservices (boston python meetup - Aug 2016)
An illustrated guide to microservices (boston python meetup - Aug 2016)An illustrated guide to microservices (boston python meetup - Aug 2016)
An illustrated guide to microservices (boston python meetup - Aug 2016)Ambassador Labs
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Peter Gfader
 
Github github-github
Github github-githubGithub github-github
Github github-githubfusion2011
 
Software Engineering in Startups
Software Engineering in StartupsSoftware Engineering in Startups
Software Engineering in StartupsDusan Omercevic
 
DSC UTeM DevOps Session#1: Intro to DevOps Presentation Slides
DSC UTeM DevOps Session#1: Intro to DevOps Presentation SlidesDSC UTeM DevOps Session#1: Intro to DevOps Presentation Slides
DSC UTeM DevOps Session#1: Intro to DevOps Presentation SlidesDSC UTeM
 
GWAB2014 Italy Microsoft Azure Web Sites
GWAB2014 Italy Microsoft Azure Web SitesGWAB2014 Italy Microsoft Azure Web Sites
GWAB2014 Italy Microsoft Azure Web SitesMarco Parenzan
 

Similaire à TTD Tatort-driven Development (20)

FOSDEM 2021 - Infrastructure as Code Drift & Driftctl
FOSDEM 2021 - Infrastructure as Code Drift & DriftctlFOSDEM 2021 - Infrastructure as Code Drift & Driftctl
FOSDEM 2021 - Infrastructure as Code Drift & Driftctl
 
Inextricably linked: reproducibility and productivity in data science and AI
Inextricably linked: reproducibility and productivity in data science and AIInextricably linked: reproducibility and productivity in data science and AI
Inextricably linked: reproducibility and productivity in data science and AI
 
Hashitalks 2021 Infrastructure Drift & Driftctl
Hashitalks 2021 Infrastructure Drift & Driftctl Hashitalks 2021 Infrastructure Drift & Driftctl
Hashitalks 2021 Infrastructure Drift & Driftctl
 
An illustrated guide to microservices (ploneconf 10 21-2016)
An illustrated guide to microservices (ploneconf 10 21-2016)An illustrated guide to microservices (ploneconf 10 21-2016)
An illustrated guide to microservices (ploneconf 10 21-2016)
 
Monitoring First - Instrumenting Your Entire Stack for the Ultimate in Observ...
Monitoring First - Instrumenting Your Entire Stack for the Ultimate in Observ...Monitoring First - Instrumenting Your Entire Stack for the Ultimate in Observ...
Monitoring First - Instrumenting Your Entire Stack for the Ultimate in Observ...
 
Performance monitoring and call tracing in microservice environments
Performance monitoring and call tracing in microservice environmentsPerformance monitoring and call tracing in microservice environments
Performance monitoring and call tracing in microservice environments
 
Sunny Tech 2019 - Craft Forever
Sunny Tech 2019 - Craft ForeverSunny Tech 2019 - Craft Forever
Sunny Tech 2019 - Craft Forever
 
De-Risk Your Digital Transformation — And Reduce Time, Cost & Complexity
De-Risk Your Digital Transformation — And Reduce Time, Cost & ComplexityDe-Risk Your Digital Transformation — And Reduce Time, Cost & Complexity
De-Risk Your Digital Transformation — And Reduce Time, Cost & Complexity
 
Social media analytics using Azure Technologies
Social media analytics using Azure TechnologiesSocial media analytics using Azure Technologies
Social media analytics using Azure Technologies
 
“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...
“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...
“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...
 
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
 
Infrastructure - a journey from datacentres to cloud
Infrastructure - a journey from datacentres to cloudInfrastructure - a journey from datacentres to cloud
Infrastructure - a journey from datacentres to cloud
 
Pushing the hassle from production to developers. Easily
Pushing the hassle from production to developers. EasilyPushing the hassle from production to developers. Easily
Pushing the hassle from production to developers. Easily
 
Hacklu2011 tricaud
Hacklu2011 tricaudHacklu2011 tricaud
Hacklu2011 tricaud
 
An illustrated guide to microservices (boston python meetup - Aug 2016)
An illustrated guide to microservices (boston python meetup - Aug 2016)An illustrated guide to microservices (boston python meetup - Aug 2016)
An illustrated guide to microservices (boston python meetup - Aug 2016)
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity
 
Github github-github
Github github-githubGithub github-github
Github github-github
 
Software Engineering in Startups
Software Engineering in StartupsSoftware Engineering in Startups
Software Engineering in Startups
 
DSC UTeM DevOps Session#1: Intro to DevOps Presentation Slides
DSC UTeM DevOps Session#1: Intro to DevOps Presentation SlidesDSC UTeM DevOps Session#1: Intro to DevOps Presentation Slides
DSC UTeM DevOps Session#1: Intro to DevOps Presentation Slides
 
GWAB2014 Italy Microsoft Azure Web Sites
GWAB2014 Italy Microsoft Azure Web SitesGWAB2014 Italy Microsoft Azure Web Sites
GWAB2014 Italy Microsoft Azure Web Sites
 

Plus de inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

Plus de inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

Dernier

Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 

Dernier (20)

Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 

TTD Tatort-driven Development

  • 1. TDD – Tatort-Driven Development Oder: Wie wir bei waipu.tv auch an einem Sonntagabend die Nerven behalten Michael Bruns, inovex GmbH
  • 2. › Q: How many people watched Tatort on 03 April 2017? › A: 14.56m › Q: What’s the market share of this? › A: 39.6% 2TDD –Tatort-Driven Development Let’s start with a quiz (Source: http://bit.ly/2uHEt7M)
  • 3. 3TDD –Tatort-Driven Development Please allow me to introduce myself: › Software developer, architect, therapist, ... › AWS fanboy › Built quite a bit of waipu.tv › http://sayat.me/mbruns Michael Bruns inovex GmbH
  • 4. 4TDD –Tatort-Driven Development What did we build? AuthRegistration PlayoutEPG Recording Users Streaming ...... Third Party ...
  • 5. 5TDD –Tatort-Driven Development How do people use it? 20:15 › Anybody who likes working at 20:15 every day? › Including and especially on weekends?
  • 6. › Don’t build a platform, use one - in our case: AWS › Use what’s already there: EC2, RDS, S3, Elasticsearch, Kinesis, Route53, Lambda ... › Add shared stuff (e.g. JVM, nginx) to base image (AMI) › Leave the rest to the services 6TDD –Tatort-Driven Development How did we build it?
  • 7. › Foster DevOps, i.e. tear down all political and technological barriers › Make infrastructure reproducible › Choose the right tool for the job: Terraform, GitLab CI, Prometheus, … 7TDD –Tatort-Driven Development How did we build it?
  • 8. 8TDD –Tatort-Driven Development Use the right tool for the job... ...and use it wisely!
  • 9. › 50+ EC2 instances, 25+ Auto-Scaling Groups, 25+ ELBs, 75+ Security Groups › ~30m objects / 3+ TB in S3 Buckets › ~60m documents stored in Elasticsearch › 50+ Git Repositories with GitLab CI 9TDD –Tatort-Driven Development What did we use?
  • 10. › ~15 Lambdas (growing a lot) › 8 PostgreSQL databases, 10 Redis Caches › 75+ DNS entries › Java, JS, Clojure, Kotlin (and some Ruby, Lua, Go, …) › ~15 people working in 5+ locations 10TDD –Tatort-Driven Development What did we use?
  • 11. › Infrastructure as Code › Independent of provider (AWS, Azure, OpenStack, …) › Multi-cloud strategy is possible › https://www.terraform.io/ 11TDD –Tatort-Driven Development Terraform - Basics
  • 14. › Version control › Reproducible › Manages dependencies (both implicit and explicit) › State can be “planned” (i.e. validated) › Remote state for collaboration 14TDD –Tatort-Driven Development Terraform - Advantages
  • 15. › Continuous Integration & Deployment › Pipelines › Stages, Environments, Variables, Tags, … › Easy integration of runners 15TDD –Tatort-Driven Development GitLab CI
  • 16. 16TDD –Tatort-Driven Development The whole pipeline Local Git Repo GitLab Repo GitLab CI Build (Gradle, Leiningen, …) GitLab CI Deployment (Terraform) Dev GitLab CI Deployment (Terraform) GitLab CI Deployment (Terraform) Preview Prod auto auto manually manually GitLab CI Tests auto GitLab CI Tests auto
  • 17. › Launch Configuration for services › Automatic scaling of services based on › Network/CPU usage › Number of requests › Schedules 17TDD –Tatort-Driven Development AWS - Auto Scaling Groups
  • 18. 18TDD –Tatort-Driven Development AWS - Auto Scaling Groups - Example
  • 19. › “Serverless” functions › Stateless › Java (or better: JVM), Node.js, Python, C#, Go › React to events (Kinesis, S3, Alexa, CloudWatch, …) › “Infinite” scaling 19TDD –Tatort-Driven Development AWS - Lambda
  • 20. › I’ve been at x-celerate a year ago ranting about Docker & Kubernetes › Definitely useful technologies, but we still don’t use them › If you’re application is trash without a container, it will be trash inside a container as well 20TDD –Tatort-Driven Development My Two Cents on Containers
  • 21. › These are all just tools › A fool with a tool is still a fool › Tools won’t fix your people issues 21TDD –Tatort-Driven Development The Bad News
  • 22. Don’t put your unmaintainable monolith into the cloud and expect things to get better! 22TDD –Tatort-Driven Development Most important advice
  • 23. › You will get automatic scaling › You will get continuous delivery › You will get a better distribution 23TDD –Tatort-Driven Development Unmaintainable monolith in the cloud (of errors) (of a big ball of mud) (of the stuff you already didn’t know how to debug before and which you now can’t even find because you aren’t writing the logs to a central store yet and once the machine is gone all logs are gone and now you sit in your office yelling and…)
  • 24. › Improve the interiors (package/module structure, DB access, number/distribution of requests, …) › Automate as much as possible › Start small, go micro only if necessary › But start! Today is the best day to improve your architecture. 24TDD –Tatort-Driven Development Where to Start?
  • 25. › Talk to each other › Take responsibility › Don’t point your finger at someone › Don’t fall into this trap: “Weeks of coding can save you hours of planning!” 25TDD –Tatort-Driven Development The Social Aspects
  • 26. › Firefighter for bugs or urgent issues › Take turns › Create an easy way to notify the person in charge (e.g. @firefighter) › Don’t be afraid to ask for help 26TDD –Tatort-Driven Development Share the operational load
  • 27. › Be open for constant change › However, don’t change everything just because you can › Sometimes legacy is not necessarily a bad thing › Some changes might have consequences you don’t expect 27TDD –Tatort-Driven Development Embrace Change
  • 28. › Create a central board to request improvements › Let the team make decisions which improvements are most important › Accept if the others think that your suggestion isn’t useful 28TDD –Tatort-Driven Development Track Change
  • 29. › Set the same goal(s) for everybody, but don’t set too many rules › Let teams find their best modus operandi › Be careful with stuff like coding guidelines, static code analysis, Git flow, … 29TDD –Tatort-Driven Development The Everyday Work
  • 30. › Repeat these sentences ten times every day: › We are not Netflix › We are not Google › We are not Facebook › We are not Spotify 30TDD –Tatort-Driven Development The Mantra
  • 31. › Don’t build a single point of failure › Monitor your stuff › Couple your services not as loosely as possible, but as loosely as feasible › Do you really need Kafka, Event Sourcing, CQRS, …? 31TDD –Tatort-Driven Development Coupling Services
  • 32. › Loosely coupled, small services › Isolated from each other › Supposed to fit into your head › But what if they don’t just because of the sheer number of services?! 32TDD –Tatort-Driven Development “Micro”services
  • 33. “One common anti-pattern when introducing DevOps to an organization is to assign someone the role of 'DevOps' or to call a team a 'DevOps team'. Doing so perpetuates the kinds of silos that DevOps aims to break down and prevents DevOps culture and practices from spreading and being adopted by the wider organization.” (Rouan Wilsenach, https://martinfowler.com/bliki/DevOpsCulture.html) 33TDD –Tatort-Driven Development DevOps - How not to do it
  • 34. 34TDD –Tatort-Driven Development The Fear of DevOps › Do I have to become an nginx ninja? › Am I doing deployments 4 hours/day? › Will my weekends look like this?
  • 35. › There’s this one person constantly calling me at the most awkward times because something isn’t working: 35TDD –Tatort-Driven Development The Fear of DevOps › But my mum’s phone not working the way she wants it to work has nothing to do with DevOps! Of course this isn’t really my mum! And her calls are perfectly fine.
  • 36. 36TDD –Tatort-Driven Development One final note... ➔ ➔
  • 37. › Wear a helmet when riding your bike, i.e.: › Expect failure › The person to trust least is you › Accept help 38TDD –Tatort-Driven Development One final note...
  • 38. Vielen Dank Michael Bruns inovex GmbH Ludwig-Erhard-Allee 6 76131 Karlsruhe michael.bruns@inovex.de Twitter: @der_miggel Feedback: http://sayat.me/mbruns