Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse - droxIT
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Data Science und Microservices: Architekturentscheidungen auf dem Weg zur flexiblen und schnellen Datenanalyse
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