Anzeige

Anzeige

VERANSTALTUNGEN

CloudFest 2019
23.03.19 - 29.03.19
In Europa-Park, Rust

Blockchain Summit
26.03.19 - 26.03.19
In Frankfurt, Kap Europa

ELO Solution Day München
27.03.19 - 27.03.19
In Messe München

Hannover Messe 2019
01.04.19 - 05.04.19
In Hannover

SMX München
02.04.19 - 03.04.19
In ICM – Internationales Congress Center München

Anzeige

Anzeige

Clouds Code

Einer der größten Vorteile der Cloud ist ihre Flexibilität und vor allem ihre Skalierbarkeit. So kann die Unternehmens-IT die Ressourcen bereitstellen, die die Nutzer auch tatsächlich in Anspruch nehmen. Dabei gibt es einige Faktoren, die berücksichtigt werden müssen. Einige davon betreffen den auf der Cloud ablaufenden Code, die Architektur und den laufenden Betrieb.

Skalierung der Cloud

Für die Skalierung einer Cloud gibt es im Wesentlichen drei Ansätze. Der erste ist die vertikale Skalierung. In diesem Fall werden die gegebenen Ressourcen erweitert – also dem virtuellen Server wird mehr CPU-Leistung, Arbeitsspeicher oder Speicherplatz hinzugefügt. Dieser Ansatz ist der einfachste, da lediglich Systemkomponenten hinzuzufügen sind, die Administration bleibt dieselbe. Anwendungsfelder hierfür sind beispielsweise der Einsatz von relationalen Datenbank-Systemen. Der zweite Ansatz ist die horizontale Skalierung. Hierbei bleibt die Beschaffenheit eines virtuellen Servers gleich, ihm wird eine zweite Instanz hinzugefügt. Typischer Anwendungsfall dafür ist ein Webserver. In diesem Fall ist die Administration etwas anspruchsvoller. Die Lasten werden unter den virtuellen Servern mittels eines Load Balancers verteilt. Schließlich gibt es den diagonalen Ansatz, der eine Kombination aus horizontalem und vertikalem Modell entspricht. In diesem Fall werden zunächst die Kapazitäten eines Servers erweitert, bevor ein zweiter Server hinzugezogen wird. Hier wird der Aufwand für die Administration begrenzt, da durch die Phase der vertikalen Skalierung einiges an Ressourcenbedarf aufgefangen wird.

Mooresches Gesetz gültig?

Nutzt man virtuelle Server um beispielsweise Softwareentwicklung zu betreiben, ist die Versuchung groß, bei Erreichen eines Performance-Engpasses einfach die Server zu skalieren – und dies immer und immer wieder. Dass sich Entwickler oft auf den technischen Fortschritt verlassen, ist ein Ergebnis des Mooreschen Gesetzes. Es besagt, dass sich die Komplexität integrierter Schaltkreise mit minimalen Kosten für die Komponenten alle 12 bis 24 Monate verdoppeln. Als der Namensgeber dieser Regel, Gordon Moore, das Gesetz formulierte, verstand er unter Komplexität die Anzahl der Schaltkreiskomponenten auf einem integrierten Schaltkreis. Jedoch hat sich diese Regel etwas abgeschwächt. Heute unterscheidet sich beispielsweise ein modernes Notebook von einem drei Jahre alten Gerät nicht wesentlich. Es finden sich heute möglicherweise ein besseres Display oder ein sparsamerer Umgang mit der Energieversorgung. Der Chipsatz und die Ausstattung mit Arbeitsspeicher dürften jedoch heute oftmals äquivalent zu einem drei Jahre alten Modell sein.
Flexibilität in der Cloud-Umgebung

Was sich allerdings geändert hat ist die Anzahl der Kerne in jedem einzelnen Rechner. Dies zieht aber nach sich, dass in der Anwendungsprogrammierung das Threading immer wichtiger wird. So unterstützt Java Multithreading und bietet gleichzeitig Funktionen für den sicheren Ablauf paralleler Threads. Dieses Thema ist bereits gut dokumentiert. Der Programmieransatz ist oft weniger komplex und erfordert viele Prozesse. Daraus resultiert, dass nicht mehr nur der vertikale Skalierungsansatz maßgeblich ist, sondern auch fortschrittliche Skalierungsmodelle, wie etwa die horizontale Skalierung, nutzbar werden. Dazu sollten Entwicklungsumgebungen derart gestaltet sein, dass sie maschinenübergreifend Ressourcen nutzen können – was insbesondere eine Cloud-Umgebung bietet. Hier steht eine programmierbare Umgebung zur Verfügung, die mittels Dienstprogrammen angepasst werden kann. Auf diese Weise werden nur die Ressourcen genutzt – und auch bezahlt – die tatsächlich in Anspruch genommen werden. Die technische Umsetzung der Kapazitätsplanung erfolgt dabei seitens des Cloud-Anbieters. Die Nutzung eines Cloud-Dienstes für die Entwicklung hat darüber hinaus den Vorteil, dass die Entwicklungsplattform nicht selbst angeschafft werden muss – der Preis für die Inanspruchnahme der Entwicklungsumgebung kann so besser und präziser in die Entwicklungskosten eingerechnet werden.

Damit können sich Entwickler auf ihre Kernaufgaben konzentrieren, ohne sich um die Plattform kümmern zu müssen. Die Wartung der Entwicklungsserver würde sonst ebenfalls beim Entwicklerteam angesiedelt sein, mit allen Nebeneffekten wie etwa einem vierundzwanzigstündigen Notdienst.

Monitoring-Kontrollfunktionen wichtig

Um ein möglichst gutes Verständnis für das Laufzeitverhalten und die Leistungsfähigkeit einer Applikation zu bekommen, ist es heute nicht mehr ausreichend, über exzellentes Standard-Monitoring zu verfügen, sondern es ist zusätzlich auch notwendig, entsprechende Monitoring-Kontrollfunktionen direkt in die Applikation zu integrieren. Bei einer Applikation, vor der eine Warteschlange Informationen abarbeitet, ist es wichtig zu wissen, wie viele Einträge erfolgreich weiterverarbeitet werden konnten – und wie viele nicht. Mit Hilfe von internem Applikations-Monitoring ist es schnell und ressourcenschonend möglich, diese Fehler zu finden, ohne dabei langwierig große Datenmengen auswerten zu müssen. Zu diesem Zweck gibt es eine Reihe von Tools, die diesen effizienteren und ressourcenschonenderen Ansatz perfekt unterstützen.

Für die Abbildung laufender Prozesse in der Entwicklungsphase eignet sich beispielsweise Prometheus. Die Lösung erstellt Prozesslandkarten und Prozessdiagramme auch als Weblösung. Mit deren Hilfe können Entwickler in ihren Anwendungen Defizite abstellen, Laufzeiten verkürzen und damit Kosten senken sowie die Effizienz nachhaltig steigern beziehungsweise durch Add-Ons weitere Funktionen realisieren. Mit der Auswertung der Analyse solcher Tools können Entwickler ihren Code schlank und effizient gestalten. Die Strukturprotokollierung eignet sich ferner auch dazu, einen tieferen Einblick in die Auswirkungen der Arbeitsweise der Anwendungen zu gewinnen.

Letztendlich sind es gerade Cloud-Ressourcen, die die Entwicklungsarbeit nicht nur effizienter, sondern auch flexibler gestalten. Durch ihre Skalierbarkeit und die Fähigkeit zur granularen Abrechnung lassen sich Anwendungsfälle nicht nur besser skaliert darstellen, auch die genauere Budgetierung von Softwareprojekten wird wesentlich erleichtert.

Pierre-Yves RitschardPierre-Yves Ritschard, CTO von Exoscale

www.exoscale.com

 

GRID LIST
Containerlösung

Wie sich Lock-in-Effekte vermeiden lassen

Die Wahl der richtigen Plattform für Unternehmensapplikationen mag auf den ersten Blick…
Cloud Concept

Die wichtigsten Cloud-Trends 2019

Was bringt das Jahr 2019? Keine Frage: Die Cloud wird immer wichtiger. Doch eine…
Tb W190 H80 Crop Int 3368ebdee10c122828225f75e23da6f9

Leitfaden für den Cloud-Einstieg

Laut IDC entfiel bereits 2018 die Hälfte aller IT-Ausgaben auf die Cloud. Dieser Anteil…