SlideShare ist ein Scribd-Unternehmen logo
Dev + Ops = Go
DevOpsCon 2018
C. Petrausch, I. Lankin Dezember 2018
Christoph Petrausch
Systems Engineer
Vorstellungsrunde
2
Igor Lankin
Software Entwickler
Gopher
gophers by @reneefrench @ashleymcnamara3
4
All aboard the hype train!
https://research.hackerrank.com/developer-skills/2018/#insight45
Was ist so toll an Go?
6
einfach
pragmatisch
effizient
modern
Was ist so toll an Go?
statisch typisierte Sprache mit “scripty feeling”
7
8https://www.pexels.com/photo/person-raising-hands-mid-air-sidewards-while-standing-on-gray-steel-railings-680257
Grundbotschaft von Go ist “KISS”
kleine, einfache Lösungen
Lesbarkeit
Verständlichkeit
Einfachheit
Keep It Simple
9
einfache, klare Syntax
weniger Tipparbeit
flaches Typsystem
klarer Programmfluss
einheitliche Formatierung
Lesbarkeit
und Verständlichkeit
10
Tabs vs Spaces
11
standardisierte Formatierung
kein Styleguide
keine Kompromisse
automatische Formatierung (go fmt)
TABS!
Ende des Heiligen Krieges
12
Die Welt hat sich verändert
13
14
große Netzwerke
massive Cluster
Multi-Core Prozessoren
Millionen Code-Zeilen
Web Applikationen
Veränderungen
vor allem bei Google
15
Programmierung häufig umständlich & langsam
schwache Unterstützung von Nebenläufigkeit
lange Build-Zeiten
schlechtes Tooling
Und die Programmiersprachen?
eher weniger
16
Effiziente Entwicklung
Garbage Collector
Networking
Tooling
Nebenläufigkeit
Und Go?
by design!
17
Warten auf die Singularität
18 http://philosophyworkout.blogspot.de/2016/01/a-decade-of-economic-stagnation-looms.html
19
goroutines
go doSomething()
Communicating Sequential Processes (CSP)
21
Interaction between concurrent systems (T. Hoare, 1977)
Channel
https://talks.golang.org/2012/waza.slide22
Abgespaced?
24
Status Quo
25
anno 2015
Video Infrastructure Team
AWS+Data Center
Glasfasernetz
Docker, Prometheus, Grafana
Python, Saltstack
Aufgabe
Encoder Steuern
26
cli
encoder
configure
Let’s build a CLI
no go
› Python
› Sprachversion 2 vs 3
› Viel Testing um Typfehler zu vermeiden
› Mac vs. Linux vs. Windows
› Paketierung?
27
Paketierung
So banal es klingt…
Häufige Probleme:
Paketformat
Python Runtime
Dependency Management
28
Single Binary
All Inclusive
Statisch gelinked
Keine Abhängigkeiten
Cross-Compiling
29
Nachmacher
wir waren nicht die Ersten
30
Aufgabe
Encoder Steuern
31
cli
encoder
configure
for ch := range []{ ard, zdf, … } {
for enc := range []{encoder1,encoder2,...} {
configure(enc, ch)
}
}
Unser erstes Go Programm
naiv
32
Langsam
Encoder Steuern
33
Seeeehr lange Response Zeiten
cli
encoder
configure
for ch := range []{ ard, zdf, … } {
for enc := range []{encoder1,encoder2,...} {
go configure(enc, ch)
}
}
Unser erstes Go Programm
Parallel!
34
Overload
Zu viele Request
35
cli
encoder
configure
rate := time.Second / 10
throttle := time.Tick(rate)
for ch := range []{ ard, zdf, … } {
for enc := range []{encoder1, encoder2,...} {
go func() {
<-throttle
configure(enc, ch)
}()
}
}
Rate limiting
36
mächtige CLIs möglich
- Subcommands
- Usability
- Hilfe
- Robustheit
siehe docker, kubectl
CLIs
ein Traum in Go
37
› Upstreams nicht passende Features
› Upstream Python war schwer anpassbar
› Viele Exporter sind in Go
› Go hat beim CLI Tool funktioniert
Unser erster Go Prometheus Exporter
SNMP Prometheus Exporter
38
› Infrastrukturinformation zugänglich machen
› Interne API
› Build Tooling wie beim Exporter
› Deployment wie beim Exporter
Unser erster Go Service
… einige Exporter später
39
Microservices in Go
40
Effizient & Leichtgewichtig
41
kleine, spezialisierte Bibliotheken
- Auth
- Routing
- DBs / ORM
- Session
- Cloud
- …
Libs statt Frameworks
Oder auch Frameworks
wer es mag...
gin-gonic/gin
go-kit/kit
nytimes/gizmo
micro/go-micro
42
Keep it Simple
43
Robustheit
DevOps!
kleine, spezialisierte Bibliotheken
- Monitoring (prometheus)
- Circuit Breaker (hystrix)
- Logging (logrus, zap)
- Tracing (zipkin)
- Transport (http2, gRPC)
44
45
Built for Backend
Nicht nur Infrastruktur
Schnelle Entwicklung
Extrem Effizienz
Robustheit
Business-Metriken
Embedded UI
46
Go All-In
47
› Steuern des CDN
› Kontrollieren Encoder
› Manipulieren Video Manifeste
› Steuern des Netzwerks
› ….
› Stand heute > 50 Services mit ~5 Entwicklern
Unser erster Go Service
… bleibt nicht allein
48
› … rockt
› … ist geeignet für Infrastruktur
› … ist geeignet für Web Services
› … hat uns extrem effizient gemacht
› … hat auch seine Eigenheiten
Fazit
Go...
49
50
Don’t fight it
51
Dependency Management war schwer
52
Nicht zu viel Concurrency
53
Cross-funktionales Team essentiell
54
Dev + Ops = Go
55
Vielen Dank
Christoph Petrausch
Igor Lankin
inovex GmbH
Ludwig-Erhard-Allee 6
76131 Karlsruhe

Weitere ähnliche Inhalte

Ähnlich wie Dev + Ops = Go

Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
QAware GmbH
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
Hans-Joachim Piepereit
 
.NET Datenzugriff einfach und performant mit Micro O/R Mappern
.NET Datenzugriff einfach und performant mit Micro O/R Mappern .NET Datenzugriff einfach und performant mit Micro O/R Mappern
.NET Datenzugriff einfach und performant mit Micro O/R Mappern
André Krämer
 
Roadshow: «Whats new in sql server 2014»
Roadshow: «Whats new in sql server 2014»Roadshow: «Whats new in sql server 2014»
Roadshow: «Whats new in sql server 2014»
Digicomp Academy AG
 
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
FotiosKaramitsos
 
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Javacamunda services GmbH
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
Ulrich Krause
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
Olaf Lewitz
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
Ulrich Krause
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
Jürg Stuker
 
VampirTrace und Vampir
VampirTrace und VampirVampirTrace und Vampir
VampirTrace und Vampir
Andreas Schreiber
 
Webservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenWebservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbinden
Aptly GmbH
 
1. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.20231. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.2023
Johannes Kleinlercher
 
Digitalisierung von Büchern
Digitalisierung von BüchernDigitalisierung von Büchern
Digitalisierung von Büchern
pyhasse
 
Werkzeugkasten
WerkzeugkastenWerkzeugkasten
Werkzeugkasten
Hendrik Lösch
 
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragenA Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
Roland Ewald
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
Jan Gehring
 
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
Marc Müller
 

Ähnlich wie Dev + Ops = Go (20)

Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
.NET Datenzugriff einfach und performant mit Micro O/R Mappern
.NET Datenzugriff einfach und performant mit Micro O/R Mappern .NET Datenzugriff einfach und performant mit Micro O/R Mappern
.NET Datenzugriff einfach und performant mit Micro O/R Mappern
 
Agiles bpm
Agiles bpmAgiles bpm
Agiles bpm
 
Roadshow: «Whats new in sql server 2014»
Roadshow: «Whats new in sql server 2014»Roadshow: «Whats new in sql server 2014»
Roadshow: «Whats new in sql server 2014»
 
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
 
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
VampirTrace und Vampir
VampirTrace und VampirVampirTrace und Vampir
VampirTrace und Vampir
 
Webservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenWebservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbinden
 
1. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.20231. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.2023
 
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAYPLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
 
Digitalisierung von Büchern
Digitalisierung von BüchernDigitalisierung von Büchern
Digitalisierung von Büchern
 
Werkzeugkasten
WerkzeugkastenWerkzeugkasten
Werkzeugkasten
 
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragenA Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
 

Mehr von inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
inovex 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 AI
inovex 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 evolution
inovex GmbH
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
inovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
inovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
inovex 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 Umgebungen
inovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
inovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
inovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
inovex GmbH
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
inovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
inovex 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 Assistenten
inovex 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 Project
inovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
inovex 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 case
inovex 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 madness
inovex 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 Pulumi
inovex GmbH
 
Remote First – Der Arbeitsplatz in der Cloud
Remote First – Der Arbeitsplatz in der CloudRemote First – Der Arbeitsplatz in der Cloud
Remote First – Der Arbeitsplatz in der Cloud
inovex GmbH
 

Mehr von 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?
 
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
 
Remote First – Der Arbeitsplatz in der Cloud
Remote First – Der Arbeitsplatz in der CloudRemote First – Der Arbeitsplatz in der Cloud
Remote First – Der Arbeitsplatz in der Cloud
 

Dev + Ops = Go