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()
Dev + Ops = Go
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

PPT
C / C++ Api for Beginners
PDF
Eine Stunde was mit Api First!
PDF
Nebenläufigkeit mit Kotlins Koroutinen
PPTX
Django trifft Flutter
PDF
GenAI als Co-Developer: Wie KI uns hilft, besseren UiPath-Code zu schreiben
PPTX
C/ C++ for Notes & Domino Developers
PDF
Make Developers Fly: Principles for Platform Engineering
PDF
Cloud Migration mit KI: der Turbo
C / C++ Api for Beginners
Eine Stunde was mit Api First!
Nebenläufigkeit mit Kotlins Koroutinen
Django trifft Flutter
GenAI als Co-Developer: Wie KI uns hilft, besseren UiPath-Code zu schreiben
C/ C++ for Notes & Domino Developers
Make Developers Fly: Principles for Platform Engineering
Cloud Migration mit KI: der Turbo

Ähnlich wie Dev + Ops = Go (20)

PPT
C API for Lotus Notes & Domino
PDF
Make Developers Fly: Principles for Platform Engineering
PDF
Web Entwicklung mit PHP - Teil 3 Beta
PPTX
.NET Datenzugriff einfach und performant mit Micro O/R Mappern
PDF
PDF
Roadshow: «Whats new in sql server 2014»
PDF
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
PPT
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
PPT
Templates, Code & Tools
PPT
objectiF extrem
PPTX
Dnug35 ak-dev.071111-cookbook
PPT
Top 10 Internet Trends 2001
PPT
VampirTrace und Vampir
PDF
Webservice API - Webportale mit Force.com verbinden
PDF
1. Cloud Native Meetup Innsbruck, 23.11.2023
PDF
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PDF
Digitalisierung von Büchern
PPTX
Werkzeugkasten
PDF
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
ODP
Rex - Infrastruktur als Code
C API for Lotus Notes & Domino
Make Developers Fly: Principles for Platform Engineering
Web Entwicklung mit PHP - Teil 3 Beta
.NET Datenzugriff einfach und performant mit Micro O/R Mappern
Roadshow: «Whats new in sql server 2014»
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
Templates, Code & Tools
objectiF extrem
Dnug35 ak-dev.071111-cookbook
Top 10 Internet Trends 2001
VampirTrace und Vampir
Webservice API - Webportale mit Force.com verbinden
1. Cloud Native Meetup Innsbruck, 23.11.2023
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
Digitalisierung von Büchern
Werkzeugkasten
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
Rex - Infrastruktur als Code
Anzeige

Mehr von inovex GmbH (20)

PDF
lldb – Debugger auf Abwegen
PDF
Are you sure about that?! Uncertainty Quantification in AI
PDF
Why natural language is next step in the AI evolution
PDF
WWDC 2019 Recap
PDF
Network Policies
PDF
Interpretable Machine Learning
PDF
Jenkins X – CI/CD in wolkigen Umgebungen
PDF
AI auf Edge-Geraeten
PDF
Prometheus on Kubernetes
PDF
Deep Learning for Recommender Systems
PDF
Azure IoT Edge
PDF
Representation Learning von Zeitreihen
PDF
Talk to me – Chatbots und digitale Assistenten
PDF
Künstlich intelligent?
PDF
Das Android Open Source Project
PDF
Machine Learning Interpretability
PDF
Performance evaluation of GANs in a semisupervised OCR use case
PDF
People & Products – Lessons learned from the daily IT madness
PDF
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
PDF
Remote First – Der Arbeitsplatz in der Cloud
lldb – Debugger auf Abwegen
Are you sure about that?! Uncertainty Quantification in AI
Why natural language is next step in the AI evolution
WWDC 2019 Recap
Network Policies
Interpretable Machine Learning
Jenkins X – CI/CD in wolkigen Umgebungen
AI auf Edge-Geraeten
Prometheus on Kubernetes
Deep Learning for Recommender Systems
Azure IoT Edge
Representation Learning von Zeitreihen
Talk to me – Chatbots und digitale Assistenten
Künstlich intelligent?
Das Android Open Source Project
Machine Learning Interpretability
Performance evaluation of GANs in a semisupervised OCR use case
People & Products – Lessons learned from the daily IT madness
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Remote First – Der Arbeitsplatz in der Cloud
Anzeige

Dev + Ops = Go