In den letzten drei Jahren haben wir die Infrastruktur der Fernseh-Plattform waipu.tv gebaut. Dabei haben wir angefangen Tools für den Betrieb in Golang zu schreiben. Aus einigen der Tools wurden Core-Services, die auch die Last einer Fußball-WM-Übertragung locker wegstecken. Wir wollen euch zeigen, wie wir mit der selben Tool-Chain (Golang & Co) Betriebs-Probleme lösen und kritische Business-Applikationen entwickeln. Klassisch DevOps oder Golden Hammer?
Speaker: Christoph Petrausch, Igor Lankin (beide inovex)
Event: DevOpsConference, 04.12.2018
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
16. Programmierung häufig umständlich & langsam
schwache Unterstützung von Nebenläufigkeit
lange Build-Zeiten
schlechtes Tooling
Und die Programmiersprachen?
eher weniger
16
36. 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
37. mächtige CLIs möglich
- Subcommands
- Usability
- Hilfe
- Robustheit
siehe docker, kubectl
CLIs
ein Traum in Go
37
38. › 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
39. › Infrastrukturinformation zugänglich machen
› Interne API
› Build Tooling wie beim Exporter
› Deployment wie beim Exporter
Unser erster Go Service
… einige Exporter später
39
48. › 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
49. › … rockt
› … ist geeignet für Infrastruktur
› … ist geeignet für Web Services
› … hat uns extrem effizient gemacht
› … hat auch seine Eigenheiten
Fazit
Go...
49