Aufrufe
vor 3 Jahren

Netzwoche 05/2017

  • Text
  • Schweiz
  • Unternehmen
  • Schweizer
  • Netzmedien
  • Webcode
  • Transformation
  • Digitale
  • Anforderungen
  • Software
  • Digitalen

36 Focus

36 Focus Entwicklertrends Die App auf dem Weg in die Cloud Durch die Entwicklung und den Betrieb auf Cloud-Plattformen ändern sich die Anforderungen an moderne Applikationen: Skalierbarkeit, verteilte Systeme, Continous Integration sowie Container sind Schlagworte, mit denen sich Entwickler schon bei der Architektur beschäftigen sollten und die durch die Methodik der «Twelve Factor App» abgedeckt werden. DER AUTOR Thomas Philipona CTO und Head of Middleware & APPUiO, Puzzle ITC Cloud-Umgebungen sind dynamisch. Nodes, virtuelle Maschinen oder Container können verschoben, neu gestartet oder gar «gekillt» werden. Um Veränderungen in der Infrastruktur abzufangen, sollten von einer Applikation mindestens zwei Instanzen parallel auf zwei verschiedene Nodes deployed werden. Die Applikation muss so robust implementiert sein, dass sie Restarts oder gar das «Abwürgen» erträgt und möglichst schnell nach dem Starten wieder zur Verfügung steht. Wenn eine Applikation über mehrere Instanzen skaliert wird, muss aus architektonischer Sicht festgelegt werden, wo der State (Sessions, Daten etc.) abgelegt wird und wie Requests über Loadbalancer auf die entsprechenden Instanzen verteilt werden. Die Stateless-Architektur verfolgt den Ansatz, dass eine Applikation bei einem Aufruf nur von den Inputparametern abhängig ist. Daten werden also nicht in Sessions zwischengespeichert. Die Clients können Requests an beliebige Backends senden. Dies ermöglicht die Skalierbarkeit der Applikation und reduziert gleichzeitig die Komplexität. Für die Platzierung der Session und State gibt es zwei Möglichkeiten: Entweder bleiben sie beim Client oder sie werden in einer Datenbank gespeichert. Die erste Variante wird insbesondere im Umfeld von Single Page Apps mit AngularJS oder Ember.js häufig angewendet. Vereinfachung dank Container Die Konfiguration der Applikationen sollte vom Code getrennt werden, denn sie ändert sich von Deployment zu Deployment. Der Sourcecode hingegen bleibt auf allen Umgebungen gleich. Die Konfiguration von Datenbank-Verbindungsinformationen, Credentials zu externen Diensten sowie Hostname und IP-Adressen über Umgebungsvariablen hat sich mehrheitlich durchgesetzt. Die eigentlichen Werte einer Konfiguration werden der Applikation quasi «injiziert». Die Kontrollfrage «kann die Codebase opensourced werden?» zeigt, ob man auf dem richtigen Weg ist. Sind Passwörter, IPs oder Hostnamen im Sourcecode enthalten, muss die Frage mit Nein beantwortet werden. Entwicklungs- und Produktionsumgebung sollten möglichst eng beieinander liegen. Dies ist einerseits möglich, indem Dependencies bis auf Systemebene explizit definiert werden. Mit der Containertechnologie Docker werden etwa sämtliche System-Dependencies für das Applikationsartefakt im Dockerfile bestimmt. Je nach Technologie sind ähnliche Mechanismen für die Applikations-Dependencies im Bild: iStock Einsatz. Andererseits kommt im klassischen Virtualisierungsumfeld das Konfigurationsmanagement zum Einsatz. Die Systemprovisionierung wird dabei so weit automatisiert, dass man von «Infrastructure-as-Code» spricht und so verhindert, dass Systeme auf den unterschiedlichen Umgebungen auseinanderlaufen. 12 Faktoren setzen den Rahmen Letztlich ist die Automatisierung in der Softwareentwicklung der Schlüssel zum Erfolg: Sie dient als Dokumentation, unterstützt die Reproduzierbarkeit und Zuverlässigkeit und beschleunigt den Deploymentprozess massiv. Die Methodik der «Twelve Factor App» (www.12factor.net) dient als technologie-agnostische Grundlage und bringt ein gemeinsames Vokabular und Verständnis für Devs und Ops hinsichtlich dem Deployment von Applikationen in die Cloud mit sich. Docker und Containertechnologien – wie sie etwa bei der Schweizer Container-Plattform APPUiO als Basistechnologie im Einsatz sind – implementieren gewisse Faktoren von sich aus und helfen dabei, Applikationen cloudready zu entwickeln und zu betreiben. Grundsätzlich ist das Zwölf-Faktor-App-Manifest nicht nur auf Cloud-Apps anwendbar. Es gibt einen allgemeinen Rahmen vor, um Applikationen portierbarer, leichtgewichtiger und robuster zu implementieren und zu betreiben. 05 / 2017 www.netzwoche.ch © netzmedien ag

Focus Entwicklertrends 37 Der persönliche Kontakt ist für den Erfolg entscheidend Bei der Offshore-Entwicklung müssen sich Product Owner regelmässig mit den Teams vor Ort treffen. Denn der direkte Kontakt auf Augenhöhe erleichtert nicht nur den Know-how-Transfer. Er trägt auch wesentlich zur Identifikation mit dem Produkt und dem Hersteller bei und steigert die Arbeitsmotivation. Um es gleich vorwegzunehmen: Offshore-Entwicklung hat für einen Schweizer Softwarehersteller nichts mit der Verlagerung von Arbeitsplätzen nach Fernost zu tun. Es geht in erster Linie darum, genügend gute Softwareentwickler verpflichten zu können, um die Einführungszeit neuer Produkte zu verkürzen. Denn wir haben in der Schweiz mit dem Fachkräftemangel zu kämpfen. Da nützen uns Schlagzeilen über tausende neuer Arbeitsplätze, die Internetgiganten wie Google in der Schweiz schaffen wollen, wenig. Im Gegenteil heizt dies den «War for Talents» erst recht an. Man kann es den jungen Entwicklern auch nicht verübeln, wenn sie ein Jobangebot bei einem Schweizer Ableger aus dem Silicon Valley annehmen. Offshore-Entwicklung ist also nicht mit Arbeitsplatzabbau gleichzusetzen. Im Gegenteil hilft sie, Arbeitsplätze in der Schweiz zu sichern, weil Hersteller damit ihre Wettbewerbsfähigkeit erhalten. Für ein erfolgreiches Offshore-Projekt muss der Product Owner den Mitarbeitern in Fernost auf Augenhöhe begegnen. Beispiel Soreco: Basis wird in Vietnam gelegt Weil also gute Fachkräfte Mangelware sind und unser Schweizer Entwicklungsteam sehr gut ausgelastet ist, greift Soreco auf die Ressourcen eines grossen Entwicklungszentrums in Vietnam zurück. Dass das Unternehmen unter Schweizer Leitung steht, ist dabei sicher von Vorteil. Es erleichtert nicht nur die Zusammenarbeit, wenn es um die schnelle Bereitstellung personeller Ressourcen geht. Es hilft auch, die Bedeutung des Entwicklungsstandorts Vietnam für den Schweizer Markt bei den vietnamesischen Mitarbeitern zu unterstreichen und den Entscheid für eine Zusammenarbeit niederschwelliger zu gestalten. Aktuell arbeiten rund 15 Entwickler in zwei dedizierten Teams ausschliesslich an unseren neuen Produkten. Die Idee dabei ist, dass in vietnamesischen Entwicklungslabors die Basis neuer Produkte so weit gelegt wird, bis sie marktfähig sind. Danach übernimmt das Schweizer Team die weitere Ausgestaltung respektive Veredelung mit neuen Features. Auf Augenhöhe begegnen Jedem Team, das mit einem Produkt beschäftigt ist, wird in der Schweiz ein Product Owner zugeteilt. Dieser definiert in Absprache mit den Stakeholdern die Anforderungen, bricht sie in einzelne Storys herunter und plant die Sprintreihenfolge. Diese wird danach im Planungsmeeting mit dem Team besprochen und definitiv festgelegt. Der Product Owner ist es auch, der den Kontakt zum Scrum Master in Vietnam hält. Ein Sprint dauert in der Regel 14 Tage. Die Scrum-Methode kommt der vietnamesischen Mentalität zur Pflichterfüllung und Qualitätssicherung sehr entgegen: Das Team bekennt sich zu den Aufgaben und identifiziert sich mit dem Produkt und der Firma die dahintersteht. Entscheidend ist, die nötige Wertschätzung für die erbrachten Leistungen auch zu vermitteln. Dabei setzen wir auf den direkten, persönlichen Kontakt. Die Schweizer Product Owner arbeiten fünf- bis sechsmal jährlich für jeweils etwa zwei Wochen in Vietnam. So sind sie insgesamt rund drei Monate im Jahr vor Ort, nehmen an den täglichen Meetings teil und sind damit Teil des Teams. Arbeiten sie in der Schweiz, so schalten sie sich mindestens einmal die Woche per Skype zu. Der Planungsrhythmus wird auch beibehalten, wenn sich der Product Owner nicht in Vietnam aufhält. Kulturelle Wertschätzung Für ein erfolgreiches Offshore-Projekt muss der Product Owner den Mitarbeitern in Fernost auf Augenhöhe begegnen. Dies tut man auch ausserhalb der Arbeit, etwa indem man gemeinsam essen geht und auch vor frittierten Käfern, Meeresschnecken oder ganzen Schweinefüssen nicht zurückschreckt. Oder indem man gemeinsam ein Nickerchen macht, wenn über Mittag sämtliche Büros für den Mittagsschlaf abgedunkelt werden. DER AUTOR Christoph Kölbener Entwicklungsleiter beim Finanzsoftware-Hersteller Soreco www.netzwoche.ch © netzmedien ag 05 / 2017

Archiv