Vortrag von Stefan Macke auf der VillageCon in Vechta am 23.02.2018.
Das ist Stefan!
Stefan ist Softwareentwickler.
Und zwar in einem Unternehmen im Oldenburger Münsterland.
Stefan hat eine tolle Geschäftsidee! Er möchte damit im Internet Geld verdienen.
Und zwar viel Geld!
Welche Idee das ist, verrät er natürlich nicht! Aber darum geht es hier auch gar nicht.
Stefan hat nämlich ein Problem: Er weiß nicht, wie er seine Entwicklung hosten soll.
Soll er einen Rootserver mieten? Oder lieber eine VM bei Amazon EC2 oder Microsoft Azure? Angeblich muss das ja heutzutage alles in Docker-Containern laufen. Oder doch besser gleich ganz „serverless“?
Bei den ganzen Möglichkeiten fällt die Wahl sehr schwer!
Wie gut, dass es auf der VillageCon einen Vortrag zum Thema moderne IT-Infrastrukturen gibt, der die Vor- und Nachteile der einzelnen Technologien beleuchtet.
Deswegen nimmt er selbstverständlich an DER IT-Fachmesse in Vechta teil. Er hat sogar extra ein Hemd in der Farbe der Corporate Identity angezogen.
…uuuuund. Halt! Mehr wollen wir gar nicht sehen!
Zielgruppe: Entscheider, die nicht allzu tief in der Technik stecken und sich einen Überblick über die aktuellen Möglichkeiten verschaffen wollen.
Kommen wir lieber zum Thema!
Der Vortrag teilt sich in drei Bereiche auf.
Aber bevor wir anfangen: Herzlich Willkommen zu meinem Vortrag! Mein Name ist Stefan Macke.
Ich habe verschiedene Websites und ihr findet mich u.a. bei Twitter.
Ich betreibe inzwischen schon zwei verschiedene Podcasts zur Programmierung.
Ich komme gebürtig aus Vechta und arbeite auch hier.
Tagsüber bin ich Softwarearchitekt bei der ALTE OLDENBURGER Krankenversicherung AG.
Und bis in die späten Abendstunden unterrichte ich dann Programmierung und Software-Engineering an der PHWT.
Außerdem organisiere ich seit zwei Jahren den lokalen Softwareentwickler-Stammtisch und die dazugehörige Konferenz SEROM in Vechta.
Jetzt lasst uns aber loslegen mit dem Vortrag!
Wir beginnen mit möglichen Anwendungsfällen.
Obwohl es theoretisch auch möglich ist, ERP-Software in der Cloud zu betreiben, ist das heute nicht der Fokus.
Diese Anwendungen haben einen eher langsamen Entwicklungszyklus und erfordern keine kurze Time-to-Market.
Außerdem lassen sie sich meistens gar nicht auf Cloud-Infrastruktur betreiben, weil sie z.B. eine einzige, zentrale, konsistente Datenbank benötigen.
Am besten geeignet sind Webanwendungen, also z.B. Plattformen, Online-Shops, Backends für mobile Apps, Web-Apps.
Diese haben häufig Anforderungen wie Skalierbarkeit und 24/7-Betrieb, die von der Cloud gut abgedeckt werden.
Häufig sind diese Anwendungen in einzelne (Micro-)Services aufgeteilt, die gemeinsam das große Ganze ergeben.
Amazons Startseite lässt sich z.B. in mehrere kleine Dienste unterteilen, die unabhängig voneinander arbeiten.
Bei Ausfällen einzelner Komponenten können die anderen trotzdem weiterlaufen.
Aber auch das Internet der Dinge ist ein wichtiger Treiber der Cloud, da hier insb. ein hohes Datenvolumen verarbeitet werden muss und auch wieder die Skalierbarkeit eine wichtige Rolle spielt.
Schauen wir uns nun an, was „Cloud Computing“ nun eigentlich ist und welche Teile man unterscheiden kann.
Eine Anwendung kann in verschiedene Komponenten oder Schichten aufgeteilt werden, die zu ihrem Betrieb nötig sind.
Höhere Schichten greifen auf die Schicht darunter zu, die als Abstraktion vor der konkreten Ausgestaltung dient.
Hardware
Betriebssystem
Laufzeitumgebung
Anwendung
Funktionen/Services
Ein Beispiel für eine konkrete Anwendung könnte der Urlaubsantrag in einem Mitarbeiterportal sein.
Klassischerweise wurden Unternehmensanwendungen auf eigener Hardware betrieben.
Wenn sie im eigenen Unternehmen steht, spricht man auch von „on premise“.
Vorteile
Alles unter der eigenen Kontrolle
Kann komplett autark vor Ort betrieben werden
auch offline verwendbar
Nachteile
die Hardware muss selbst gewartet werden
schwierig/unmöglich zu skalieren
evtl. lange/teure Leerlaufzeiten
Beispiele
Eigener Server
Rootserver bei Hetzner usw.
Um die verfügbare Hardware besser ausnutzen zu können, wurden virtuelle Maschinen eingeführt.
VMs simulieren verschiedene Hardwareumgebungen, obwohl sie auf einer einzigen Hardware laufen.
Vorteile
Leichter zu skalieren (CPU/RAM kann einfach angepasst werden)
Bessere Ausnutzung der zugrundeliegenden Hardware
Freie Wahl der Betriebssysteme
Nachteile
Installation und Wartung der Betriebssysteme muss selbst durchgeführt werden
VMs sind sehr groß (mehrere Gigabyte)
Beispiele
Vmware, Xen, Citrix, Hyper-V
Um den Wartungsaufwand für den Endkunden zu reduzieren, kamen IaaS-Anbieter wie Amazon EC2 oder Microsoft Azure auf die Idee, komplette VMs inkl. Betriebssystemen anzubieten.
Vorteile
Sehr leicht zu skalieren
Wenig Wartungsaufwand
Kann komplett ohne eigene Hardware in der Cloud betrieben werden
Nachteile
Abhängigkeit vom Anbieter
Nicht offline nutzbar
Betriebssystem ist vorgegeben
Beispiele
Amazon Web Services, Microsoft Azure
In vielen Fällen liefert die eigene Konfiguration der Infrastruktur keinen Mehrwert für den Endkunden oder die Entwickler der Anwendung.
Wer einfach nur die Plattform zur Ausführung seiner Anwendung braucht, und sich nicht um die Technik darunter kümmern will, der kann sich direkt die nötige Plattform mieten.
Vorteile
Sehr einfach skalierbar
Keine Administration nötig
Fokus auf die eigentliche Anwendung möglich
Nachteile
Anwendung muss Architekturkonzept der Plattform unterstützen
Es können nur die angebotenen Infrastruktur-Dienste verwendet werden
Beispiele
Microsoft Azure, Amazon Elastic Beanstalk
Um die Konfiguration der Laufzeitumgebung und auch der verschiedenen Komponenten wie Datenbank, Messaging usw. zu vereinfachen, kann man Container-Dienste wie Docker nutzen.
Vorteile
Beschreibung der Laufzeitumgebung als ausführbare Datei (Infrastructure as Code)
Komplett automatisierbar
Sehr einfach skalierbar
Nachteile
Initial hoher Aufwand
Nicht für alle Anwendungen geeignet
Beispiele
Docker
Wer auch die Anwendung selbst nicht mehr entwickeln will, kann sich fertige Applikationen mieten.
Vorteile
Einfaches Abrechnungsmodell
Keinerlei Administration mehr nötig
Fokus auf die Fachlickeit
Nachteile
Kaum Möglichkeiten der Anpassung
Starke Bindung an den SaaS-Anbieter
Ggfs. Datenschutz-Probleme
Beispiele
Google Docs, Office 365, Gmail, Salesforce
Wer seine eigene Anwendung aus kleinen funktionalen Bausteinen erstellen möchte, die individuell skalierbar sind, ist mit einem FaaS-Anbieter gut bedient.
Vorteile
Teile der Anwendung sind individuell skalierbar
Neue Anwendungsfälle können schnell aus bestehenden Diensten zusammengebaut werden
Abrechnung nach konkreter Nutzung
Nachteile
Sehr starke Abhängigkeit vom FaaS-Anbieter
Evtl. komplizierte Architektur
Beispiele
Amazon Lambda, Azure Functions
Zum Abschluss ein paar Stichpunkte zur individuellen Auswahl der passenden Lösung.
Wie wichtig ist Kostentransparenz?
Muss evtl. auf eigene Mitarbeiter verzichtet werden?
Wie viel Leerlauf erzeugt die Anwendung?
Wie viel Last erzeugt die Anwendung?
Gibt es Lastspitzen, die abgefangen werden müssen?
Ist ein großes Kundenwachstum zu erwarten?
Soll vielleicht nur ein Testballon gestartet und danach alles wieder eingestampft werden?
Muss die Anwendung im 24/7-Betrieb laufen?
Wie hoch ist der finanzielle Verlust im Fall eines Ausfalls?
Gibt es harte Anforderungen bzgl. Antwortzeiten?
Werden personenbezogene Daten verarbeitet?
Müssen die Server in Deutschland stehen?
Wurde der eigene Datenschutzbeauftragte befragt?
Was passiert, wenn der Anbieter gehackt wird?
Was passiert, wenn wir selbst gehackt werden?
Wie wird Datensicherheit im Unternehmen behandelt?
Ist das nötige Know-How vorhanden?
Dürfen etwaige Kernkompetenzen aus der Hand gegeben werden?
Können wir uns von einem ausländischen Anbieter abhängig machen?
Wie schnell reagiert der Anbieter auf unsere Anfragen?
Was passiert, wenn der Anbieter den Dienst einstellt oder verändert?
Wird die verwendete Programmiersprache überhaupt (langfristig) angeboten?
Kommen wir zum Ende des Vortrags. Was hat Stefan heute gelernt?
Neue Anwendungen können heute völlig ohne eigene Infrastruktur gehostet werden.
Das ist gut für den Fachbereich und die Innovationsgeschwindigkeit des eigenen Unternehmens.
Testballons können ohne großen Invest gestartet werden.
Wie Werner Vogels, CTO von Amazon, sagte: „Kein Server ist einfacher zu managen als gar kein Server.“
Die konkreten Kosten sind bei vielen Anbietern allerdings schwierig im Voraus zu berechnen.
Ich selbst bin auch jeden Monat wieder gespannt, wie viel Amazon mir abbucht.
Das Cloud-Hostingmodell eignet sich nicht für jede Art von Anwendung, sondern eher für bestimmte Use-Cases.
Die Anwendungsfälle werden aber sicherlich durch das IoT noch zahlreicher.
Aktuell bindet man sich aber durch fehlende Migrationsmöglichkeiten sehr stark an den gewählten Anbieter.
Man sollte sich also nach “Serverless durch die Cloud” auch den Song “Hotel California” der Eagles in Erinnerung rufen: “You can check out any time you like, but you can never leave.”