BATbern53
Easy Migration through Clean Architecture
Migration von
MongoDB On-
Premise Clustern in
die Cloud
Bern, 21. Juni 2024
2
Inhaltsverzeichnis
1 Über mich
2 Das Vorhaben
3 MongoDB - Performance Monitoring
4 Software Architektur - .NET Services -
5 Real Performance Monitoring
Juni 2024
BATbern53 3
1. Über mich
Hozelito Vajcek
Head of Business Applications Development
TradingUnit@BKW
ISAQB® CPSA-A zertifiziert (Advanced Level)
TOGAF® 9.2 zertifiziert
4
Inhaltsverzeichnis
1 Über mich
2 Das Vorhaben
3 MongoDB - Performance Monitoring
4 Software Architektur - .NET Services -
5 Real Performance Monitoring
Juni 2024
BATbern53 5
2. Das Vorhaben - PoC Challenge
PoC: Alle MongoDB On-Premise Cluster in die Cloud migrieren (T - Q - P)
Wie kann sichergestellt werden, dass bei der Migration von On-Premise Servern in die Cloud alle Anforderungen
erfüllt werden können und dabei keine „unvorhergesehenen Überraschungen“ auftreten ?
Anforderungen
 ☑ Sicherheit (Security)
 Private Endpoint  BKW Azure Infrastruktur
 MongoDB: “All data and transportation of Data is encrypted.”
 ☑ Zuverlässigkeit (Reliability)
 Storage & Instance Size Auto Scaling
 Verfügbarkeit ist gegeben durch die SLAs der Cloud Anbieter
 ☑ ZERO Downtime Approach
 Live Migration Funktionalität
 Performance
 Eigene Lösung (dazu später mehr)
6
Inhaltsverzeichnis
1 Über mich
2 Das Vorhaben
3 MongoDB - Performance Monitoring
4 Software Architektur - .NET Services -
5 Real Performance Monitoring
Juni 2024
BATbern53 7
4. MongoDB - Performance Monitoring
OnBoard Monitoring von MongoDB war nicht ausreichend für unsere Zwecke
• Isoliertes Monitoring: Lediglich der MongoDB Cluster bzw. die Performance der einzelnen
Instanzen werden gemessen
• Kein E2E Monitoring, somit keine Berücksichtigung der Latenzen durch Load Balancer, VPN
Tunnel, Proxies, Firewalls etc.
Juni 2024
BATbern53 8
4. MongoDB - Real Performance Monitoring
Anforderungen an das „Real Performance Monitoring “
• E2E Monitoring und somit Messung der echten Performance
• Performance aller Datenbankoperationen mit der Performance nach der geplanten Migration in die
Cloud vergleichen und visualisieren
9
Inhaltsverzeichnis
1 Über mich
2 Das Vorhaben
3 MongoDB - Performance Monitoring
4 Software Architektur - .NET Services -
5 Real Performance Monitoring
Juni 2024
BATbern53 10
4. Software Architektur - .NET Services - CBA
CBA - Code Bricks Architecture
• .NET Services lassen sich wie Legobausätze
zusammenstecken
• Jeder Service setzt auf ein Framework (Small Bricks) &
diversen Komponenten auf
• Es existieren fertige Komponenten für unterschiedliche
Funktionalitäten (Medium Bricks)
• Gemeinsame Funktionalitäten bei dedizierten Services
befinden sich in Common Solutions (Large Bricks)
Generated with Microsoft Designer Image
Creator
Juni 2024
BATbern53 11
4. Software Architektur - .NET Services - CBA - Deep Dive
V5 Core Framework
V5 Common Framework
V5
Component
V5
Component
V5
Component
V5 .NET Service Windows Service
Based on .NET Core
6
Message Bus:
RabbitMQ
Persistance Layer:
MongoDB
Observability
Components:
Loki
Grafana
Tempo Tracing
Juni 2024
BATbern53 12
4. Software Architektur - .NET Services - CBA - Deep Dive
V5 Core Framework
V5 Common Framework
V5
Component
V5
Component
V5
Component
V5 .NET Service < Small Bricks >
…
Configuration
Data
Data.MongoDB
Data.Oracle
Di.
Di.DryIoc
Lifecycle
Logging
Logging.Serilog
Messaging
Processing
Telemetry
…
Juni 2024
BATbern53 13
4. Software Architektur - .NET Services - CBA - Deep Dive
V5 Core Framework
V5 Common Framework
V5
Component
V5
Component
V5
Component
V5 .NET Service
< Small Bricks >
…
Chart
Chart.TimeSeries
TimeSeries
…
Juni 2024
BATbern53 14
4. Software Architektur - .NET Services - CBA - Deep Dive
V5 Core Framework
V5 Common Framework
V5
Component
V5
Component
V5 .NET Service
< Medium Bricks >
…
AmqpClientComponent
CachingComponent
DatabaseMonitoringComp.
EmailComponent
ExcelComponent
ServiceStateComponent
…
Juni 2024
BATbern53 15
4. Software Architektur - .NET Services - CBA - Deep Dive
V5 Core Framework
V5 Common Framework
V5
Component
V5
Component
V5
Component
V5 .NET Service (Dedicated) < Large Bricks >
AldTimeSeriesCommon
LoadCurvesCommon
…
V5 Common
Solution
16
Inhaltsverzeichnis
1 Über mich
2 Das Vorhaben
3 MongoDB - Performance Monitoring
4 Software Architektur - .NET Services -
5 Real Performance Monitoring
Juni 2024
BATbern53 17
5. Real Performance Monitoring - Step by Step
Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ?
Backend
 V5 Core Framework anpassen
 DB Monitoring Komponente implementieren
 DB Performancedaten persistieren
 DB Performance Informationen loggen
 Dedizierte .NET Services zum Testen der neuen Funktionalität umstellen
• Service A
• Service B
• …
Frontend
 WPF Client für die Anzeige der Performance Daten
 Vergleich von identischen Zeiträumen visualisieren (1-3 Wochen Diff.)
Juni 2024
BATbern53 18
5. Real Performance Monitoring - Step 1
Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ?
 V5 Core Framework anpassen
• Alle MongoDB Operationen als Event anbieten
• Steuerbar mittels Konfigurations-Schalter im Connection String
Generated with Microsoft Designer Image
Creator
Juni 2024
BATbern53 19
5. Real Performance Monitoring - Step 2
Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ?
 DB Monitoring Komponente implementieren
• MongoDB Core Events sammeln & aggregieren
Juni 2024
BATbern53 20
5. Real Performance Monitoring - Step 3
Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ?
 DB Performancedaten persistieren & loggen
• Alle Performancedaten in der MongoDB persistieren und strukturiert loggen
Juni 2024
BATbern53 21
- Persistierte Performance Daten -
Juni 2024
BATbern53 22
- Performance Logs -
Juni 2024
BATbern53 23
5. Real Performance Monitoring - Step 4
Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ?
•  Dedizierte .NET Services zum Testen der neuen Funktionalität umstellen
• Connection String anpassen (SPoC - Single Point of Configuration)
•  WPF Client für die Anzeige der Performance Daten
•  Vergleich von identischen Zeiträumen visualisieren (1-3 Wochen Diff.)
Ablauf des Perfomance Messung
1. Erste 2 Wochen: On-Premise Performance Datensammlung
2. Connection String auf den Cloud Cluster umstellen
3. Nächste 2 Wochen: Atlas Cloud Performance Datensammlung
4. Performance vergleichen (1 Woche bzw. 2 Wochen zurück)
Juni 2024
BATbern53 24
- Performance Visualisierung -
Juni 2024
BATbern53 25
- Performance Visualisierung -
Performanceunterschiede resultieren lediglich aus einer erhöhten Grundlatenz von ca. 30 - 40ms
Juni 2024
BATbern53 26
- Performance Visualisierung -
Juni 2024
BATbern53 27
Q&A
Vielen Dank für Ihre
Aufmerksamkeit
Hozelito Vajcek
Head of Business Applications Development

BATbern53 BKW Easy Migration through Clean Architecture

  • 1.
    BATbern53 Easy Migration throughClean Architecture Migration von MongoDB On- Premise Clustern in die Cloud Bern, 21. Juni 2024
  • 2.
    2 Inhaltsverzeichnis 1 Über mich 2Das Vorhaben 3 MongoDB - Performance Monitoring 4 Software Architektur - .NET Services - 5 Real Performance Monitoring
  • 3.
    Juni 2024 BATbern53 3 1.Über mich Hozelito Vajcek Head of Business Applications Development TradingUnit@BKW ISAQB® CPSA-A zertifiziert (Advanced Level) TOGAF® 9.2 zertifiziert
  • 4.
    4 Inhaltsverzeichnis 1 Über mich 2Das Vorhaben 3 MongoDB - Performance Monitoring 4 Software Architektur - .NET Services - 5 Real Performance Monitoring
  • 5.
    Juni 2024 BATbern53 5 2.Das Vorhaben - PoC Challenge PoC: Alle MongoDB On-Premise Cluster in die Cloud migrieren (T - Q - P) Wie kann sichergestellt werden, dass bei der Migration von On-Premise Servern in die Cloud alle Anforderungen erfüllt werden können und dabei keine „unvorhergesehenen Überraschungen“ auftreten ? Anforderungen  ☑ Sicherheit (Security)  Private Endpoint  BKW Azure Infrastruktur  MongoDB: “All data and transportation of Data is encrypted.”  ☑ Zuverlässigkeit (Reliability)  Storage & Instance Size Auto Scaling  Verfügbarkeit ist gegeben durch die SLAs der Cloud Anbieter  ☑ ZERO Downtime Approach  Live Migration Funktionalität  Performance  Eigene Lösung (dazu später mehr)
  • 6.
    6 Inhaltsverzeichnis 1 Über mich 2Das Vorhaben 3 MongoDB - Performance Monitoring 4 Software Architektur - .NET Services - 5 Real Performance Monitoring
  • 7.
    Juni 2024 BATbern53 7 4.MongoDB - Performance Monitoring OnBoard Monitoring von MongoDB war nicht ausreichend für unsere Zwecke • Isoliertes Monitoring: Lediglich der MongoDB Cluster bzw. die Performance der einzelnen Instanzen werden gemessen • Kein E2E Monitoring, somit keine Berücksichtigung der Latenzen durch Load Balancer, VPN Tunnel, Proxies, Firewalls etc.
  • 8.
    Juni 2024 BATbern53 8 4.MongoDB - Real Performance Monitoring Anforderungen an das „Real Performance Monitoring “ • E2E Monitoring und somit Messung der echten Performance • Performance aller Datenbankoperationen mit der Performance nach der geplanten Migration in die Cloud vergleichen und visualisieren
  • 9.
    9 Inhaltsverzeichnis 1 Über mich 2Das Vorhaben 3 MongoDB - Performance Monitoring 4 Software Architektur - .NET Services - 5 Real Performance Monitoring
  • 10.
    Juni 2024 BATbern53 10 4.Software Architektur - .NET Services - CBA CBA - Code Bricks Architecture • .NET Services lassen sich wie Legobausätze zusammenstecken • Jeder Service setzt auf ein Framework (Small Bricks) & diversen Komponenten auf • Es existieren fertige Komponenten für unterschiedliche Funktionalitäten (Medium Bricks) • Gemeinsame Funktionalitäten bei dedizierten Services befinden sich in Common Solutions (Large Bricks) Generated with Microsoft Designer Image Creator
  • 11.
    Juni 2024 BATbern53 11 4.Software Architektur - .NET Services - CBA - Deep Dive V5 Core Framework V5 Common Framework V5 Component V5 Component V5 Component V5 .NET Service Windows Service Based on .NET Core 6 Message Bus: RabbitMQ Persistance Layer: MongoDB Observability Components: Loki Grafana Tempo Tracing
  • 12.
    Juni 2024 BATbern53 12 4.Software Architektur - .NET Services - CBA - Deep Dive V5 Core Framework V5 Common Framework V5 Component V5 Component V5 Component V5 .NET Service < Small Bricks > … Configuration Data Data.MongoDB Data.Oracle Di. Di.DryIoc Lifecycle Logging Logging.Serilog Messaging Processing Telemetry …
  • 13.
    Juni 2024 BATbern53 13 4.Software Architektur - .NET Services - CBA - Deep Dive V5 Core Framework V5 Common Framework V5 Component V5 Component V5 Component V5 .NET Service < Small Bricks > … Chart Chart.TimeSeries TimeSeries …
  • 14.
    Juni 2024 BATbern53 14 4.Software Architektur - .NET Services - CBA - Deep Dive V5 Core Framework V5 Common Framework V5 Component V5 Component V5 .NET Service < Medium Bricks > … AmqpClientComponent CachingComponent DatabaseMonitoringComp. EmailComponent ExcelComponent ServiceStateComponent …
  • 15.
    Juni 2024 BATbern53 15 4.Software Architektur - .NET Services - CBA - Deep Dive V5 Core Framework V5 Common Framework V5 Component V5 Component V5 Component V5 .NET Service (Dedicated) < Large Bricks > AldTimeSeriesCommon LoadCurvesCommon … V5 Common Solution
  • 16.
    16 Inhaltsverzeichnis 1 Über mich 2Das Vorhaben 3 MongoDB - Performance Monitoring 4 Software Architektur - .NET Services - 5 Real Performance Monitoring
  • 17.
    Juni 2024 BATbern53 17 5.Real Performance Monitoring - Step by Step Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ? Backend  V5 Core Framework anpassen  DB Monitoring Komponente implementieren  DB Performancedaten persistieren  DB Performance Informationen loggen  Dedizierte .NET Services zum Testen der neuen Funktionalität umstellen • Service A • Service B • … Frontend  WPF Client für die Anzeige der Performance Daten  Vergleich von identischen Zeiträumen visualisieren (1-3 Wochen Diff.)
  • 18.
    Juni 2024 BATbern53 18 5.Real Performance Monitoring - Step 1 Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ?  V5 Core Framework anpassen • Alle MongoDB Operationen als Event anbieten • Steuerbar mittels Konfigurations-Schalter im Connection String Generated with Microsoft Designer Image Creator
  • 19.
    Juni 2024 BATbern53 19 5.Real Performance Monitoring - Step 2 Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ?  DB Monitoring Komponente implementieren • MongoDB Core Events sammeln & aggregieren
  • 20.
    Juni 2024 BATbern53 20 5.Real Performance Monitoring - Step 3 Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ?  DB Performancedaten persistieren & loggen • Alle Performancedaten in der MongoDB persistieren und strukturiert loggen
  • 21.
    Juni 2024 BATbern53 21 -Persistierte Performance Daten -
  • 22.
    Juni 2024 BATbern53 22 -Performance Logs -
  • 23.
    Juni 2024 BATbern53 23 5.Real Performance Monitoring - Step 4 Wie können wir die Performance Messung aller Datenbankoperationen in allen .NET Services ermöglichen ? •  Dedizierte .NET Services zum Testen der neuen Funktionalität umstellen • Connection String anpassen (SPoC - Single Point of Configuration) •  WPF Client für die Anzeige der Performance Daten •  Vergleich von identischen Zeiträumen visualisieren (1-3 Wochen Diff.) Ablauf des Perfomance Messung 1. Erste 2 Wochen: On-Premise Performance Datensammlung 2. Connection String auf den Cloud Cluster umstellen 3. Nächste 2 Wochen: Atlas Cloud Performance Datensammlung 4. Performance vergleichen (1 Woche bzw. 2 Wochen zurück)
  • 24.
    Juni 2024 BATbern53 24 -Performance Visualisierung -
  • 25.
    Juni 2024 BATbern53 25 -Performance Visualisierung - Performanceunterschiede resultieren lediglich aus einer erhöhten Grundlatenz von ca. 30 - 40ms
  • 26.
    Juni 2024 BATbern53 26 -Performance Visualisierung -
  • 27.
  • 28.
    Vielen Dank fürIhre Aufmerksamkeit Hozelito Vajcek Head of Business Applications Development

Hinweis der Redaktion

  • #4 IT Enthusiast. Bereits im Alter von 11 Jahren begonnen zu programmieren. Seit über 10 Jahren bei der BKW und seit über 4 Jahren Leiter Development. Zuständig für den gesamten Integrations-Layer für alle internen und externen Handelssysteme. Team besteht aus Microsoft .NET Spezialisten, welche seit vielen Jahren .NET Services & Clients entwickeln.  
  • #6 Performance: Die aktuelle Performance aller Datenoperationen sollte mit der Perfomance nach einer Migration in die Cloud verglichen werden Eigene Lösung - Mehr dazu später - Security: BKW Security Assessment “All data and transportation of Data is encrypted.” Reliability: Das neue System sollte 24/7 verfügbar und skalierbar sein Verfügbarkeit ist gegeben durch die Cloud Anbieter (SLAs) Storage & Size Auto Scaling Seamless Migration & ZERO Downtime Approach Live Migration Sync
  • #11 Core Repo Functionality im Detail erklären Registrierung von einem DataStore & Entitäten Code für Repo/Entity Registration & Access Warum kein EF for MongoDB ? Abhängigkeit zu einem anderen Framework und Abstraktion wäre immer noch nötig Viele Limitierungen (https://www.mongodb.com/docs/entity-framework/current/limitations) Vorteile von MongoDB können nicht genutzt werden, wie z.B. Aggregation Pipelines etc. Vermischung von Relationale Begriffen mit NoSQL Namings
  • #18 Core Repo Functionality im Detail erklären Registrierung von einem DataStore & Entitäten Code für Repo/Entity Registration & Access Warum kein EF for MongoDB ? Abhängigkeit zu einem anderen Framework und Abstraktion wäre immer noch nötig Viele Limitierungen (https://www.mongodb.com/docs/entity-framework/current/limitations) Vorteile von MongoDB können nicht genutzt werden, wie z.B. Aggregation Pipelines etc. Vermischung von Relationale Begriffen mit NoSQL Namings
  • #19 Core Repo Functionality im Detail erklären Registrierung von einem DataStore & Entitäten Code für Repo/Entity Registration & Access Warum kein EF for MongoDB ? Abhängigkeit zu einem anderen Framework und Abstraktion wäre immer noch nötig Viele Limitierungen (https://www.mongodb.com/docs/entity-framework/current/limitations) Vorteile von MongoDB können nicht genutzt werden, wie z.B. Aggregation Pipelines etc. Vermischung von Relationale Begriffen mit NoSQL Namings
  • #20 Core Repo Functionality im Detail erklären Registrierung von einem DataStore & Entitäten Code für Repo/Entity Registration & Access Warum kein EF for MongoDB ? Abhängigkeit zu einem anderen Framework und Abstraktion wäre immer noch nötig Viele Limitierungen (https://www.mongodb.com/docs/entity-framework/current/limitations) Vorteile von MongoDB können nicht genutzt werden, wie z.B. Aggregation Pipelines etc. Vermischung von Relationale Begriffen mit NoSQL Namings
  • #21 Core Repo Functionality im Detail erklären Registrierung von einem DataStore & Entitäten Code für Repo/Entity Registration & Access Warum kein EF for MongoDB ? Abhängigkeit zu einem anderen Framework und Abstraktion wäre immer noch nötig Viele Limitierungen (https://www.mongodb.com/docs/entity-framework/current/limitations) Vorteile von MongoDB können nicht genutzt werden, wie z.B. Aggregation Pipelines etc. Vermischung von Relationale Begriffen mit NoSQL Namings