Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Scala - wo macht der Einsatz Sinn?

622 Aufrufe

Veröffentlicht am

Beitrag zum Berner Architekten Treffen 37.

Im Streben nach grösserer Agilität und zum Aufbrechen der häufig extrem langen Release-Zyklen bewegen viele Unternehmen ihre Softwarelandschaft in Richtung Microservices mit Continuous Delivery. Durch diese Entwicklung müssen nicht mehr zwingend alle Services uniform sein; es kann die jeweils am besten geeignete Technologie verwendet werden.
Im Rahmen meines Beitrages werde ich zeigen, für welche Einsatzgebiete Scala meiner Meinung nach besonders geeignet ist.

Dabei werde ich vertieft auf ereignisbasiertes Domain Driven Design mit Scala eingehen und Möglichkeiten aufzeigen, wie ein solcher Service mit bereits bestehenden Applikationen integriert werden kann.

Abschliessend gehe ich kurz auf den Betrieb ein; dadurch dass Scala auf der Java Virtual Machine (JVM) aufsetzt, ist eine sehr hohe Stabilität gewährleistet und es kann von bestehendem Betriebs-Know-how profitiert werden.

Veröffentlicht in: Software
  • Loggen Sie sich ein, um Kommentare anzuzeigen.

  • Gehören Sie zu den Ersten, denen das gefällt!

Scala - wo macht der Einsatz Sinn?

  1. 1. Speaker: Scala – wo macht der Einsatz Sinn? am Berner Architekten Treffen Mario Siegenthaler 23.06.2017
  2. 2. linkyard Continuous Delivery Testing Identity und Access
  3. 3. Soll ich Microservices in Scala implementieren? (und wenn ja: welche?)
  4. 4. Was verstehe ich unter Microservices? Domain (Firma, Tätigkeitsfeld) Quelle: Implementing DDD, Vaughn
  5. 5. Was verstehe ich unter Microservices? Domain (Firma, Tätigkeitsfeld) Subdomain Quelle: Implementing DDD, Vaughn
  6. 6. Was verstehe ich unter Microservices? Domain (Firma, Tätigkeitsfeld) Subdomain Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Quelle: Implementing DDD, Vaughn
  7. 7. 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
  8. 8. Was verstehe ich unter Microservices? Domain (Firma, Tätigkeitsfeld) Subdomain Monolith Nano
  9. 9. 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 ! " #
  10. 10. Welche Technologie für welchen Microservice? Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context
  11. 11. Scala für Microservices Bounded Context Scala
  12. 12. Scala ist eine sichere Wahl $ % & ' scala center #11
  13. 13. Die Vorteile von Scala f(x) funktional Performance stabiler Betrieb lesbar % immutability ( Tooling ) stark typsicher * mächtig ∠ JVM JavaScript
  14. 14. Lesbarkeit durch kompakten Syntax case class Name(firstName: String, lastName: String) val mario = Name(“Mario“, “Siegenthaler“) val mario2 = mario.copy(lastName = “Goechnaths“) %
  15. 15. Die Vorteile von Scala f(x) funktional Performance stabiler Betrieb lesbar % immutability ( Tooling ) stark typsicher * mächtig ∠ JVM JavaScript
  16. 16. 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/ ∠
  17. 17. Die Vorteile von Scala f(x) funktional Performance stabiler Betrieb lesbar % immutability ( Tooling ) stark typsicher * mächtig ∠ JVM JavaScript
  18. 18. Die Vorteile von Scala f(x) funktional Performance stabiler Betrieb lesbar % immutability ( Tooling ) stark typsicher * mächtig ∠ JVM JavaScript
  19. 19. Vorschlag für Einsatz Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Scala Scala
  20. 20. Klassische Architektur mit Skalierungsproblemen Quelle: https://www.slideshare.net/jboner/from-microliths-to-microsystems Microlith Single Instance SQL REST Service JPA
  21. 21. Lösung: ereignisbasiertes Domain Driven Design (Event-Sourcing) Command Aggregate Event
  22. 22. Alles basiert auf Ereignissen Process Manager (Saga) Read Model
  23. 23. Integration über Ereignisse
  24. 24. Immutable Funktional Bessere Isolation Domain Mächtige Process Models Actors mit Akka Gute Gelegenheit (Paradigmenwechsel) Scala passt optimal dazu
  25. 25. Wann Event-first-DDD anwenden? Komplexe Business Logik Abläufe über Zeit oder zwischen Systemen Hohe Last (lesend & mutierend) Integration mit Machine Learning
  26. 26. Für welche Microservices ist Scala gut? Bounded Context Bounded Context Bounded Context Bounded Context Bounded Context Scala Scala
  27. 27. Einsatzgebiet: Analytics , , , ,
  28. 28. Einsatzgebiet: Analytics , , , , - Performant - Deklarativ - Mathematische Notationen abbildbar - Typsicher
  29. 29. 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
  30. 30. linkyard ag Milkenstrasse 19 3150 Schwarzenburg Mario Siegenthaler Managing Partner mario.siegenthaler@linkyard.ch

×