Speaker: Christian Rohmann, inovex GmbH
28.04.2017
Weitere Tech-Vorträge: https://www.inovex.de/de/content-pool/vortraege/
Noch mehr Tech-Beiträge: https://www.inovex.de/blog/
Mein Vortrag auf der EnterJS 2015 über Sicherheit in Node.js Applikationen. Es werden verschiedene Angriffsvektoren vorgestellt und wie man ihnen begegnen kann.
Eine kurze Einführung in JRuby. JRuby ist ein Ruby Interpreter, der auf der Java-Plattform (JVM) ausgeführt wird. Er kombiniert die Vorzüge der JVM wie z.B. native Threads und einen hervorragenden Garbage Collector mit den Stärken von Ruby, drunter vollständige Objektorientiertheit und Meta Programming.
Testgetriebene Entwicklung mit Jasmine und Karma hat sich mittlerweile schon als defacto-Standard etabliert. Routinen ohne Abhängigkeiten lassen sich damit ohne Probleme testen. Die Schwierigkeiten beginnen jedoch schon, wenn es um die Auflösung von Abhängigkeiten geht. In diesem Vortrag werden verschiedene Strategien und Werkzeuge vorgestellt, mit denen Abhängigkeiten zu Objekten und Funktionen oder zum Server abgedeckt werden können. Aber nicht nur Abhängigkeiten stellen Schwierigkeiten bei der testgetriebenen Entwicklung dar, auch der Umgang mit Fixtures ist bei der testgetriebenen Entwicklung mit JavaScript relevant. Abgerundet wird dieser Vortrag mit einigen Best Practices für die testgetriebenen Entwicklung mit JavaScript.
Code Days 2019, München: Vortrag von Johannes Weigend (@JohannesWeigend, Technischer Geschäftsführer bei QAware)
=== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ===
Abstract:
Programmiersprachen für die Cloud - Java und Go im Vergleich
Java ist nach dem Tiobe Index 2018 unangefochten Platz 1 bei den weltweit eingesetzten Programmiersprachen. Java ist ausgereift, stabil und verfügt über ein immenses Open Source Ökosystem. Was will man mehr? Obwohl Java gerade für die Backend Entwicklung attraktiv ist, hat Google 2008 eine eigene Programmiersprache Open Source gestellt: Golang oder kurz Go. Der Vortrag beleuchtet die Stärken und Schwächen von Go gegenüber Java, gibt Hinweise für welche Projekte Go eine gute Alternative ist, und wie ein Best of Breed Ansatz aussehen kann. Interessant an Go ist, dass die Grundbausteine von Cloud Plattformen wie OpenShift oder die Google Container Plattform mit Go erstellt wurden. Docker, Kubernetes, Helm, Grafana oder Prometheus ‒ alles ist mit Go programmiert. Die Fragen aus der Sicht von Java-Experten sind: Was macht Go für die Cloud so interessant? Gibt es Funktionen, die Java Programmierer kennen sollten, und wenn ja, welche?
Auch nach mehr als 20 Jahren ist Jakarta EE (ehemals Java EE) DER Standard, wenn es um die Entwicklung Java-basierter Enterprise-Computing-Lösungen geht. Das gilt zumindest immer dann, wenn die Anwendung als Monolith in einem Application-Server deployt werden soll. Wie aber steht es mit einer Anwendung, die aus einer Vielzahl autark laufender Microservices besteht? Und wie gut schlägt sich Jakarta EE in der Cloud, in der geringer Speicherbedarf und schnelle Startzeiten gefragt sind? Die Session zeigt, wie es Jakarta EE geschafft hat, mit der Zeit zu gehen und so mit Hilfe von Nebenprojekten wie Eclipse MicroProfile den Anforderungen moderner Cloud-Native-Anwendungen gerecht zu werden. Ein Ausblick das Zusammenspiel mit GraalVM und Quarkus zeigt, das Jakarta EE dabei auch in extrem verteilten Cloud-Szenarien, aka Serverless, eine gute Figur macht.
Mein Vortrag auf der EnterJS 2015 über Sicherheit in Node.js Applikationen. Es werden verschiedene Angriffsvektoren vorgestellt und wie man ihnen begegnen kann.
Eine kurze Einführung in JRuby. JRuby ist ein Ruby Interpreter, der auf der Java-Plattform (JVM) ausgeführt wird. Er kombiniert die Vorzüge der JVM wie z.B. native Threads und einen hervorragenden Garbage Collector mit den Stärken von Ruby, drunter vollständige Objektorientiertheit und Meta Programming.
Testgetriebene Entwicklung mit Jasmine und Karma hat sich mittlerweile schon als defacto-Standard etabliert. Routinen ohne Abhängigkeiten lassen sich damit ohne Probleme testen. Die Schwierigkeiten beginnen jedoch schon, wenn es um die Auflösung von Abhängigkeiten geht. In diesem Vortrag werden verschiedene Strategien und Werkzeuge vorgestellt, mit denen Abhängigkeiten zu Objekten und Funktionen oder zum Server abgedeckt werden können. Aber nicht nur Abhängigkeiten stellen Schwierigkeiten bei der testgetriebenen Entwicklung dar, auch der Umgang mit Fixtures ist bei der testgetriebenen Entwicklung mit JavaScript relevant. Abgerundet wird dieser Vortrag mit einigen Best Practices für die testgetriebenen Entwicklung mit JavaScript.
Code Days 2019, München: Vortrag von Johannes Weigend (@JohannesWeigend, Technischer Geschäftsführer bei QAware)
=== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ===
Abstract:
Programmiersprachen für die Cloud - Java und Go im Vergleich
Java ist nach dem Tiobe Index 2018 unangefochten Platz 1 bei den weltweit eingesetzten Programmiersprachen. Java ist ausgereift, stabil und verfügt über ein immenses Open Source Ökosystem. Was will man mehr? Obwohl Java gerade für die Backend Entwicklung attraktiv ist, hat Google 2008 eine eigene Programmiersprache Open Source gestellt: Golang oder kurz Go. Der Vortrag beleuchtet die Stärken und Schwächen von Go gegenüber Java, gibt Hinweise für welche Projekte Go eine gute Alternative ist, und wie ein Best of Breed Ansatz aussehen kann. Interessant an Go ist, dass die Grundbausteine von Cloud Plattformen wie OpenShift oder die Google Container Plattform mit Go erstellt wurden. Docker, Kubernetes, Helm, Grafana oder Prometheus ‒ alles ist mit Go programmiert. Die Fragen aus der Sicht von Java-Experten sind: Was macht Go für die Cloud so interessant? Gibt es Funktionen, die Java Programmierer kennen sollten, und wenn ja, welche?
Auch nach mehr als 20 Jahren ist Jakarta EE (ehemals Java EE) DER Standard, wenn es um die Entwicklung Java-basierter Enterprise-Computing-Lösungen geht. Das gilt zumindest immer dann, wenn die Anwendung als Monolith in einem Application-Server deployt werden soll. Wie aber steht es mit einer Anwendung, die aus einer Vielzahl autark laufender Microservices besteht? Und wie gut schlägt sich Jakarta EE in der Cloud, in der geringer Speicherbedarf und schnelle Startzeiten gefragt sind? Die Session zeigt, wie es Jakarta EE geschafft hat, mit der Zeit zu gehen und so mit Hilfe von Nebenprojekten wie Eclipse MicroProfile den Anforderungen moderner Cloud-Native-Anwendungen gerecht zu werden. Ein Ausblick das Zusammenspiel mit GraalVM und Quarkus zeigt, das Jakarta EE dabei auch in extrem verteilten Cloud-Szenarien, aka Serverless, eine gute Figur macht.
Java scheint mit seinem Memory- und Runtime-Overhead in Zeiten von Cloud-native und Serverless nicht wirklich gut für die Zukunft gerüstet. Erschwerend kommt hinzu, dass viele auf Java basierende Frameworks mit Annotation Scanning, Aufbau von Proxies und Caches das Start- und Speicherverhalten weiter negativ beeinflussen. Bedeutet das das Aus für Java in der Wunderwelt der Cloud? Mitnichten! Projekte wie Quarkus versuchen, Java in der Cloud zur Numero Uno werden zu lassen. Und das auf beeindruckende Art und Weise. Die Session zeigt anhand praktischer Beispiele, was heute bereits möglich ist.
Folien von meinem Talk auf der WJAX 2012, der Code für das Beispiel befindet sich hier: https://bitbucket.org/camunda/outer-space-demos/src/master/wjax2012-bestellprozess?at=master
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Marc Müller
DevOps als ganzheitliche Strategie geht von drei Phasen aus: Build - Measure - Learn. Die Build Phase mit der zeitnahen schnellen Realisierung, Integration und Deployment von neuen Features mit hohem Kundennutzen, haben Teams dank agiler Vorgehensmodelle mittlerweile gut im Griff. Sträflich vernachlässigt werden aber noch die essenziellen Phasen Messen und Verbessern. Viele Teams haben hier noch keine konkrete Idee, wie ein pragmatischer Messprozess aussehen kann. Der Vortrag wird sich deshalb dem Thema "Measure und Learn" aus Service- und Nutzerperspektive annehmen. Leitfragen sind bspw.: Arbeitet meine Infrastruktur noch wie geplant? Werden Dienste unbemerkt langsamer? Welche Funktionalitäten werden genutzt? Funktionieren Apps und Services überall wie geplant? Abgerundert werden die Fragen mit Demos aus AIT Projekten, bei denen u.a. das VS Last & Performance Test Framework sowie der Cloud-Dienst Application Insights neu zu einem 360° Applikationsmonitoring zusammengestellt wurden.
Java-Anwendungen betreiben mit DurchblickTobias Frech
Was tun, wenn ein Troubleshooting in der Produktion, eine Analyse eines Lasttests oder einfach die Unterstützung der Entwicklung auf anderen Systemen durch den Betrieb angesagt ist? Ein langjähriger Java-Administrator öffnet seinen Erfahrungsschatz und berichtet, welche Werkzeuge und Vorgehensweisen sich für ihn in diesen Fällen bewährt haben:
Bei den Werkzeugen geht es um die im JDK mitgelieferten jstat/jinfo/jmap und das neue jcmd. Auf der grafischen Seite sollte jeder Entwickler und Admin die Möglichkeiten der VisualVM kennen. Damit Troubleshooting möglichst erfolgreich abläuft und der Lasttest einen Erkenntnisgewinn über das System bringt, muss man sich nicht auf das Glück verlassen, sondern kann dies mit einem systematischen Vorgehen zuverlässig und wiederholbar meistern.
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
Slides zum Vortrag von Patrick Baumgartner & Odilo Oehmichen am Java Forum Stuttgart.
Die gleichen Slides sind auch im Account von Patrick Baumgartner verfügbar.
Quarkus, GraalVM und co. Java in der Cloud-Native WeltMichael Frembs
Java hat ein Problem. Es ist für die Cloud-Native Welt zu Ressourcen fressend. Mit Quarkus und der GraalVM gibt es eine Möglichkeit das Problem anzugehen. Die Präsentation wurde in folgendem MeetUp gehalten: https://www.meetup.com/de-DE/IBM-Hybrid-Multi-Cloud-Munich/events/262893313/
Klappe auf! Was macht die JVM denn da? [Ger]Tobias Frech
JVM tools for JVM troubleshooting. For performance troubleshooting, load tests, migration troubleshooting.
Tools like jinfo, jstat, jstack. A practical process to locate the troublemaker.
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?Marc Müller
DevOps als ganzheitliche Strategie geht von drei Phasen aus: Build - Measure - Learn. Die Build Phase mit der zeitnahen schnellen Realisierung, Integration und Deployment von neuen Features mit hohem Kundennutzen, haben Teams dank agiler Vorgehensmodelle mittlerweile gut im Griff. Sträflich vernachlässigt werden aber noch die essenziellen Phasen Messen und Verbessern. Viele Teams haben hier noch keine konkrete Idee, wie ein pragmatischer Messprozess aussehen kann. Der Vortrag wird sich deshalb dem Thema "Measure und Learn" aus Service- und Nutzerperspektive annehmen. Leitfragen sind bspw.: Arbeitet meine Infrastruktur noch wie geplant? Werden Dienste unbemerkt langsamer? Welche Funktionalitäten werden genutzt? Funktionieren Apps und Services überall wie geplant? Abgerundert werden die Fragen mit Demos aus AIT Projekten, bei denen u.a. das VS Last & Performance Test Framework sowie der Cloud-Dienst Application Insights neu zu einem 360° Applikationsmonitoring zusammengestellt wurden.
Ein typischer und etablierter Use-Case für ELK ist das prozessieren, aggregieren und analysierbar machen diverser Logfiles. Aber ELK kann prinzipiell für alle möglichen, event-basierte Daten (strukturiert oder unstrukturiert) verwendet werden. Wir werden an Hand von zwei Projekten betrachten.
• ELK und JMeter
• ELK und Hystrix
Um es vorweg zu nehmen: ja, es geht und ELK rockt ;)
Der Vortrag wurde beim inovex Search-Meetup in Karlsruhe am 29.01.2015 gehalten.
Speaker: Max Wippert (inovex)
Mehr inovex-Meetups:
Karlsruhe: http://www.meetup.com/inovex-karlsruhe/
Köln: http://www.meetup.com/inovex-cologne
München: http://www.meetup.com/inovex-munich/
lldb kann mehr als nur einfache Breakpoints oder po. In dem Vortrag zeigt Oliver Bayer, wie sich mit Hilfe von lldb Programmcode zur Ausführungszeit manipulieren lässt, ohne das hierfür der Sourcecode anzupassen ist. Sei es, damit Test- oder Debugcode nicht in die produktiv App gelangt, oder weil der Sourcecode für einen Teil der App nicht vorliegt.
Event: macoun, 04.10.2019
Speaker: Oliver Bayer, inovex
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
With the advent of Deep Learning (DL), the field of AI made a giant leap forward and it is nowadays applied in many industrial use-cases. Especially critical systems like autonomous driving, require that DL methods not only produce a prediction but also state the certainty about the prediction in order to assess risks and failure.
In my talk, I will give an introduction to different kinds of uncertainty, i.e. epistemic and aleatoric. To have a baseline for comparison, the classical method of Gaussian Processes for regression problems is presented. I then elaborate on different DL methods for uncertainty quantification like Quantile Regression, Monte-Carlo Dropout, and Deep Ensembles. The talk is concluded with a comparison of these techniques to Gaussian Processes and the current state of the art.
Speaker: Dr. Florian Wilhelm, Simon Bachstein, inovex
Event: PyCon/PyData Berlin 2019
Datum: 10.10.2019
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Weitere ähnliche Inhalte
Ähnlich wie Brownbag: Java Applikationen und die JVM für „Ops“
Java scheint mit seinem Memory- und Runtime-Overhead in Zeiten von Cloud-native und Serverless nicht wirklich gut für die Zukunft gerüstet. Erschwerend kommt hinzu, dass viele auf Java basierende Frameworks mit Annotation Scanning, Aufbau von Proxies und Caches das Start- und Speicherverhalten weiter negativ beeinflussen. Bedeutet das das Aus für Java in der Wunderwelt der Cloud? Mitnichten! Projekte wie Quarkus versuchen, Java in der Cloud zur Numero Uno werden zu lassen. Und das auf beeindruckende Art und Weise. Die Session zeigt anhand praktischer Beispiele, was heute bereits möglich ist.
Folien von meinem Talk auf der WJAX 2012, der Code für das Beispiel befindet sich hier: https://bitbucket.org/camunda/outer-space-demos/src/master/wjax2012-bestellprozess?at=master
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Marc Müller
DevOps als ganzheitliche Strategie geht von drei Phasen aus: Build - Measure - Learn. Die Build Phase mit der zeitnahen schnellen Realisierung, Integration und Deployment von neuen Features mit hohem Kundennutzen, haben Teams dank agiler Vorgehensmodelle mittlerweile gut im Griff. Sträflich vernachlässigt werden aber noch die essenziellen Phasen Messen und Verbessern. Viele Teams haben hier noch keine konkrete Idee, wie ein pragmatischer Messprozess aussehen kann. Der Vortrag wird sich deshalb dem Thema "Measure und Learn" aus Service- und Nutzerperspektive annehmen. Leitfragen sind bspw.: Arbeitet meine Infrastruktur noch wie geplant? Werden Dienste unbemerkt langsamer? Welche Funktionalitäten werden genutzt? Funktionieren Apps und Services überall wie geplant? Abgerundert werden die Fragen mit Demos aus AIT Projekten, bei denen u.a. das VS Last & Performance Test Framework sowie der Cloud-Dienst Application Insights neu zu einem 360° Applikationsmonitoring zusammengestellt wurden.
Java-Anwendungen betreiben mit DurchblickTobias Frech
Was tun, wenn ein Troubleshooting in der Produktion, eine Analyse eines Lasttests oder einfach die Unterstützung der Entwicklung auf anderen Systemen durch den Betrieb angesagt ist? Ein langjähriger Java-Administrator öffnet seinen Erfahrungsschatz und berichtet, welche Werkzeuge und Vorgehensweisen sich für ihn in diesen Fällen bewährt haben:
Bei den Werkzeugen geht es um die im JDK mitgelieferten jstat/jinfo/jmap und das neue jcmd. Auf der grafischen Seite sollte jeder Entwickler und Admin die Möglichkeiten der VisualVM kennen. Damit Troubleshooting möglichst erfolgreich abläuft und der Lasttest einen Erkenntnisgewinn über das System bringt, muss man sich nicht auf das Glück verlassen, sondern kann dies mit einem systematischen Vorgehen zuverlässig und wiederholbar meistern.
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
Slides zum Vortrag von Patrick Baumgartner & Odilo Oehmichen am Java Forum Stuttgart.
Die gleichen Slides sind auch im Account von Patrick Baumgartner verfügbar.
Quarkus, GraalVM und co. Java in der Cloud-Native WeltMichael Frembs
Java hat ein Problem. Es ist für die Cloud-Native Welt zu Ressourcen fressend. Mit Quarkus und der GraalVM gibt es eine Möglichkeit das Problem anzugehen. Die Präsentation wurde in folgendem MeetUp gehalten: https://www.meetup.com/de-DE/IBM-Hybrid-Multi-Cloud-Munich/events/262893313/
Klappe auf! Was macht die JVM denn da? [Ger]Tobias Frech
JVM tools for JVM troubleshooting. For performance troubleshooting, load tests, migration troubleshooting.
Tools like jinfo, jstat, jstack. A practical process to locate the troublemaker.
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?Marc Müller
DevOps als ganzheitliche Strategie geht von drei Phasen aus: Build - Measure - Learn. Die Build Phase mit der zeitnahen schnellen Realisierung, Integration und Deployment von neuen Features mit hohem Kundennutzen, haben Teams dank agiler Vorgehensmodelle mittlerweile gut im Griff. Sträflich vernachlässigt werden aber noch die essenziellen Phasen Messen und Verbessern. Viele Teams haben hier noch keine konkrete Idee, wie ein pragmatischer Messprozess aussehen kann. Der Vortrag wird sich deshalb dem Thema "Measure und Learn" aus Service- und Nutzerperspektive annehmen. Leitfragen sind bspw.: Arbeitet meine Infrastruktur noch wie geplant? Werden Dienste unbemerkt langsamer? Welche Funktionalitäten werden genutzt? Funktionieren Apps und Services überall wie geplant? Abgerundert werden die Fragen mit Demos aus AIT Projekten, bei denen u.a. das VS Last & Performance Test Framework sowie der Cloud-Dienst Application Insights neu zu einem 360° Applikationsmonitoring zusammengestellt wurden.
Ein typischer und etablierter Use-Case für ELK ist das prozessieren, aggregieren und analysierbar machen diverser Logfiles. Aber ELK kann prinzipiell für alle möglichen, event-basierte Daten (strukturiert oder unstrukturiert) verwendet werden. Wir werden an Hand von zwei Projekten betrachten.
• ELK und JMeter
• ELK und Hystrix
Um es vorweg zu nehmen: ja, es geht und ELK rockt ;)
Der Vortrag wurde beim inovex Search-Meetup in Karlsruhe am 29.01.2015 gehalten.
Speaker: Max Wippert (inovex)
Mehr inovex-Meetups:
Karlsruhe: http://www.meetup.com/inovex-karlsruhe/
Köln: http://www.meetup.com/inovex-cologne
München: http://www.meetup.com/inovex-munich/
lldb kann mehr als nur einfache Breakpoints oder po. In dem Vortrag zeigt Oliver Bayer, wie sich mit Hilfe von lldb Programmcode zur Ausführungszeit manipulieren lässt, ohne das hierfür der Sourcecode anzupassen ist. Sei es, damit Test- oder Debugcode nicht in die produktiv App gelangt, oder weil der Sourcecode für einen Teil der App nicht vorliegt.
Event: macoun, 04.10.2019
Speaker: Oliver Bayer, inovex
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
With the advent of Deep Learning (DL), the field of AI made a giant leap forward and it is nowadays applied in many industrial use-cases. Especially critical systems like autonomous driving, require that DL methods not only produce a prediction but also state the certainty about the prediction in order to assess risks and failure.
In my talk, I will give an introduction to different kinds of uncertainty, i.e. epistemic and aleatoric. To have a baseline for comparison, the classical method of Gaussian Processes for regression problems is presented. I then elaborate on different DL methods for uncertainty quantification like Quantile Regression, Monte-Carlo Dropout, and Deep Ensembles. The talk is concluded with a comparison of these techniques to Gaussian Processes and the current state of the art.
Speaker: Dr. Florian Wilhelm, Simon Bachstein, inovex
Event: PyCon/PyData Berlin 2019
Datum: 10.10.2019
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Why natural language is next step in the AI evolutioninovex GmbH
In 2010 ImageNet finally ended the AI winter and gave machines the sense of sight. Within the following years dramatic improvements in tasks such as image classification and object detection lead to innovations like face ID and autonomous driving. Recently, similar developments happened in the field of natural language. Using Attention mechanism and transformers tasks such as question answering and text summarization reached new benchmarks.
This talk will not only explain those, but point out how Transfer Learning and open source models such as Google Bert will open the field to new innovations in AI.
Speaker: Nico Kreiling, inovex
Event: AIxIA, 01.10.2019
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Die Worldwide Developers Conference (WWDC) ist eine von Apple jährlich durchgeführte Konferenz für Software-Entwickler (MacOS, iOS und WatchOS). Um die WWDC 2019 nochmal Revue passieren zu lassen, wurde beim Mobile Development Karlsruhe Meetup zu einer offenen Diskussionsrunde eingeladen. Die Slides fassen die für inovexler Philipp interessantesten Neuigkeiten der WWDC2019 zusammen und dienten beim Meetup als Diskussionsgrundlage.
Event: 9. Mobile Development Meetup (WWDC Edition)
Speaker: Philipp Wallrich, inovex
Datum: 17.06.2019
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Trust is good, control is better – A short story about Network Policies.
Abstract:
Probably everybody who uses Kubernetes in a productive environment with multiple users possibly has looked at policies. Often the operators of the cluster(s) just trust the policies but in some cases it might be useful to control if the policies actually have taken action and often there are just to many Policies in the cluster setup to manually test them all (and obviously you don’t want to do this). Testing the effectiveness of the Network Policies can be done in different approaches. In this talk we will show you the benefits and drawbacks of different approaches and what solution we finally chose. Also we will show you some other tools and how they complement our solution. As a takeaway you will get an overview of different testing strategies for policies, as well as understanding challenges in testing policies in general and the Kubernetes ecosystem.
Event: ContainerDays 2019
Datum: 26.06.2019
Speaker: Johannes M. Scheuermann, Maximilian Bischoff (beide inovex)
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Interpretierbarkeit von ML-Modellen hat die Zielsetzung, die Ursachen einer Prognose offenzulegen und eine daraus abgeleitete Entscheidung für einen Menschen nachvollziehbar zu erklären. Durch die Nachvollziehbarkeit von Prognosen lässt sich beispielsweise sicherstellen, dass deren Herleitung konsistent zum Domänenwissen eines Experten ist. Auch ein unfairer Bias lässt sich durch die Erklärung aussagekräftiger Beispiele identifizieren.
Prognosemodelle lassen sich grob in intrinsisch interpretierbare Modelle und nicht-interpretierbare (auch Blackbox-) Modelle unterscheiden. Intrinsisch interpretierbare Modelle sind dafür bekannt, dass sie für einen Menschen leicht nachvollziehbar sind. Ein typisches Beispiel für ein solches Modell ist der Entscheidungsbaum, dessen regelbasierter Entscheidungsprozess intuitiv und leicht zugänglich ist. Im Gegensatz dazu gelten Neuronale Netze als Blackbox-Modelle, deren Prognosen durch die komplexe Netzstruktur schwer nachvollziehbar sind.
In diesem Talk erläuterte Marcel Spitzer das Konzept von Interpretierbarkeit im Kontext von Machine Learning und stellte gängige Verfahren zur Interpretation von Modellen vor. Besonderen Fokus legte er dabei auf modellunabhängige Verfahren, die sich auch auf prognosestarke Blackbox-Modelle anwenden lassen.
Event: M3 Minds Mastering Machines
Speaker: Marcel Spitzer
Blog-Artikel: https://www.inovex.de/blog/machine-learning-interpretability/
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
Das Ökosystem rund um Kubernetes wächst täglich. Insbesondere cloud-native Continuous-Deployment-Strategien stehen Hoch im Kurs und werden in diversen Open-Source-Projekten vorangetrieben. In einer Reihe von Evalutionen nimmt inovex diese Tools genauer unter die Lupe - den Anfang macht Jenkins X.
Jenkins X wurde im März 2018 veröffentlicht. Das Konzept hinter dem Tool ist primär, bestehende Teillösungen (Helm, Skaffold, Prow, Tekton) einzusetzen, um sie abstrahiert in ein Kommandozeilen-Interface zu packen. Der Vortrag beschreibt sowohl die klassische Architektur als auch den "Severless"-Ansatz. Des weiteren werden das Kommandozeilen-Tool "jx", der allgemeine Entwicklungs-Workflow sowie diverse Features vorgestellt.
Bei unseren Tests im Rahmen der Evaluation sind uns einige Stolpersteine aufgefallen. Es sind vor allem die vielen eingesetzten Dritt-Tools, die den Betrieb und den Upkeep eines mit Jenkins X erstellten Clusters verkomplizieren. Als Fazit stellen wir Jenkins X im Mai 2019 ein "befriedigend" aus und beobachten gespannt, wie sich das Tool in den kommmenden Monaten und Jahren weiterentwickeln wird.
Event: Talk4Nerds, 29.04.2019
Speaker: Simon Kienzler, Johannes M. Scheuermann (beide inovex)
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Neben dem großen Machine-Learning-Trend in der Cloud zeichnet sich zunehmend die Tendenz ab, bestimmte Aufgaben direkt auf Edge-Geräten auszuführen. Wir erkunden die Vorteile von Auswertungen direkt an der Quelle der Daten und die damit verbundenen Herausforderungen. Denn die Rechenleistung der Cloud steht uns hier leider nicht zur Verfügung.
Zur Lösung stehen uns verschiedene Hardwareoptionen wie CPUs, GPUs, FPGAs oder spezielle ASICs und Frameworks zur Verfügung, die wir am Beispiel von einem Convolutional Neural Network evaluieren. Dabei gibt es praktische Tipps und Erfahrungen aus realen Projekten sowie anschauliche Demos auf verschiedenen Hardwareplattformen.
Vorkenntnisse:
Vorkenntnisse über tiefe neuronale Netze sind von Vorteil.
Lernziele:
- Verständnis über die Vorteile von AI auf Edge-Geräten und den damit verbundenen Herausforderungen.
- Wissen über die verschiedenen Hard- und Softwarelösungen erlangen, um diese in eigenen Projekten einzusetzen.
Event: building IoT, 03.04.2019
Speaker: Dominik Helleberg, inovex
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Blog-Artikel: inovex.de/blog
This document discusses Prometheus on Kubernetes. It provides an overview of Prometheus and its ecosystem, including how it is used for service discovery on Kubernetes, collecting and storing metrics, ensuring high availability and scalability through sharding, and defining and alerting on service level agreements. It also covers instrumentation using exporters, the Prometheus query language PromQL, and components of the Prometheus ecosystem like Grafana and Alertmanager.
Recommender systems support the decision making processes of customers with personalized suggestions. These widely used systems influence the daily life of almost everyone across domains like ecommerce, social media, and entertainment. However, the efficient generation of relevant recommendations in large-scale systems is a very complex task. In order to provide personalization, engines and algorithms need to capture users’ varying tastes and find mostly nonlinear dependencies between them and a multitude of items. Enormous data sparsity and ambitious real-time requirements further complicate this challenge. At the same time, deep learning has been proven to solve complex tasks like object or speech recognition where traditional machine learning failed or showed mediocre performance.
Join Marcel Kurovski to explore a use case for vehicle recommendations at mobile.de, Germany’s biggest online vehicle market. Marcel shares a novel regularization technique for the optimization criterion and evaluates it against various baselines. To achieve high scalability, he combines this method with strategies for efficient candidate generation based on user and item embeddings—providing a holistic solution for candidate generation and ranking.
The proposed approach outperforms collaborative filtering and hybrid collaborative-content-based filtering by 73% and 143% for MAP@5. It also scales well for millions of items and users returning recommendations in tens of milliseconds.
Event: O'Reilly Artificial Intelligence Conference, New York, 18.04.2019
Speaker: Marcel Kurovski, inovex GmbH
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
In seinem Meetup Talk berichtete Maximilian von den aktuellen Problemen von Cloud Computing – insbesondere im Internet of Things – und wie diese durch Edge Computing mitigiert werden können. Er erklärte, wie eine generische Edge-Computing-Architektur aussehen kann und zeigte Anwendungsfälle, von denen manche auch schon in existierenden Produkten umgesetzt sind.
Im Anschluss stellte er Azure IoT Edge vor und erläuterte, wie es das bestehende IoT Framework von Microsoft erweitert sowie die Grundkonzepte, die IoT Edge bereitstellt. Auch die Probleme in dem noch jungen Produkt wurden angesprochen, aber auch die Vorteile und Features, die es liefert.
In der gemeinsamen Demo mit Eli haben dann beide Speaker die technischen Details von Azure IoT Edge gezeigt und demonstriert, beispielsweise wie Code automatisiert von einer CI/CD-Pipeline in Azure DevOps auf ein IoT-Gerät deployed werden kann.
Event: inovex Meetup, 12.03.& 19.03.2019
Speaker: Maximilian Bischoff, inovex
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Es liegt in der Natur des Menschen das Unvorhersehbare vorherzusagen: Wetter, Aktienkurse, Krankheitsverläufe, die Reaktion eines Menschen. Neueste Deep Learning Ansätze sind in der Lage solche sequentielle Sachverhalte immer genauer zu prognostizieren, setzen aber auch immer größere Datenmengen und Rechenleistungen voraus, die sowohl in Forschung als auch in der Praxis häufig nicht vorliegen. Wie kann man gute Ergebnisse erreichen, wenn nur wenig Daten vorliegen?
Marisa Mohr stellte in ihrem Vortrag einen neuen und vielversprechenden informationstheoretischen Ansatz zum Feature Learning von sequentiellen Daten vor, der potenziell auch mit wenigen Daten auskommt. Dabei ging es speziell um ordinale Muster in Zeitreihen, wie sie beispielsweise als Veränderung von Emotionen im Gesprächsverlauf zu finden sind. Eine solche Entwicklung ist für Menschen in der Regel leicht zu erkennen. Chatbots hingegen können nicht intuitiv auf solche Emotionsverläufe reagieren, sondern müssen entsprechend programmiert werden.
Details:
Deep-Learning-Ansätze wie LSTMs, RNNs oder TCNs haben sich im Umgang mit sequentiellen Daten bewährt. Neuronale Netzwerke sind tief im technischen Sinn, weil sie mehrere (verborgene) Schichten besitzen, aber nicht weil sie ein tiefes Verständnis von Problemen entwickeln. In diesem Vortrag stellte Marisa einen symbolischen informationstheoretischen Ansatz des Representation Learnings von Zeitreihen vor und damit eine Möglichkeit, konzeptionelle Schichten zu konstruieren. Die Idee hinter der sogenannten Permutationsentropie besteht darin, anstelle der Werte einer Zeitreihe die Ordnungsrelation zwischen den Werten zu betrachten, und so auf das natürliche Auf und Ab des zugrundeliegenden dynamischen Systems zurückzugreifen.
Event: inovex Meetup: Das Unvorhersehbare vorhersagen: Zeitreihen und Chatbots, 26.03.2019
Speakerin: Marisa Mohr (inovex)
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Talk to me – Chatbots und digitale Assistenteninovex GmbH
Menschliche Kommunikation folgt zwar einer ganzen Reihe von Regeln, diese lassen sich aber schwer formalisieren. Nicht zuletzt deshalb, weil in unseren Interaktionen immer auch eine Fülle von Welt- und implizitem Kontextwissen eine Rolle spielt. Rein regelbasierte Chatbots sind daher nicht nur äußert komplex in der Programmierung, sondern stoßen in vielen Anwendungsbereichen schnell an ihre Grenzen.
In diesem Vortrag gab Anna Weißhaar einen Überblick über die aktuellen Lösungen und Herausforderungen im Bereich digitale Assistenten. Der Fokus lag dabei auf Ansätzen, die Chatbots „chatty“ machen, sie also möglichst adäquat auf im Voraus unbekannte Nutzereingaben reagieren zu lassen.
Event: inovex Meetup: Das Unvorhersehbare vorhersagen: Zeitreihen und Chatbots, 26.03.2019
Speaker: Anna Weißhaar (inovex)
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
Nicht zuletzt durch die medienwirksame Erfolge des maschinellen Lernens durch DeepMind, OpenAI und Kollegen ist Künstliche Intelligenz im Moment wieder in aller Munde. Einerseits locken zahlreiche neue, vorher undenkbare Anwendungen wie die automatische Diagnose von Krankheiten, autonome Fahrzeuge und Drohnen, oder die automatische Übersetzung gesprochener Wörter. Andererseits warnen mahnenden Stimmen wird vor dem zunehmendem Einflussnahme der „Algorithmen“ auf fast alle Bereiche unseres Lebens sowie vor unerwünschten Folgen von sich verselbstständigenden Computern gewarnt. Einige träumen von – oder fürchten sich vor – der vermeintlich unausweichlichen Singularität, an der sich nichts weniger als das Schicksal der gesamten Menschheit entscheiden wird. Doch was verbirgt sich hinter dem Begriff Künstliche Intelligenz? Je nachdem, wen man fragt, erhält man unterschiedliche, bisweilen gegensätzliche Antworten. Dieser Vortrag stellt einige dieser Antworten vor und versucht sie (nicht nur) anhand von Beispielen aus Forschung und Anwendung einzuordnen.
Event: Business Analytics Day, 07.03.2019
Speaker: Dr. Matthias Richter, Dr. Stefan Igel (inovex)
Mehr Tech-Vorträge: inovex.de/vortraege
Mehr Tech-Artikel: inovex.de/blog
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
Das Android Open Source Project, kurz AOSP, ist das Betriebssystem, das auf den meisten heutigen und wahrscheinlich auch auf deinem Smartphone läuft. Es ist die Basis für das Android-App-Universum und wird von Millionen Nutzern und Entwicklern auf der Welt verwendet. Wegen der offenen Verfügbarkeit des Source Codes ist es auch die Basis für bekannte Custom ROMs wie LineageOS.
Der erste Teil des Talks gab eine Übersicht über die Architektur des Betriebssystems, das App-Ökosystem, den Hardware Abstraction Layer (HAL), die Sicherheitskonzepte und einige neue Betriebssystementwicklungen wie Project Treble in Android 8.0.
Der zweite Teil des Talks gab einen Einblick in den Quellcode und die Struktur des AOSP: Wie lädt man sich den Source Code herunter, wie baut man das AOSP für unterstützte Geräte und wie kann man die eigenen ROMs auf ein Smartphone flashen? Zum Spaß wurde auch noch in einige Implementierungsdetails von Android-App-API-Funktionen geblickt, die man als App Developer schon aufgerufen hat.
Speaker: Stefan Lengfeld, inovex
Event: inovex Meetup Köln, 23.10.2018
Mehr Tech-Vorträge: www.inovex.de/vortraege
Mehr Tech-Artikel: www.inovex.de/blog
This document discusses machine learning interpretability. It defines interpretation as giving explanations to humans for machine learning models and decisions. It notes that humans create, are affected by, and demand explanations for decision systems. The document outlines different techniques for model interpretability including intrinsically interpretable models, post-hoc interpretability techniques that provide explanations for black box models, and model-specific and model-agnostic techniques. It provides examples like partial dependence plots, individual conditional expectation, and local surrogate models. It recommends choosing techniques based on the recipient and purpose of explanations.
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
Online vehicle marketplaces are embracing artificial intelligence to ease the process of selling a vehicle on their platform. The tedious work of copying information from the vehicle registration document into some web form can be automated with the help of smart text-spotting systems, in which the seller takes a picture of the document, and the necessary information is extracted automatically.
Florian Wilhelm details the components of a text-spotting system, including the subtasks of object detection and optical character recognition (OCR). Florian elaborates on the challenges of OCR in documents with various distortions and artifacts, which rule out off-the-shelf products for this task. After offering an overview of semisupervised learning based on generative adversarial networks (GANs), Florian evaluates the performance gains of this method compared to supervised learning. More specifically, for a varying amount of labeled data, he compares the accuracy of a convolution neural network (CNN) to a GANthat uses additional unlabeled data during the training phase, showing that GANs significantly outperform classical CNNs in use cases with a lack of labeled data.
What you'll learn:
Understand how semisupervised learning with GANs works
Explore beneficial semisupervised methods based on GANs for use cases with a limited amount of labeled data
Gain insight into an interesting OCR use case of an online vehicle marketplace
Event: O'Reilly Artificial Intelligence Conference, London, 11.10.2018
Speaker: Dr. Florian Wilhelm
Mehr Tech-Vorträge: www.inovex.de/vortraege
Mehr Tech-Artikel: www.inovex.de/blog
People & Products – Lessons learned from the daily IT madnessinovex GmbH
IT im 21. Jahrhundert – What a time to be alive! Es gibt einen (unüberschaubaren) Zoo an Methoden und Produkten die uns so viel Freude an der Arbeit bereiten! Sie sind modern, weil sie neu sind. Sie fordern unser Können heraus, weil sie komplex sind. Sie lösen einige Probleme, die wir vorher nicht hatten. Jeder will sie verwenden, weil Google, Netflix & Co. sie propagieren und Hand auf’s Herz: Will nicht jeder gerne so arbeiten wie Google, Netflix & Co.? Aber macht das wirklich Sinn?
In diesem Vortrag blicken wir auf diverse Erkenntnisse aus dem Einsatz agiler Produktentwicklung, DevOps, Continuous Integration/Delivery, Infrastructure as Code, Immutable Infrastructure (bspw. Docker/Kubernetes), Application Logging und Service Monitoring.
Learning Goals:
- Wir müssen den Einsatz von Methoden und Tools an die Menschen ausrichten, die sie (weiter-)entwickeln und benutzen sollen.
- Manchmal lösen wir mit neuen Tools Probleme, die wir vorher nicht hatten.
- Die Suche nach einfachen Lösungen für komplexe Probleme ist essentiell, aber nicht immer einfach.
Event: Continuous Lifecycle, 15.11.2018
Speaker: Arnold Bechtoldt
Mehr Tech-Vorträge: www.inovex.de/vortraege
Mehr Tech-Artikel: www.inovex.de/blog
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
Pulumi (pulumi.io) offers an open source platform to create/manage and deploy your infrastructure in realy programming languages like JavaScript/TypeScript, Go and Python. As Cloud platforms the major 3 cloud providers are supported and additionally you can also use Pulumi with OpenStack and Kubernetes to deploy your applications in the cloud.
In this talk we will take a look how Pulumi is different to traditional solutions like Terraform or the Cloud Provider specific solutions (e.g. CloudFormation). The main focus will be on deploying your services on top of Kubernetes. The talk will contain a little theory part about Pulumi, the rest of the talk is more focused on demos and practical parts. One focus of the talk is the difference of Pulumi to kubectl and helm (or to be precise how they complement each other.
As a takeaway of this talk you should understand the basics of Pulumi and know what are the differences to the traditional deployment tools.
Event: CNCF Meetup Hamburg & Stuttgart, 29.10.2018 & 07.11.2018
Speaker: Johannes M. Scheuermann, inovex
Mehr Tech-Vorträge: https://www.inovex.de/de/content-pool/vortraege/
Mehr Tech-Artikel: https://www.inovex.de/blog/
2. Bei inovex seit Januar 2017
Standort: Köln
2
Christian Rohmann
LoB ITO - Systems Engineer Linux
3. › Grundlagen - Java und JVM
› Garbage Collection / Tuning
› JMX - Java Management Extensions
› Heap- / Thread Dumps
› Java Flight Recorder / Java Mission Control
3Java Applikationen und die JVM für “Ops”
Agenda
Was muss ich mir für die Pizza alles anhören?
4. › Klare Trennung der Zuständigkeiten?
› Java Code = Dev
› Java Runtime = Ops
› Spoiler: Nein!
4Java Applikationen und die JVM für “Ops”
Java Code and Java Runtime
“DevOps” as obvious as it gets
5. › (Java) Code wird in Bytecode kompiliert
› architektur-spezifische JavaVM -
“write once - run anywhere”
› Mehr als eine JVM (Oracle, OpenJDK, IBM, HP, …)
› HotSpot / JIT
› Bytecode -> Machine code / system calls
› Optimierung zur Laufzeit
› Memory Management automagisch
› Kein malloc(), kein free(), dafür Garbage Collection
5Java Applikationen und die JVM für “Ops”
Die Java Virtual Machine
The machine inside the machine (inside the machine)
6. › Security - SSL/Crypto libs sind in JVM“eingebaut”
* Bug Fix: Remove TrustCenter CA
* RC4 cipher suites have been removed from both client and server default enabled cipher suite
list in Oracle JSSE implementation
* Increase the minimum key length to 1024 for XML Signatures
* Correction of IllegalArgumentException from TLS handshake
› Abstraktion vom OS und dessen Updates
* JDK 8u51 contains IANA time zone data version 2015d
› Änderungen von defaults
* The default value for G1HeapWastePercent was changed from 10 to 5 to reduce the
need for full GCs. For the same reason the default value for G1MixedGCLiveThresholdPercent
was changed from 65 to 85.
6Java Applikationen und die JVM für “Ops”
Die Java Virtual Machine
Dev vs. Ops - JVM (minor) Updates ...
7. › Take away: JVM Updates = (security) patches
› Java Expiration Date: The expiration date for 8u121 is April 18, 2017. Java
expires whenever a new release with security vulnerability fixes becomes available.
› https://www.java.com/en/download/faq/release_changes.xml
› Parameter für Oracle JVM 8 (> 830)
› Take away: -XX:+PrintFlagsFinal
› Umstieg auf Java 8 / Java 9
› Code vs. JVM
7Java Applikationen und die JVM für “Ops”
Die Java Virtual Machine
Dev vs. Ops
8. 8Java Applikationen und die JVM für “Ops”
JVM Heap Space
In der x-ten Generation
Quelle: https://de.wikipedia.org/wiki/Garbage_Collection
9. › Generational Garbage Collection
› “Eden” und “Survivors” - Young generation
› “Tenured” - Old generation
› JVM verwaltet Speicher
› Limits: -XX:InitialHeapSize // -XX:MaxHeapSize
› Take away: Xms = Xmx
› Take away: Xmx ist NICHT das Limit für dem JVM-Prozess
9Java Applikationen und die JVM für “Ops”
JVM Heap Space
Ein großer Haufen … Speicher
10. › GC konkurriert mit Applikation
› CPU cycles und hard real time (STW - GC pause)
› Unterschiedliche Implementierungen
(1. Serial - 1 Thread / CPU core )
2. Parallel bzw. Throughput (Multi-Threaded, wie viele?)
3. Concurrent-Mark-Sweep - CMS
4. G1 - Garbage First
› Teils mit (unendlich) vielen Optionen / Tuning-Parametern
› Auto-tuning (-XX:MaxGCPauseMillis / -XX:GCTimeRatio)
› Ergonomics (Anzahl CPU-cores, NUMA, TLAB, … )
10Java Applikationen und die JVM für “Ops”
JVM Garbage Collection
Ich dachte es kümmert sich einer™ drum …
11. -XX:CMSTriggerPermRatio=80
-XX:CMSFullGCsBeforeCompaction=1
-XX:+ParallelRefProcEnabled
-XX:+CMSParallelRemarkEnabled
-XX:CMSMaxAbortablePrecleanTime=6000
-XX:CMSInitiatingOccupancyFraction=50
-XX:+UseCMSInitiatingOccupancyOnly
-XX:PretenureSizeThreshold=64m
-XX:+CMSScavengeBeforeRemark
-XX:ParallelGCThreads=6
-XX:ConcGCThreads=6
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:MaxTenuringThreshold=8
-XX:TargetSurvivorRatio=90
-XX:SurvivorRatio=4
-XX:NewRatio=2
11Java Applikationen und die JVM für “Ops”
GC für eine Applikation tunen
How hard can it be?
12. 12Java Applikationen und die JVM für “Ops”
JVM Garbage Collection
Wer bringt nun den Müll raus?
Young collector Old collector JVM option
Serial (DefNew) Serial Mark-Sweep-Compact -XX:+UseSerialGC
Parallel scavenge (PSYoungGen) Serial Mark-Sweep-Compact (PSOldGen) -XX:+UseParallelGC
Parallel scavenge (PSYoungGen) Parallel Mark-Sweep-Compact (ParOldGen) -XX:+UseParallelOldGC
Serial (DefNew) Concurrent Mark Sweep -XX:+UseConcMarkSweepGC
-XX:-UseParNewGC
Parallel (ParNew) Concurrent Mark Sweep -XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
G1 -XX:+UseG1GC
Quelle: http://blog.ragozin.info/2011/09/hotspot-jvm-garbage-collection-options.html
13. 13Java Applikationen und die JVM für “Ops”
Strategien der GC Implementierungen
13
Quelle: http://www.techpaste.com/2012/02/java-garbage-collectors-gc/
14. › (Maximum) Pause Time
› Stop-The-World = Benutzer wartet
› Throughput
› garbage collection time vs. application time
› BigData / Batch / non-realtime
› Footprint
› microservices / horizontale Skalierung
› Gory Details zu JVM GC in der
Brownbag “Java-Optimierung” von Daniel Bäurer
14Java Applikationen und die JVM für “Ops”
Optimierungsziele für GC
Classic “pick two” (or less)
15. › JVM GC hat signifikante Auswirkungen auf die
Applikations-Performance
› Stop-The-World (STW)
› Anpassungen an HW (GC threads, NUMA, …)
15Java Applikationen und die JVM für “Ops”
Java Code vs. Java Runtime
Why should I (T Operations) care?
17. › Korrelation zu anderen Metriken
› Dynamic bzgl. traffic, Requests/s, …
› 99%-lie
› Log Format ist unstrukturiert und GC-spezifisch
› Netflix gcviz / LinkedIn naarad
› G1 oft (noch) nicht unterstützt
› Parser as a Service:
› GCEasy (http://gceasy.io/)
› GCPlot (https://gcplot.com/)
› jClarity Censum (https://www.jclarity.com/censum/)
17Java Applikationen und die JVM für “Ops”
GC Logs auswerten / visualisieren
Wo ist mein Elch?
18. › Ein kleiner, open-source Lichtblick
URL: https://github.com/chewiebug/GCViewer
18Java Applikationen und die JVM für “Ops”
GC Logs auswerten / visualisieren
GCViewer
19. › OOM tötet … oder auch nicht
› Take away: -XX:OnOutOfMemoryError="kill -9 %p"
› GC overhead limit exceeded
› Mehr als 98% der Zeit in GC und < 2% recovered
› Take away: Meist nur der heap zu klein
› Automatischer Heap Dump bei OOM
› Take away:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=<path>
19Java Applikationen und die JVM für “Ops”
Was tun wenns trotzdem kracht?
Nach dem OOM ist vor dem OOM ...
20. › Post-Mortem bei OOM
› Jederzeit sonst!
› Unerlässlich auch bei kommerzieller Software!
› Analyse durch Hersteller
› Heap-Dump mit JVM Bordmitteln
› Take away:
jcmd <process id/main class> GC.heap_dump filename=heap.hprof
jmap -dump:format=b,file=heap.hprod pid
20Java Applikationen und die JVM für “Ops”
Heapdumps
Ja, wo laufen sie denn ...
21. › Heap-Dump mit GDB
› Take away:
gdb –pid=$JVM_PID
(gdb) gcore /tmp/jvm.core
Saved corefile /tmp/jvm.core
(gdb) detach
(gdb) quit
...
› Liste aller Threads und ihrer Status
› Take away: kill -3 $jvm_pid
› Output nach STDOUT
21Java Applikationen und die JVM für “Ops”
und Threaddumps
… wo laufen sie denn hin?
...
jmap
-dump:format=b,file=jvm.hprof
/usr/bin/java /tmp/jvm.core
22. › MBeans
› Metriken (z.B. Prometheus JMX Exporter)
› Operationen (GC auslösen, Settings ändern)
› Notifications
› Das “SNMP” der JVM
› Eigener TCP-Port
› TLS + Authentication
› JVM liefert viele Standard MBeans (z.B. GC)
› Applikationen, können und sollten selber MBeans
mitliefern!
22Java Applikationen und die JVM für “Ops”
JMX - Java Management Extensions
Der Diagnosestecker für die JVM (und die Applikation)
23. › JVM live analysieren
› Threads
› Locks
› Memory
› Heap Dumps laden
› Plugins wie z.B. VisualGC
URL: Teil von OracleJDK oder https://visualvm.github.io/
23
VisualVM
All-in-One Java Troubleshooting Tool
Java Applikationen und die JVM für “Ops”
24. › Post-Mortem-Analyze
von Heap Dumps
› Statistiken
› Drilldowns
URL: http://www.eclipse.org/mat/
24
Eclipse - Memory Analyzer Tool
Fast and feature-rich Java heap analyzer
Java Applikationen und die JVM für “Ops”
25. › Event Recorder “for collecting diagnostic and profiling data
about a running Java application [...] performance impact is
less than one percent”
› Ergänzung zu (teuren) APM Tools wie
New Relic / Dynatrace / AppDynamics
› ab JDK 7u40 verfügbar
› Nur in Oracle JDK
› In Produktion Oracle Java Lizenz erforderlich
25
Java Flight Recorder (JFR)
Die Black Box gegen die (JVM-)Blackbox
Java Applikationen und die JVM für “Ops”
26. › JFR per Command Line Option aktivieren
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
› ad-hoc recording
jcmd $jvm_pid JFR.start duration=600s filename=myrecording.jfr
› dauerhaft mitschreiben
-XX:FlightRecorderOptions=defaultrecording=true,disk=true,
repository=/tmp/jfr,
dumponexit=true,
dumponexitpath=/var/log/jfr/ ,
maxage=48h,
maxsize=2G,
settings=default
26
Java Flight Recorder (JFR)
Die Black Box gegen die (JVM-)Blackbox
Java Applikationen und die JVM für “Ops”
27. › Teil der Tools des Oracle JDK
› Entstammt der JRockit VM
› Analyse live oder mittels JFR recordings
URL: http://oracle.com/missioncontrol
27
Java Mission Control
Houston - Wo ist das Problem?
Java Applikationen und die JVM für “Ops”
28. › Java gibts nicht ohne JVM
› “Write once, run anywhere” …. but how (well)?
“Bei so viel Automatik sind Mechanismen zum Monitoring und Performance-Tuning von
Anwendungen sehr wichtig. Im Fehlerfall oder bei ungenügender Performance soll die
Ursache schnell und sicher ermittelbar und idealerweise durch gezieltes Tuning
korrigierbar sein.” - codecentric Blog
28
Fazit
Java und JVM sind wie Dev und Ops
Java Applikationen und die JVM für “Ops”