Live aus Sistrans
Vortragende: Mathias Feitzinger, Christian Schaiter
Die Welt der Softwareentwicklung hat sich in den letzten Jahren massiv geändert, Verteilung und Nebenläufigkeit sind heute ein Muss für jedes größere Projekt. Azure und Docker geben auch uns den infrastrukturellen Weg vor. Jedoch muss auch die Software für die neuen Herausforderungen gerüstet sein. Mit Hilfe des ActorModels können wir unsere Softwarearchitektur von Grund auf skalier- und verteilbar designen.
Die Themen:
+ Alles ist ein "Actor"
+ Async, await waren gestern
+ Verteilung der Software auf mehrere Rechenzentren
+ Wie werde ich der Datenflut gerecht (von SQL zu Event Sourcing)
+ Zusammenspiel mit Docker, Azure, ServiceFabrik
Aufgrund des Umfanges des Themas wird diese Schulung aus mindestens 2 Nachmittagen bestehen.
In der .Net Community wird immer wieder das Konzept des Actor Models angesprochen. Doch was ist das eigentlich? Was kann ich damit machen?
Dieser Vortrag beantwortet diese Fragen. Zugleich wird unter Verwendung des Open Source Frameworks akka.net ein Beispiel für ein skalierbares, fehlertolerantes, selbst heilendes und verteiltes System erstellt.
Reaktive Applikationen mit Scala, Play und AkkaMarkus Klink
Dieser Vortrag stellt mit Play2, Scala und Akka einen Technologiestack vor, der es ermöglicht relativ einfach eine skalierbare Webarchitektur aufzubauen, die mit dem Web und nicht gegen das Web arbeitet. Insbesondere der Einsatz von Akka als flexible Messagingplattform bietet dabei einige Vorteile gegenüber konventionellen Thread basierten Lösungen in Bezug auf die horizontale Skalierung der Applikation.
Nebenlaeufigkeit mit Koroutinen strukturierenJörn Dinkla
Slides of the talk at the KKON Warmup 2021. See https://rheinwerk-kkon.de/recap-2021/programm-2021/dinkla-nebenlaeufigkeit-mit-koroutinen-strukturieren/
In der .Net Community wird immer wieder das Konzept des Actor Models angesprochen. Doch was ist das eigentlich? Was kann ich damit machen?
Dieser Vortrag beantwortet diese Fragen. Zugleich wird unter Verwendung des Open Source Frameworks akka.net ein Beispiel für ein skalierbares, fehlertolerantes, selbst heilendes und verteiltes System erstellt.
Reaktive Applikationen mit Scala, Play und AkkaMarkus Klink
Dieser Vortrag stellt mit Play2, Scala und Akka einen Technologiestack vor, der es ermöglicht relativ einfach eine skalierbare Webarchitektur aufzubauen, die mit dem Web und nicht gegen das Web arbeitet. Insbesondere der Einsatz von Akka als flexible Messagingplattform bietet dabei einige Vorteile gegenüber konventionellen Thread basierten Lösungen in Bezug auf die horizontale Skalierung der Applikation.
Nebenlaeufigkeit mit Koroutinen strukturierenJörn Dinkla
Slides of the talk at the KKON Warmup 2021. See https://rheinwerk-kkon.de/recap-2021/programm-2021/dinkla-nebenlaeufigkeit-mit-koroutinen-strukturieren/
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.
Mein Vortrag auf der EnterJS 2015 über Sicherheit in Node.js Applikationen. Es werden verschiedene Angriffsvektoren vorgestellt und wie man ihnen begegnen kann.
OSMC 2017 | Automatisiertes und verteiltes Monitoring in einer CI Umgebung by...NETWAYS
Integrating a Blackbox Monitoring into a fully automatic Continuous Integration / Deployment environment can be challenging.
The talk shows which techniques are used. The underlying structure should also be sketched out and explained.
I would also like to present my own solutions, which are available as OpenSource. An automatic Icinga2 Master / Satellite or a service discovery developed for Java applications.
Im letzten Jahr entstand für einen großen Kunden ein Mobile Game für iOS, das serverseitig auf Windows Azure basiert. Zum Einsatz kommen dabei Computer-Instanzen, Backup, Table Storage, SQL Database. Die Spiel-Logik wurde serverseitig mit CQRS umgesetzt, das für Azure ideal einsetzbar ist. Der Vortrag gibt einen Einblick in die Architektur und zeigt den Einsatz der gewählten Azure-Komponenten.
Um Bilder und Grafiken "bereinigte" Version des Vortrags bei der JUG Ostfalen.
Nahezu jede große Website – egal ob das Backend in Java, PHP, Ruby oder Python programmiert wurde – verwendet im Browser JavaScript als Sprache. Software-Artefakte, die in JavaScript erstellt wurden, werde zunehmend wichtiger, da Logik in letzter Zeit tendenziell wieder vom Server zurück in den Browser wandert. JavaScript-Entwicklung ist im Alltag des Enterprise-Entwicklers angekommen. Teils muss er als Backend-Entwickler JavaScript-Code überarbeiten, der z.B. von einer Webagentur erstellt wurde, teils muss er auch selbst JavaScript-Artefakte erzeugen oder ein ganzes Framework oder eine Library in JavaScript schreiben oder pflegen.Der erste Teil des Vortrags richtet sich an Enterprise-Enwickler (meist mit einem Java-EE-Hintergrund), die sich für JavaScript interessieren, sich schnell darin einarbeiten wollen und Tipps suchen, dieses Ziel zu erreichen. Dabei werden einige Grundlagen der Sprache vorgestellt. Dieser Teil des Vortrags soll eher Lust auf Mehr machen als fundamentales Wissen in aller Tiefe zu vermitteln.Enterprise-Entwicklung ist in der Regel Teamarbeit. Eine große Codebasis mus wartbar bleiben. Im zweiten Teil des Vortrags werden Techniken und Tools vorgestellt, die dabei helfen können, eine geeignete Codequalität zu erreichen und zu wahren
Funktionale Reaktive Programmierung mit SodiumTorsten Fink
Reaktive Programmierung hat sich über RxJS in der Web-Entwicklung als Standardentwicklungsmuster etabliert. RxJS selber ist zwar sehr mächtig aber gleichzeitig auch sehr komplex und damit anfällig für Fehler, die aus Unverständnis entstehen. Alleine die Unterscheidung zwischen heißen, kalten und lauwarmen Strömen können einen Entwickler bei dem ersten Kontakt mit dem Framework nachhaltig verwirren.
Die funktionale reaktive Programmierung (FRP) stellt eine Variante reaktiver Programmierung dar. Sie basiert auf einem vergleichsweise kleinen und stringentem Satz an Basisoperationen und Kombinatoren. Diese ermöglichen es, komplexe GUI-Logik modular zu implementieren und dabei typische Fehlerklassen bei der GUI-Entwicklung auszuschließen.
In diesem Vortrag wird FRP anhand des Open-Source Frameworks Sodiums vorgestellt.
Production-ready Infrastruktur in 3 WochenAndré Goliath
Es gibt sie doch noch: Projekte die man auf der grünen Wiese starten darf - incl. Infrastruktur. Nur AWS als Cloud Provider ist gesetzt. In dieser Session gebe ich nach den ersten Wochen Einblicke und Lessons Learned, wie wir vom Zustand eines weißen Blatt Papiers auf ein Account- und Infrastruktur-Setup gekommen sind, mit dem wir zumindest mal sofort loslegen können ohne die üblichen „Abkürzungen“ bei Qualität und Featureumfang zu gehen. Ein wesentlicher Teil davon ist das Tooling von gruntwork.io, welches in diesem Kontext kurz vorgestellt wird. [Disclaimer: Wir sind auch nur normale Kunden mit einer gruntworks-Subscription ohne weitere Connections dorthin – diese Session wird also explizit keine gruntwork.io Werbeveranstaltung, auch wenn sich das inhaltlich nicht 100%ig vermeiden lässt]
Wieso Informatiker bei der Informationssicherheit scheiternDigicomp Academy AG
Sicherheitsprobleme verfolgen uns bereits seit vielen Jahren. Warum existieren immer noch unsichere Programme? Wieso scheitern Informatiker an der korrekten Programmierung? Warum passieren immer wieder dieselben Fehler? Der Vortrag dreht sich insbesondere um verschiedene Informationsquellen, deren Problematik und konkrete, technische Beispiele.
Referent: Tobias Ospelt
Weitere ähnliche Inhalte
Ähnlich wie Akka.NET Teil 1 - Verteilte Architektur von Beginn an
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.
Mein Vortrag auf der EnterJS 2015 über Sicherheit in Node.js Applikationen. Es werden verschiedene Angriffsvektoren vorgestellt und wie man ihnen begegnen kann.
OSMC 2017 | Automatisiertes und verteiltes Monitoring in einer CI Umgebung by...NETWAYS
Integrating a Blackbox Monitoring into a fully automatic Continuous Integration / Deployment environment can be challenging.
The talk shows which techniques are used. The underlying structure should also be sketched out and explained.
I would also like to present my own solutions, which are available as OpenSource. An automatic Icinga2 Master / Satellite or a service discovery developed for Java applications.
Im letzten Jahr entstand für einen großen Kunden ein Mobile Game für iOS, das serverseitig auf Windows Azure basiert. Zum Einsatz kommen dabei Computer-Instanzen, Backup, Table Storage, SQL Database. Die Spiel-Logik wurde serverseitig mit CQRS umgesetzt, das für Azure ideal einsetzbar ist. Der Vortrag gibt einen Einblick in die Architektur und zeigt den Einsatz der gewählten Azure-Komponenten.
Um Bilder und Grafiken "bereinigte" Version des Vortrags bei der JUG Ostfalen.
Nahezu jede große Website – egal ob das Backend in Java, PHP, Ruby oder Python programmiert wurde – verwendet im Browser JavaScript als Sprache. Software-Artefakte, die in JavaScript erstellt wurden, werde zunehmend wichtiger, da Logik in letzter Zeit tendenziell wieder vom Server zurück in den Browser wandert. JavaScript-Entwicklung ist im Alltag des Enterprise-Entwicklers angekommen. Teils muss er als Backend-Entwickler JavaScript-Code überarbeiten, der z.B. von einer Webagentur erstellt wurde, teils muss er auch selbst JavaScript-Artefakte erzeugen oder ein ganzes Framework oder eine Library in JavaScript schreiben oder pflegen.Der erste Teil des Vortrags richtet sich an Enterprise-Enwickler (meist mit einem Java-EE-Hintergrund), die sich für JavaScript interessieren, sich schnell darin einarbeiten wollen und Tipps suchen, dieses Ziel zu erreichen. Dabei werden einige Grundlagen der Sprache vorgestellt. Dieser Teil des Vortrags soll eher Lust auf Mehr machen als fundamentales Wissen in aller Tiefe zu vermitteln.Enterprise-Entwicklung ist in der Regel Teamarbeit. Eine große Codebasis mus wartbar bleiben. Im zweiten Teil des Vortrags werden Techniken und Tools vorgestellt, die dabei helfen können, eine geeignete Codequalität zu erreichen und zu wahren
Funktionale Reaktive Programmierung mit SodiumTorsten Fink
Reaktive Programmierung hat sich über RxJS in der Web-Entwicklung als Standardentwicklungsmuster etabliert. RxJS selber ist zwar sehr mächtig aber gleichzeitig auch sehr komplex und damit anfällig für Fehler, die aus Unverständnis entstehen. Alleine die Unterscheidung zwischen heißen, kalten und lauwarmen Strömen können einen Entwickler bei dem ersten Kontakt mit dem Framework nachhaltig verwirren.
Die funktionale reaktive Programmierung (FRP) stellt eine Variante reaktiver Programmierung dar. Sie basiert auf einem vergleichsweise kleinen und stringentem Satz an Basisoperationen und Kombinatoren. Diese ermöglichen es, komplexe GUI-Logik modular zu implementieren und dabei typische Fehlerklassen bei der GUI-Entwicklung auszuschließen.
In diesem Vortrag wird FRP anhand des Open-Source Frameworks Sodiums vorgestellt.
Production-ready Infrastruktur in 3 WochenAndré Goliath
Es gibt sie doch noch: Projekte die man auf der grünen Wiese starten darf - incl. Infrastruktur. Nur AWS als Cloud Provider ist gesetzt. In dieser Session gebe ich nach den ersten Wochen Einblicke und Lessons Learned, wie wir vom Zustand eines weißen Blatt Papiers auf ein Account- und Infrastruktur-Setup gekommen sind, mit dem wir zumindest mal sofort loslegen können ohne die üblichen „Abkürzungen“ bei Qualität und Featureumfang zu gehen. Ein wesentlicher Teil davon ist das Tooling von gruntwork.io, welches in diesem Kontext kurz vorgestellt wird. [Disclaimer: Wir sind auch nur normale Kunden mit einer gruntworks-Subscription ohne weitere Connections dorthin – diese Session wird also explizit keine gruntwork.io Werbeveranstaltung, auch wenn sich das inhaltlich nicht 100%ig vermeiden lässt]
Wieso Informatiker bei der Informationssicherheit scheiternDigicomp Academy AG
Sicherheitsprobleme verfolgen uns bereits seit vielen Jahren. Warum existieren immer noch unsichere Programme? Wieso scheitern Informatiker an der korrekten Programmierung? Warum passieren immer wieder dieselben Fehler? Der Vortrag dreht sich insbesondere um verschiedene Informationsquellen, deren Problematik und konkrete, technische Beispiele.
Referent: Tobias Ospelt
Ähnlich wie Akka.NET Teil 1 - Verteilte Architektur von Beginn an (20)
2. Actor Model … aber warum?
Copyright: http://globalnerdy.com
Moore’s
Law!
Alles paletti?
2
3. Actor Model … aber warum?
Copyright: http://mba.eckovation.com
3
Lösung:
Parallele Programmierung?
4. Actor Model … aber warum?
4
// Invariant of the class: A countdown stops with 0 and cannot become negative.
public class CountDown {
// Internal state of the class. Value must not be negative.
private int value;
public CountDown(int start) { value = start; }
public void Decrement() {
// We ensure that the countdown never becomes negative
if (value > 0) {
Thread.Sleep(100); // Some longer running (blocking) operation
value -= 1;
}
}
public int Value => value;
}
5. Actor Model … aber warum?
5
Deadlock
Livelock
Race Conditions
Starvation
Ohne Synchronisierung
Lost Updates
Memory visibility
Mit Synchronisierung
6. Actor Model … aber warum?
6
Paralleles
Programmieren
ist schwer!
13. ● 1973 von Carl Hewitt entwickelt
● Erlang, Scala
● Grundlegendes Software Modell
○ ähnlich zu Objektorientierung
ALLES IST EIN ACTOR
Actor System
13
Copyright: Brian Storti
14. ● Akka > Opensource für Java
● Akka.net > Akka portiert auf .Net
● NuGet
● http://getakka.net/
Actors für .Net > Akka.net
14
Copyright: Brian Storti
15. Actors für .Net > Akka.net
15
Konzept
● Asynchrones Senden von Nachrichten
● Nachrichten sind immutable
● Immer nur eine Nachricht in
Verarbeitung
Actors haben
● Eine Mailbox
● Einen Parent
● Behaviour
● State
● Kinder
Copyright: github.com/EdwinW
17. Actors für .Net > Akka.net
17
Konzept
● Asynchrones Senden von Nachrichten
● Nachrichten sind immutable
● Immer nur eine Nachricht in
Verarbeitung
Actors haben
● Eine Mailbox
● Einen Parent
● Behaviour
● State
● Kinder
Copyright: github.com/EdwinW
18. ● Actors sind Rudeltiere (ᵔᴥᵔ)
○ Actor alleine kann nicht viel ausrichten
○ Geben größere Arbeiten an andere Actors ab
● Mehrere Millionen Actors in einem echten
System
● 1 Actor ≙ 300 bytes
Actors come in systems
18
19. Location Transparency
19
● Keine direkter Zugriff auf Actor
● Location Transparency:
○ LocalActorRef
○ RemoteActorRef
● State und Behaviour eines Actors somit immer Private
● ActorSelection -> Zugriff auf einen beliebigen Actor im System
20. Jeder Actor hat eine eindeutige Adresse
akka://mySystem@localhost:4091/user/
IoTSupervisior/DeviceManager/
DeviceGroup1/Device2
Actor Path
20
22. Beispiel Calculator System
22
● Befehle von der Console lesen und parsen
○ Addition => “4+3”
○ Question of Life => “Question”
● Berechnung durchführen
● Resultate ausliefern
Anforderungen an die Architektur:
● Das ganze am besten multithreaded
○ daher mehrere Berechnungen parallel
● Ohne Codeänderungen verteilbar!!!
○ Soll in verschiedensten Rechenzentren verteilt sein
○ (Akka Teil 2 -> 7. Dezember 2017)