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.