SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Speaker:
Scala – wo macht der Einsatz Sinn?
am Berner Architekten Treffen
Mario Siegenthaler
23.06.2017
linkyard
Continuous Delivery Testing Identity und Access
Soll ich
Microservices
in
Scala
implementieren?
(und wenn ja: welche?)
Was verstehe ich unter Microservices?
Domain (Firma, Tätigkeitsfeld)
Quelle: Implementing DDD, Vaughn
Was verstehe ich unter Microservices?
Domain (Firma, Tätigkeitsfeld)
Subdomain
Quelle: Implementing DDD, Vaughn
Was verstehe ich unter Microservices?
Domain (Firma, Tätigkeitsfeld)
Subdomain
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Quelle: Implementing DDD, Vaughn
Was verstehe ich unter Microservices?
Domain (Firma, Tätigkeitsfeld)
Subdomain
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Micro-
Service
Micro-
Service
Micro-
Service
Micro-
Service
Micro-
Service
Quelle: Implementing DDD, Vaughn
Was verstehe ich unter Microservices?
Domain (Firma, Tätigkeitsfeld)
Subdomain
Monolith
Nano
Was verstehe ich unter Microservices?
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Micro-
Service
Micro-
Service
Micro-
Service
Micro-
Service
Micro-
Service
!
"
#
Welche Technologie für welchen Microservice?
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Scala für Microservices
Bounded
Context
Scala
Scala ist eine sichere Wahl
$
% &
'
scala
center
#11
Die Vorteile von Scala
f(x)
funktional
Performance
stabiler Betrieb
lesbar
%
immutability
(
Tooling
)
stark typsicher
*
mächtig
∠
JVM JavaScript
Lesbarkeit durch kompakten Syntax
case class Name(firstName: String, lastName: String)
val mario = Name(“Mario“, “Siegenthaler“)
val mario2 = mario.copy(lastName = “Goechnaths“)
%
Die Vorteile von Scala
f(x)
funktional
Performance
stabiler Betrieb
lesbar
%
immutability
(
Tooling
)
stark typsicher
*
mächtig
∠
JVM JavaScript
keine Reflection & keine Codegenerierung
case class User(id: Long, name: String, roles: Set[String])
val json = “{id: 123, name: ‘Mario‘, roles: [‘admin‘, ‘user‘]}“
val user = decode[User](json)
// Either[Error, User] = Right(User(123, “Mario“, ...)
Bibliothek:	https://circe.github.io/circe/
∠
Die Vorteile von Scala
f(x)
funktional
Performance
stabiler Betrieb
lesbar
%
immutability
(
Tooling
)
stark typsicher
*
mächtig
∠
JVM JavaScript
Die Vorteile von Scala
f(x)
funktional
Performance
stabiler Betrieb
lesbar
%
immutability
(
Tooling
)
stark typsicher
*
mächtig
∠
JVM JavaScript
Vorschlag für Einsatz
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Scala
Scala
Klassische Architektur mit Skalierungsproblemen
Quelle: https://www.slideshare.net/jboner/from-microliths-to-microsystems
Microlith
Single Instance
SQL
REST
Service
JPA
Lösung: ereignisbasiertes Domain Driven Design
(Event-Sourcing)
Command
Aggregate
Event
Alles basiert auf Ereignissen
Process Manager
(Saga)
Read Model
Integration über Ereignisse
Immutable
Funktional
Bessere Isolation Domain
Mächtige Process Models
Actors mit Akka
Gute Gelegenheit
(Paradigmenwechsel)
Scala passt optimal dazu
Wann Event-first-DDD anwenden?
Komplexe
Business
Logik
Abläufe
über Zeit
oder
zwischen
Systemen
Hohe Last
(lesend &
mutierend)
Integration
mit Machine
Learning
Für welche Microservices ist Scala gut?
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Bounded
Context
Scala
Scala
Einsatzgebiet: Analytics
, , , ,
Einsatzgebiet: Analytics
, , , ,
- Performant
- Deklarativ
- Mathematische Notationen abbildbar
- Typsicher
Fazit
Scala für Kernkomponenten oder hoher Last
Scala für Data Science und Machine Learning
Idiomatisch nutzen: Funktional, Immutable, Typsystem
Prüfen: Events statt RPC/REST für Integration
linkyard ag
Milkenstrasse 19
3150 Schwarzenburg
Mario Siegenthaler
Managing Partner
mario.siegenthaler@linkyard.ch

Weitere ähnliche Inhalte

Ähnlich wie Scala - wo macht der Einsatz Sinn?

Technologien 2011 Einblick in die Zukunft von Citrix
Technologien 2011 Einblick in die Zukunft von CitrixTechnologien 2011 Einblick in die Zukunft von Citrix
Technologien 2011 Einblick in die Zukunft von Citrix
Digicomp Academy AG
 
Businessday Wirtschaftsfrauen 2012
Businessday Wirtschaftsfrauen 2012Businessday Wirtschaftsfrauen 2012

Ähnlich wie Scala - wo macht der Einsatz Sinn? (20)

Micro, Nano, Mono? Microservices verständlich erklärt
Micro, Nano, Mono? Microservices verständlich erklärtMicro, Nano, Mono? Microservices verständlich erklärt
Micro, Nano, Mono? Microservices verständlich erklärt
 
Ist Ihr Unternehmen reif für Microservices?
Ist Ihr Unternehmen reif für Microservices?Ist Ihr Unternehmen reif für Microservices?
Ist Ihr Unternehmen reif für Microservices?
 
ThousandEyes Enterprise Digital Workshop - German
ThousandEyes Enterprise Digital Workshop - GermanThousandEyes Enterprise Digital Workshop - German
ThousandEyes Enterprise Digital Workshop - German
 
Web 2.0 revisited
Web 2.0 revisitedWeb 2.0 revisited
Web 2.0 revisited
 
Rails goes SOA
Rails goes SOARails goes SOA
Rails goes SOA
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Serverless: The Missing Manual
Serverless: The Missing ManualServerless: The Missing Manual
Serverless: The Missing Manual
 
2009 09 Xinnovations Berlin Andreas Blumauer
2009 09 Xinnovations Berlin Andreas Blumauer2009 09 Xinnovations Berlin Andreas Blumauer
2009 09 Xinnovations Berlin Andreas Blumauer
 
Technologien 2011 Einblick in die Zukunft von Citrix
Technologien 2011 Einblick in die Zukunft von CitrixTechnologien 2011 Einblick in die Zukunft von Citrix
Technologien 2011 Einblick in die Zukunft von Citrix
 
Vaadinator erweitern
Vaadinator erweiternVaadinator erweitern
Vaadinator erweitern
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
 
Innovationen aus der Cloud ganz einfach nutzen
Innovationen aus der Cloud ganz einfach nutzenInnovationen aus der Cloud ganz einfach nutzen
Innovationen aus der Cloud ganz einfach nutzen
 
Hinter die Marketing-Kulissen geschaut - Was bedeutet der Cloud-Trend für die...
Hinter die Marketing-Kulissen geschaut - Was bedeutet der Cloud-Trend für die...Hinter die Marketing-Kulissen geschaut - Was bedeutet der Cloud-Trend für die...
Hinter die Marketing-Kulissen geschaut - Was bedeutet der Cloud-Trend für die...
 
Cloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und LoesungenCloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und Loesungen
 
2016 - Mobile Revolution - Fachvortrag an der FHS St.Gallen.
 2016 - Mobile Revolution - Fachvortrag an der FHS St.Gallen. 2016 - Mobile Revolution - Fachvortrag an der FHS St.Gallen.
2016 - Mobile Revolution - Fachvortrag an der FHS St.Gallen.
 
TRANSCONNECT® cloud (SQL Projekt AG)
TRANSCONNECT® cloud (SQL Projekt AG)TRANSCONNECT® cloud (SQL Projekt AG)
TRANSCONNECT® cloud (SQL Projekt AG)
 
Businessday Wirtschaftsfrauen 2012
Businessday Wirtschaftsfrauen 2012Businessday Wirtschaftsfrauen 2012
Businessday Wirtschaftsfrauen 2012
 
Azure Hybrid Connections
Azure Hybrid ConnectionsAzure Hybrid Connections
Azure Hybrid Connections
 
Das passende Backend für meine Apps
Das passende Backend für meine AppsDas passende Backend für meine Apps
Das passende Backend für meine Apps
 
PROFI Cloud Lösung
PROFI Cloud LösungPROFI Cloud Lösung
PROFI Cloud Lösung
 

Scala - wo macht der Einsatz Sinn?