Wer ein Programmierprojekt in Angriff nehmen will, fragt sich oft, nach welchen Kriterien man seine Technologien hinsichtlich Leistung und Duuchführbarkeit am besten auswählt. Von folgenden drei Voraussetzungen wird zunächst einmal ausgegangen: Man schreibt seit einiger Zeit ab und zu Code, hat jedoch noch nicht an größeren Projekten gearbeitet. Man bevorzugt keine bestimmte Technologie und hat den Vorteil, bei diesem Projekt bei Null anzufangen. Aufgrund vorhandener Erfahrung besteht zwar eine Vorliebe für den Einsatz von Linux, doch ist dies nicht zwingend.
Dieser Artikel gibt einige Ratschläge zur Entscheidungsfindung. Es werden keine speziellen Technologien empfohlen, sondern es soll ein Weg aufgezeigt werden, der die Entscheidung für Technologien und Architekturvarianten erleichtert.
Schritt 1: Grober Entwurf der Anwendung
Agile Methoden sind sehr beliebt geworden und manche glauben, dies bedeute, nicht weiter als über einen Zeitraum von zwei Wochen hinaus zu denken. Doch ein grober Entwurf des Projekts kann sehr hilfreich sein. Es reicht aus, ein Tool zu verwenden, das Ablaufdiagramme erstellen kann, etwa Visio, um einen Überblick über die höhere Logik zu erstellen. Man muss nicht zu sehr ins Detail gehen, Schritte wie „validieren, dass dieses Feld mindestens fünf Zeichen enthält“ oder Datenlayouts sind unnötig. Aber man muss eine allgemeine Idee davon haben, welche Bereiche der Anwendung welche Aufgaben ausführen.
Beispiele für Dinge, die in diesem Diagramm auftauchen sollten:
Schritt 2: Ressourceneinsatz und Charakteristika ermitteln
Anhand des fertigen Diagramms wird der Ressourceneinsatz ermittelt. Relevante Ressourcen sind CPU, RAM, Festplattenspeicher und Bandbreite. Sollen große Datenmengen zu oder von einem externen Webdienst transferiert werden? Dann handelt es sich um eine Bandbreitenressource in der Verbindung zwischen der Anwendung und diesem Dienst. Werden speicherintensive Berechnungen in der Datenbank durchgeführt, so betrifft dies die CPU-Auslastung in der Datenbank.
Schritt 3: Leistungskritische Bereiche ermitteln
Wenn man weiß, wo die vorhandenen Ressourcen zum Einsatz kommen, kennt man auch mögliche Leistungsengpässe. An diesen Punkten wirkt sich die Technologiewahl am meisten aus. Wenn in einer Datenbank nur sehr wenig gespeichert werden soll, hat man bei der Wahl der Datenbank mehr Möglichkeiten. Für Algorithmen mit hoher CPU-Auslastung in der Geschäftslogikschicht braucht man eine Sprache und Plattform, die schnelle Berechnungen unterstützt. Aus der folgenden Tabelle geht hervor, wie sich dies auf die Entscheidungsfindung auswirkt.
CPU | RAM | Festplattenspeicher | Bandbreite | |
---|---|---|---|---|
Datenbank | DB muss ein hochleistungsfähiges System wie PostgreSQL oder Oracle sein | Alle größeren Datenbanken sollten mit viel RAM arbeiten können | Einfache DB mit Größenbeschränkungen, wie SQL Server Express, sind ungeeignet | Platzieren der Anwendung im selben Serverraum wie die Datenbank |
Geschäftsschicht | Sprache muss schnell sein und braucht gute Multithreading-Unterstützung | Nicht zutreffend | Platzieren der Anwendung im selben Serverraum wie die Festplatten | Platzieren der Anwendung im selben Serverraum wie die Datenbank |
API mit Client-Zugriff | Sprache muss schnell sein und braucht gute Multithreading-Unterstützung | Nicht zutreffend | Architektur überdenken | Strategie überdenken |
Client-Software | Sprache muss schnell sein und braucht gute Multithreading-Unterstützung | Zielmarkt und dessen Client-Fähigkeiten beachten | Zielmarkt und dessen Client-Fähigkeiten beachten | Sichergehen, dass Zielmarkt über ausreichende Bandbreite verfügt (z B. nicht an Verbraucher in ländlichen Gebieten verkaufen) |
Dienste von Fremdanbietern | Anbieter sorgfältig auswählen | Nicht zutreffend | Für Anbieter mit preisgünstigem Storage entscheiden | Strategie überdenken |
Schritt 4: Skalieren von Anforderungen
Als weiterer Punkt lässt sich aus dem Diagramm ableiten, in welchen Bereichen die Anwendung skaliert werden muss. Wenn die Verarbeitung größtenteils im Client-Teil der Anwendung stattfindet, kann die Server-Architektur zum Beispiel sehr viel kleiner gehalten werden.
Man sieht außerdem, welche Art der Skalierung nötig ist. Die meisten Datenbanken haben Cluster-Funktionen. Wenn man die Wahl hat, ist es oft einfacher und besser, Bereiche, die skaliert werden müssen (besonders wenn sie einen Freigabestatus zwischen Anforderungen benötigen), in die Datenbank zu legen, wo Skalierung schon vorgesehen ist, oder sich für Technologien weiter oben in der Struktur zu entscheiden, die auch Clustering oder Skalieren beinhalten.
Fazit
Wenn man zu Beginn des Entwicklungsprozesses die Logik der Anwendung grob skizziert, ist es einfacher, die Technologien auszuwählen, die am besten zu den eigenen Anforderungen passen. Es sind auch viele nichttechnische Punkte zu beachten (wie Budget, Erfahrung mit bestimmten Technologien), aber dieser Entscheidungsfindungsprozess kann als Ausgangspunkt dienen, um die Möglichkeiten einzugrenzen und Probleme schon vor dem Auftreten zu ermitteln.
Malware SmokeLoader wird weiterhin von Bedrohungsakteuren genutzt, um Payloads über neue C2-Infrastrukturen zu verbreiten.
Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.
Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…
Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…
Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…
Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…