Yearly Archives

2019

Ohne Firlefanz. Artikel zu prägnanten Architekturüberblicken auf Informatik Aktuell

By | Artikel, Publikationen | No Comments
Architektur ohne Firlefanz – Ihre Lösung auf einem Bierdeckel

Informatik Aktuell Logo

Viele interessieren sich für Ihre Softwarelösung oder zumindest für Teilaspekte davon: Neue im Team, teamfremde Kollegen, Manager, Kooperationspartner … – Wie geben Sie diesen Leuten einen prägnanten Einstieg? In diesem Beitrag erfahren Sie, wie Sie Schritt für Schritt einen prägnanten Architekturüberblick anfertigen. Ich diskutiere, was mindestens hineingehört und welche Formate sich in unterschiedlichen Situationen bewähren.

Artikel Online Lesen

Evolutionary architectures and fitness functions — session at O’Reilly Software Architecture Conference

By | Publikationen, Vorträge | No Comments

OReilly Media Logo Evolutionary architectures and fitness functions – a pragmatic approach!
Speaker: René Weiss

O’Reilly Software Architecture Conference
Thursday, 7 November 2019, 16:50–17:35
CityCube Berlin, 14055 Berlin
@OReillyMedia  #OReillySACon

Sourcecode & demo apps on Github
slide download (PDF)

Evolutionary Architectures? Fitness Functions? How can those approaches help teams develop software systems more effectively? Modern software is developed iteratively, enhanced actively and released often to production. Hence it is essential to know if a system fulfills required qualities like performance, security, maintainability and fault tolerance while the software is being constantly changed.

Fitness functions allow to test software architecture for these qualities and therefore enable effective incremental software development. I want to show useful applications of small and pragmatic fitness functions but also talk about bigger approaches and tools used for Chaos Engineering at Netflix and others. Practical examples with live coding show how these tools can be used in CI/CD pipelines, evolutionary experiments with A/B testing on code level or how to do your first small chaos engineering experiment.

This talk is for software developers and architects who want to gain practical ideas on how fitness functions can be used in day to day use cases.

follow us on Twitter – @embarced

ODSC Conf_SanFrancisco_OZeigermann_Reinforcement_Learning

Practical Reinforcement Learning with TensorFlow 2.0 & TF-Agents – workshop at ODSC

By | Publikationen, Vorträge | No Comments

In a Half Day Hands-on Training at ODSC West in San Francisco in Autumn 2019 Oliver and Christian will show you details on how you can use reinforcement learning practically:

Practical Reinforcement Learning with TensorFlow 2.0 & TF-Agents – Hands on

„Practical Reinforcement Learning with TensorFlow 2.0 & TF-Agents“
Author/Speaker: Oliver Zeigermann and Christian Hidber
ODSC West, San Francisco
October 29th – November 1th, 2019
Hyatt Regency, South San Francisco, CA 940105 (Venue)
@odsc

In this workshop you will discover how machines can learn complex behaviors and anticipatory actions. Using this approach autonomous helicopters fly aerobatic maneuvers and even the GO world champion was beaten with it. A training dataset containing the “right” answers is not needed, nor is “hard-coded” knowledge. The approach is called “reinforcement learning” and is almost magical.

Using TF-Agents on top of TensorFlow 2.0 we will see how a real-life problem can be turned into a reinforcement learning task. In an accompanying Python notebook, we implement – step by step – all solution elements, highlight the design of Google’s newest reinforcement learning library, point out the role of neural networks and look at optimization opportunities.

Goals
• Basics of reinforcement learning
• When and when not to use it
• Design of TF-Agents on top of TensorFlow 2.0
• Hands-on Implementation

 

 

– Read Article online –

 

follow us on Twitter – @embarced

W-JAX 2019: Mit welchem Framework soll ich meine Single-Page-App bauen?

By | Publikationen, Vorträge | No Comments
„Mit welchem Framework soll ich meine Single-Page-App bauen?“
Logo W-Jax
„Mit welchem Framework soll ich meine Single-Page-App bauen?“
Sprecher: Nils Hartmann und Oliver Zeigermann
Vortrag auf der W-JAX 2019
Mittwoch, 06. November 2019, 10:00 – 11:00 Uhr
The Westin Grand in München (Location)
@jaxcon

Foliendownload (Github)

Angular, React, Vue, Web Components? Ist es nicht egal, mit welchem Framework man seine Webanwendung entwickelt, solange es hinreichend verbreitet ist? Auch wir finden, dass man ein Single-Page Framework oft nach Geschmack aussuchen und man damit nicht viel falsch machen kann. Entscheidend ist die Developer-Experience, also womit sich die Entwickler am wohlsten fühlen. Allerdings gibt es dennoch einige Anforderungen, die das eine oder andere Framework als die bessere Wahl dastehen lassen. Welche das sind und was unsere persönlichen Erfahrungen und Vorlieben sind, erfahrt ihr in dieser Session.

Weiterführende Informationen:

 

 

 

 

 

 

Buch: React
Grundlagen, fortgeschrittene Techniken und Praxistipps – mit TypeScript und Redux
2., überarbeitete und erweiterte Auflage, 2020

 

weitere Infos: reactbuch.de

 

 

 

 

 

Architektur-Spicker Nr. 9: Moderne Frontend-Architektur
Single-Page Applications (SPAs) verschieben den Schwerpunkt einer Anwendung in Richtung Browser. Wie gehen Sie mit den daraus resultierenden architektonischen Herausforderungen um? Unsere Spicker-Ausgabe Nr. 9 unterstützt Sie bei dieser Aufgabe!

 

Download Architektur-Spicker Nr. 9: Moderne Frontend-Architektur

embarc Tutorials und Vorträge – auf der OOP 2020 in München

By | Publikationen, Vorträge | No Comments

Im Februar sind wir mit 3 Beiträgen und mit unserem Team auf der OOP 2020 vor Ort in München dabei:

„Was macht Machine Learning anders?“

OOP 2018

„Was macht Machine Learning anders?“
Sprecher: Oliver Zeigermann
Half Day Tutorial auf der OOP 2020
Montag, 03. Februar 2020, 10:00 – 13:00 Uhr
ICM – Internationales Congress Center München
#OOPmuc @oop_conference

In diesem Workshop mit Oliver Zeigermann erforschen Sie anhand eines durchgängigen Fallbeispiels, den Ansatz des überwachten maschinellen Lernens. Dabei wird klar, was diesen Ansatz von klassischer Software-Entwicklung unterscheidet und wann er sinnvoll sein kann. Dabei lernen Sie das Verfahren der Entscheidungsbäume anhand von lauffähigem Code kennen und lösen einige Aufgaben auf Papier.

„Microservices & Makro-Architektur – Drei zentrale Entwurfsfragen“

OOP 2018

„Microservices & Makro-Architektur – Drei zentrale Entwurfsfragen“
Sprecher: Stefan Zörner
Vortrag auf der OOP 2020
Mittwoch 05. Februar 2020,  17:00 – 18:00 Uhr
ICM – Internationales Congress Center München
#OOPmuc @oop_conference

Zeitgenössische Architekturstile wie Microservices oder Self-Contained Systems lassen Teams, die einzelne Teile entwickeln, viel Freiheit beim Treffen von Technologieentscheidungen.
Drei Fragestellungen entpuppen sich jedoch regelmäßig als Kandidaten, um in der Makro-Architektur (also übergreifend) adressiert zu werden, zumindest zu einem gewissen Grad. Sonst wirkt die Anwendung nicht aus einem Guss oder verfehlt andere Architekturziele (z.B. flexibel reagieren zu können auf Veränderungen).

In diesem Vortrag stellt Stefan Zörner die drei Themen entlang eines durchgängigen Beispiels vor. Er zeigt gängige Lösungsoptionen und Einflussfaktoren, die Ihnen eine informierte Auswahl für Ihre Vorhaben ermöglichen. Wechselseitige Beeinflussungen, Kompromisse und Real-World-Entscheidungen eingeschlossen.

„Warum gute Architektur nichts mit Code-Qualität zu tun hat. „

OOP 2018

„Warum gute Architektur nichts mit Code-Qualität zu tun hat. “
Sprecher: Stefan Toth
Vortrag auf der OOP 2020
Mittwoch 05. Februar 2020, 17:00 – 18:00 Uhr
ICM – Internationales Congress Center München
#OOPmuc @oop_conference

Diese Session richtet sich an Entwickler und Architekten, die mit größeren Systemen oder langlebigen Lösungen zu tun haben. Ein großer Teil der Arbeit ist, Fokus zu finden und die richtigen Dinge zu tun.
Die erzählte Erfahrung zeigt, wie wir eine festgefahrene Situation aufgebrochen haben und die Ziele rund um Kundenzufriedenheit und Produktqualität erreicht haben. Dabei macht Stefan Toth auch einen methodischen Weg erlebbar, der den Teilnehmern in ähnlichen Situationen helfen wird.
Der fachliche Hintergrund der Geschichte reicht von Architektur-Bewertungspraktiken, über evolutionäre Architekturansätze bis hin zu agilen Praktiken.

OOP Konferenz

embarc auf dem Architecture Gathering 2019 in München

By | Publikationen, Vorträge | No Comments

Beim Architecture Gathering im Oktober in München hat Oliver Zeigermann nützliche Anwendungsbeispiele für Machine Learning im Gepäck und wir sind mit unserem Team und einem Konferenzstand vor Ort mit dabei: 

TAG Logo

Wieso Sie sich jetzt mit Machine Learning beschäftigen sollten
Sprecher: Oliver Zeigermann
The Architecture Gathering 2019
16. Oktober 2019, 17:00 – 17:45 Uhr
Hotel NH München Ost Conference Center, München, Anfahrt
@tag_conference #TAG2019

Foliendownload (github)

Anders als in der klassischen Software-Entwicklung werden im Machine Learning anhand von Beispiel-Daten Zusammenhänge erlernt, die von den ursprünglichen Daten abstrahieren.

Während sich die Boulevard-Presse entweder mit Horror- oder Heils-Szenarien überschlägt, möchte Oliver Zeigermann in diesem Talk praktisch und konkret darauf eingehen, warum es sich lohnen kann, sich mit Machine Learning zu beschäftigen.

Oliver zeigt dazu 4 Beispiele von Anwendungen aus unterschiedlichen Bereichen, die Sie mit klassischer Programmierung nicht erzielen könnten, die aber dennoch erstaunlich nützlich sind.  Zudem erhalten Sie hierbei Einblicke in Supervised, Unsupervised und Reinforcement Learning am Beispiel von TensorFlow.

 

follow us on Twitter – @embarced

CONSTRUCT: Aufbauen (5C Design, Teil 6)

By | Allgemein, Inhaltliches | No Comments

Eine Bausteinstruktur kann auf einer Ebene selbst wieder unübersichtlich werden. Baue Systeme höherer Komplexität durch Zusammenfassen von Bausteinen einer Ebene zu einem neuen Baustein einer nächsthöheren Ebene. Dabei sind weiterhin dieselben Handlungsmaximen anzuwenden.

  1. Software-Entwurf: Ein Blick zurück und nach vorn
  2. CUT: Richtig schneiden
  3. CONCEAL: Verbergen
  4. CONTRACT: Schnittstelle festlegen
  5. CONNECT: Verbinden
  6. CONSTRUCT: Aufbauen
  7. Its a Wrap: Zusammenfassung

In den bisherigen Artikeln ging es darum, wie man ein System auf einer Ebene effizient in einzelne Module zerlegt. Bei entsprechend großem Umfang der Lösung kann dabei nach wie vor Folgendes passieren: Die schiere Anzahl der Module wächst Ihnen über den Kopf und das gesamte System ist im Endeffekt wieder unübersichtlich. Was kann man in so einem Fall tun? Eine schlechte Idee wäre, mehr Logik in die einzelnen Module zu geben, sodass die Gesamtzahl an Modulen wieder überschaubar wird. Dadurch würde nur Komplexität in die Module hinein verlagert. Die Alternative ist Strukturen auf der nächst höheren Abstraktionsebene zu bilden. Wir zoomen aus unserer Architektur heraus und bauen dann modulare Strukturen nach denselben Regeln, nach denen wir schon die Module auf der unteren Abstraktionsebene entworfen hatten. Während dies den Vorgang eher bottom-up beschreibt, so ist dasselbe Ergebnis natürlich auch top-down zu erreichen. 

Whole-Part Pattern

Ein fast schon in Vergessenheit geratenes Muster, das dabei hilfreich sein kann, ist das Whole-Part Pattern. Vorgestellt wurde es in einem zeitlosen Klassiker der Software-Architektur namens “Pattern-Oriented Software Architecture” aus dem Jahr 1996. Als Beispiel dient uns der Motor eines Autos. Er besteht aus vielen Einzelteilen, wie dem Kolben, der Kurbelwelle und den Zündkerzen. Der Motor selbst ist aber wiederum nur ein Teil des Autos, das außerdem noch aus Dingen wie dem Lenkrad, der Karosserie, den Rädern und dem Auspuff besteht. Vor dem Fahrer wird diese Komplexität weitestgehend verborgen. Er dreht den Schlüssel um, beschleunigt mit dem Gaspedal und beeinflusst mit dem Lenkrad die Fahrtrichtung. Einmal im Jahr kommt das Auto in die Werkstätte zur Wartung. Dass dort der Filter der Klimaanlage genauso gewechselt wird wie das Motoröl kann dem Fahrer egal sein. Die Abstraktion “Auto” verbirgt all diese Komplexität vor seinem Nutzer so gut es geht.

Das Beispiel mit dem Auto könnte man sogar noch weiterdenken. Ein Robotertaxi-Service könnte eine weitere Abstraktionsebene darstellen. Eine Serversoftware weiß wo sich die einzelnen selbstfahrenden Taxis gerade befinden. Wenn ein Kunde per App eines der Taxis anfordert wird die Software des nächstbesten Robotertaxis dieses zum Kunden bewegen und ihn in weiterer Folge an sein gewünschtes Ziel bringen. Das Auto, die Software darin, die Software am Server und die App am Handy des Kunden bilden dann in Summe eine weitere Abstraktionsebene, die die Mobilität für den Kunden noch weiter vereinfacht.

In einer komplexen Enterprise Architektur können Sie sich dieses Prinzip wie folgt zu Nutze machen: Die Unternehmensarchitekten legen fest, wie sich die Systemlandschaft in einzelne Subsysteme zerlegt. Sie kümmern sich außerdem um Themen, die über die einzelnen Subsysteme hinaus gehen, wie die Wahl der Technologie zur Integration der einzelnen Systeme. Für die Implementierung der einzelnen Subsysteme selbst wird aber nur der grobe Rahmen definiert. Die Verantwortung für die korrekte Umsetzung wird in den einzelnen Teams belassen. Zu klären, wie sich ein konkretes Subsystem selbst dann weiter in Module zerlegt, ist also wiederum Aufgabe eines der Teams. Die Unternehmensarchitekten kümmern sich in einem solchen Modell um die strategischen Themen und überlassen die Taktik den einzelnen Teams.

Self-Contained Systems

Da die Gedanken bisher eher abstrakt waren, möchte ich noch einen konkreten Architekturstil vorstellen, mit dem man das Prinzip der hierarchischen Zerlegung prima umsetzen kann, nämlich Self-Contained Systems (oder kurz: SCS). Diese setzen explizit auf eine sehr lose Kopplung zwischen den einzelnen Teilsystemen. Bevorzugt wird eine Integration über das User-Interface. Ansonsten ist zeitliche Abhängigkeit zwischen den Systemen durch synchrone Kommunikation (wie über SOAP-RPC) eher verpönt und man sollte stattdessen auf asynchrone Integration (wie über Messaging) und Datenreplikation setzen.

Damit das klappt muss anfangs strategisch festgelegt werden, an welchen Grenzen sich das System gut in solch lose gekoppelte Subsysteme zerlegen lässt. Wenn das allerdings klappt, können die einzelnen Teams relativ isoliert voneinander an ihrem jeweiligen Subsystem arbeiten. Die Art der Umsetzung der einzelnen Teilsysteme kann sich dabei auch stark voneinander unterscheiden. So kann es sich bei einem der Subsysteme um einen Legacy-Deployment-Monolithen handeln, während ein anderes auf einer Microservice-Architektur aufbaut.

Im nächsten und bereits letzten Beitrag dieser Artikelserie fass ich das Thema noch einmal kurz zusammen. Außerdem zeige ich Möglichkeiten, wie man eine Architektur nach 5C umsetzt.

Schwerpunkt im Java Magazin 11/2019: Evolutionäre Architektur

By | Artikel, Publikationen | No Comments

Evolutionäre Architektur

Im aktuellen Java Magazin bestreiten wir mit zwei Artikeln den Schwerpunkt zum Thema „Evolutionäre Architektur“.

erschienen am 2. Oktober 2019 im Java Magazin 11/2019

 

Über die Kernelemente evolutionärer ArchitekturenÜber die Kernelemente evolutionärer Architekturen

Bewegung im Architektur-Genpool — Über die Kernelemente evolutionärer Architekturen 
Autor: Stefan Toth
Java Magazin 11/2019, Seiten 10-19

 

Microservices sind in aller Munde und meist auch schon in Produktion. Mit einem technischen Trend allein ist es jedoch nicht getan, wenn es darum geht, die zentralen Versprechungen rund um Langlebigkeit, Innovationsfähigkeit, Geschwindigkeit und Zuverlässigkeit einzulösen. Dieser Artikel verbreitert die Basis der Diskussion und führt in das ADES Framework ein.

 

Zielgerichtete Evolution mit Fitness FunctionsZielgerichtete Evolution mit Fitness Functions

Software-DNA entschlüsselt — Zielgerichtete Evolution mit Fitness Functions
Autoren: Rene Weiß, Stefan Zörner
Java Magazin 11/2019, Seiten 20-27

 

Wie kommen Sie zu einer dauerhaft guten Softwarelösung? Fitness Functions machen die Zielerreichung automatisch und kontinuierlich messbar, auch wenn das Team von eingeschlagenen Wegen abweicht und Experimente wagt. Dieser Beitrag zeigt, wie die Idee auch in Ihr Vorhaben Eingang finden kann.

Evolutionäre Architekturen und Fitness Functions – Rene Weiß auf der Basta!

By | Publikationen, Video, Vorträge | No Comments

Evolutionäre Architekturen und Fitness Functions – ein pragmatischer Zugang!

 

 

„Evolutionäre Architekturen und Fitness Functions – ein pragmatischer Zugang!“
Sprecher: René Weiß
Basta!
Donnerstag, 26. September 2019, 17:00 – 18:00 Uhr
Rheingoldhalle Mainz (Anfahrt)
@BASTAcon

Foliendownload (PDF)
Videoaufzeichnung Youtube

Evolutionäre Architekturen? Fitness Functions? Wie können diese Ansätze bei der (Weiter-) Entwicklung von Software helfen? Moderne Software-Systeme werden iterativ entwickelt und im Betrieb aktiv erweitert und verbessert. Dabei ist es essentiell wichtig zu wissen, ob das System die geforderten Qualitäten, wie z.B. Performance, Sicherheit, Wartbarkeit, Fehlertoleranz usw. erfüllt. Fitness Functions ermöglichen die Software-Architektur dahingehend zu testen und gezielt und inkrementell weiterzuentwickeln.

René Weiß geht in seinem Vortrag auf mögliche Einsatzbereiche von klein & pragmatisch bis hin zu den großen Tools im Bereich des Chaos Engineerings bei Netflix & Co ein. Praktische Beispiele mit live Coding zeigen zudem Umsetzungsmöglichkeiten in CI/CD Pipelines, evolutionäre Experimente mit A/B Testing auf Code-Ebene oder Mini-Chaos-Engineering.

Dieser Talk richtet sich an Entwickler und -Architekten, die praktische Ideen für den Einsatz von Fitness Functions kennenlernen möchten.

 

 

 

follow us on Twitter – @embarced