Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT

Die Seite wird erstellt Kimi Breuer
 
WEITER LESEN
Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT
Data Science und Microservices:
Architekturentscheidungen auf dem Weg zur
flexiblen und schnellen Datenanalyse
Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT
Sebastian Hanson
Mathematiker und Softwareentwickler
Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT
Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT
Photo by Moguntiner
CC BY-SA 3.0
Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT
Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT
Wer hier hat mit Data Science zu tun?
Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT
Wer hier hat mit Data Science zu tun?

Wer hat schon mit Microservices gearbeitet?
Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT
Wer hier hat mit Data Science zu tun?

Wer hat schon mit Microservices gearbeitet?

Wer von denen hat das nicht auf der JVM
getan?
Data Science und Microservices:
Architekturentscheidungen auf dem Weg zur
flexiblen und schnellen Datenanalyse
Data Science
Data Science   Microservices
Data Science

• Finden
• Interpretieren
• Kommunizieren
von relevanten Mustern in Daten.
Microservices
Photo by Zephyris
CC BY-SA 3.0
Der Weg zu Microservices
Data Science-Plattform mit dem Fokus auf:
• Flexibilität
• Wiederverwendbarkeit
Oft verwendete NLP-Module

• Lower-Case Converter
• Tokenizer
• Stopword-Filter
Ein Beispiel:
"Grüße vom #etffm19. Mit guter Stimmung
       hier vor Ort. #rockyourdata"
Lower-Case Conversion

"grüße vom #etffm19. mit guter stimmung
       hier vor ort. #rockyourdata"
Tokenization

   ["grüße", "vom", "#etffm19", "mit", "guter",
"stimmung", "hier", "vor", "ort", "#rockyourdata"]
Stopword-Filter

["grüße", "#etffm19", "guter", "stimmung",
      "hier", "ort", "#rockyourdata"]
Architektur:
grep | sed | awk
grep | sed | awk
grep | sed | awk
grep | sed | awk
grep – 1974

sed – 1974

awk – 1977
grep | sed | awk
Photo by Linh Do
CC BY 2.0
Takeaway:
Baut Anwendungen direkt vernetzt auf
Takeaway:
Erwägt frühzeitig ein Webfrontend
def on_message(data):
    new_data = do_something_with(data)
    dispatch(new_data)
1. Datentransport
1. Datentransport

2. Logging
1. Datentransport

2. Logging

3. Monitoring
1. Datentransport
Message-Struktur

                      Unique-ID

service1   service2            service3   service4
param1=x                       param1=z
param2=y

                        Data
Message-Verarbeitung

service1                  service2
Message-Verarbeitung

                           service1                                 service2

"grüße vom #etffm19. mit              ["grüße", "vom",                         ["grüße", "#etffm19",
guter stimmung hier vor               "#etffm19", "mit", "guter",              "guter", "stimmung",
ort. #rockyourdata"                   "stimmung", "hier", "vor",               "hier", "ort",
                                      "ort", "#rockyourdata"]                  "#rockyourdata"]
2. Logging
Takeaway:
Benutzt eine zentrale Logverarbeitung
Problem: Schwierige Feedbackschleife durch

• Asynchrone Kommunikation
• Unübersichtliche Logs
Takeaway:
Erstellt verschiedene "Views" auf die Logs
1. Logs eines einzelnen Service
1. Logs eines einzelnen Service

2. Message-Trace
In_transit

service1                service2
processing

service1    service2
finalized

service1   service2
1. Logs eines einzelnen Service

2. Message-Trace
1. Logs eines einzelnen Service

2. Message-Trace

3. Service-Logs zu einer bestimmten Message
3. Monitoring
Photo by Yokov Lambrev
CC BY 3.0
Wie kann ich mein System darstellen?
Interaktiver force-directed Graph
Hilfreiche Kennziffern (Metriken):

• Anzahl Messages (global)
Hilfreiche Kennziffern (Metriken):

• Anzahl Messages (global)
• Durchschnittliche Processing-Time (global)
Hilfreiche Kennziffern (Metriken):

• Anzahl Messages (global)
• Durchschnittliche Processing-Time (global)
• Messages pro Service
Hilfreiche Kennziffern (Metriken):

• Anzahl Messages (global)
• Durchschnittliche Processing-Time (global)
• Messages pro Service
• Idle-Time pro Service
Nachteile

• Erhöhte Komplexität durch Vernetzung
Nachteile

• Erhöhte Komplexität durch Vernetzung
• Performance-Verluste, weil wir nicht mehr in-Memory sind
Vorteile
Vorteile
• Granulare Skalierbarket
Lower-Case    Twitter      Entity
Twitter-Feed    Converter   Tokenizer   Recognition
News Tokenizer
News-Feed

               Lower-Case                      Entity
                Converter                    Recognition

Twitter-Feed                   Twitter
                              Tokenizer
News Tokenizer
News-Feed

               Lower-Case                      Entity
                Converter                    Recognition

Twitter-Feed                   Twitter
                              Tokenizer

                               Twitter
                              Tokenizer
Vorteile
• Granulare Skalierbarkeit
Vorteile
• Granulare Skalierbarkeit
• Einfaches Cloud-Deployment
Vorteile
• Granulare Skalierbarkeit
• Einfaches Cloud-Deployment
• DevOps
Vorteile
• Granulare Skalierbarkeit
• Einfaches Cloud-Deployment
• DevOps
• Sprachenunabhängig
Vorteile
• Granulare Skalierbarkeit
• Einfaches Cloud-Deployment
• DevOps
• Sprachenunabhängig
• Wiederverwendbare Services
Takeaways:
Takeaways:
1. Plant eure Systeme vernetzt.
Takeaways:
1. Plant eure Systeme vernetzt.
2. Zieht frühzeitig ein Frontend in Erwägung.
Takeaways:
1. Plant eure Systeme vernetzt.
2. Zieht frühzeitig ein Frontend in Erwägung.
3. Benutzt eine zentrale Logverarbeitung.
Takeaways:
1.   Plant eure Systeme vernetzt.
2.   Zieht frühzeitig ein Frontend in Erwägung.
3.   Benutzt eine zentrale Logverarbeitung.
4.   Generiert verschiedene Views auf eure Logs.
Takeaways:
1.   Plant eure Systeme vernetzt.
2.   Zieht frühzeitig ein Frontend in Erwägung.
3.   Benutzt eine zentrale Logverarbeitung.
4.   Generiert verschiedene Views auf eure Logs.
5.   Verwendet eine hexagonale Architektur.
Takeaways:
1.   Plant eure Systeme vernetzt.
2.   Zieht frühzeitig ein Frontend in Erwägung.
3.   Benutzt eine zentrale Logverarbeitung.
4.   Generiert verschiedene Views auf eure Logs.
5.   Verwendet eine hexagonale Architektur.
6.   Stellt sicher, dass es einen guten Grund gibt
     bevor ihr selbst entwickelt.
ROXcomposer Microservice-Framework

• OpenSource ab vorraussichtlich Mitte Mai
• Bei Interesse schaut auf droxit.de/blog
• schreibt eine Mail an info@droxit.de
Vielen Dank fürs Zuhören!
hanson@droxit.de      www.droxit.de
   Sebastian Hanson     /droxit.de
                        @droxitgermany
Feedback-Code:
Sie können auch lesen