Systems Architecture

Die Hauptaufgabe des Systemarchitekten ist es Produktionumgebungen aufzubauen, die performant, hochverfügbar, überwacht, sicher und kostengünstig sind. Eine optimale Zusammenarbeit mit dem IT-Consulting sorgt für perfekte Ergebnisse.

Aufgaben der Systems Architecture

Neben den funktionalen Anforderungen an eine Applikation (z.B. Kontostand einsehen oder Geld überweisen) gibt es noch nicht-funktionale Anforderungen, z.B.:

Performance

Die Anwendung wird von einer hohen Anzahl gleichzeitiger Mitarbeiter verwendet

High Availability

Die Anwendung muss quasi immer zur Verfügung stehen. Üblicherweise werden Wartungsfenster und eine Verfügbarkeit von z.B. 99,5% festgelegt.

Monitoring

Die Anforderung ist, dass Probleme bemerkt werden, bevor es der Benutzer merkt aber auch normale Laufzeitparameter werden langfristig überwacht, um Daten für eine bessere Planbarkeit zu haben.

Alerting

Zusätzlich zur Überwachung wird auch ein Alerting benötigt, d.h. das Benachrichtigen von entsprechenden Mitarbeitern, wenn Werte bestimmte Grenzen überschritten haben, beispielsweise die durchschnittlichen Antwortzeiten. Durch die Bereitstellung der Information der Überwachung muss eine schnelle Eingrenzung der Ursache möglich sein.

Control

Aspekte innerhalb der Anwendung können gesteuert werden.

Security

Die Datenkommunikation zwischen Benutzer und der Anwendung muss verschlüsselt sein, aber auch bestimmte Daten müssen verschlüsselt abgelegt sein.

Aus den Anforderungen Performance und Verfügbarkeit ergeben sich neue Anforderungen

Scalability

Üblicherweise ist es notwendig, mehrere Server-Instanzen parallel zu betreifen, um die Antwortzeiten bei einer hohen Anzahl von gleichzeitigen Benutzerzugriffen sicherzustellen. Zusätzlich sollte die Architektur aber auch so ausgelegt sein, dass weitere Instanzen schnell hinzugefügt werden können, wenn Bedarf dazu besteht (Starker Anstieg von Benutzern durch Werbung) oder wieder entfernt werden kann.

Clustering

Bei dem Betrieb mehrerer Server-Instanzen ist es notwendig, dass diese zur Laufzeit Informationen austauschen. Dazu gehört die Synchronisation der Zustände, damit im Falle eines Ausfalls der Benutzer ohne Unterbrechung weiterarbeiten kann.

Load Balancing

Sobald zwei oder mehr Instanzen parallel laufen muss eine zentrale Instanz dafür sorgen, dass die Zugriffe auf allen Instanzen gleichmäßig verteilt werden, zum Teil aber mit komplexen Regeln. 

Die Aufgabe des Systems Architects ist, Produktionsumgebungen für Anwendung zu entwerfen, die alle o.g. Anforderungen erfüllen. Diese Aufgabe setzt ein hohes Wissen bei den entsprechenden Technologien und sehr viel Erfahrung voraus. Der Aufbau dieser Umgebungen erfolgt mit Unterstützung von Systems Engineers.

Zusätzliche Aufgaben

Es gibt weitere Aufgaben, die vom Systems Architect durchgeführt werden:

Architecture Review

Review existierender Architekturen und Bewertung anhand Kriterien wie Wartbarkeit, Erweitarbarkeit, Konsistenz, usw.

Server Sizing

Für die Projektplanung ist es wichtig möglichst früh abschätzen zu können wie teuer die Produktions- und Testumgebungen sein werden. Hierzu wird mit Tests und viel Erfahrung eine Grobarchitektur für die Produktionsumgebung gemacht und anhand dieser die Kosten für den initialen Aufbau und den monatlichen Betrieb ermittelt.

Performance Tuning

Häufig gibt es Produktionsumgebungen, wo es ständig Probleme mit der CPU-Last oder der Speicherauslastung gibt. Die Ursachen können extrem vielfältig sein, z.B. falsch konfigurierte Load Balancer oder Caches, die zu schlechten Antwortzeiten führen. Erfahrene Systems Architects bringen auch entsprechende Programmierkenntnisse, um Problemen auf den Grund zu gehen.

Development Environment

Der Systems Architect unterstützt die Planung und den Aufbau der kompletten Development Environment bestehend aus Source Repository, Automated Build und einem Artifact Repository.