Die Welt des Cloud-Computings ist für viele ein faszinierendes, aber oft auch verwirrendes Terrain. Von den grundlegenden Konzepten bis hin zu den komplexen Möglichkeiten bietet die Cloud eine Vielzahl von Lösungen für Unternehmen aller Größenordnungen. Doch was verbirgt sich eigentlich hinter dem Begriff "Cloud-Computing"? In diesem Artikel werden wir uns eingehend mit den Grundlagen, den Vorteilen sowie den verschiedenen Ansätzen und Herausforderungen des Cloud-Computings auseinandersetzen. Von der Definition bis zur praktischen Anwendung werden wir einen umfassenden Einblick in dieses zukunftsweisende Konzept geben und dabei helfen, die Möglichkeiten und Potenziale der Cloud zu verstehen.
Viele denken beim Wort Cloud erstmal an Produkte wie Dropbox, iCloud oder Google Photos. Das ist auch erstmal nicht falsch. Alle diese Produkte laufen in der Cloud und ermöglichen Nutzern so eine einfache Verwendung. Wenn wir über Cloud reden, meinen wir jedoch in der Regel Cloud-Computing – die Grundlage, um oben genannte Produkte in Cloud umzusetzen.
Anbieter wie Amazon Web Services oder Microsoft Azure bieten eine Umgebung für Cloud-Computing an. Durch Modelle wie Infrastructure as a Service (IaaS) können Unternehmen virtualisierte Hardware und andere Ressourcen in der Cloud kurz- aber auch langfristig mieten. Mit diesen Ressourcen können Unternehmen – wie in ihrem eigenen Rechenzentrum – Anwendungen betreiben und so ihren Kunden zur Verfügung stellen. Große Vorabinvestitionen in eigene Hardware sind daher nicht mehr notwendig.
Anders als im eigenen Rechenzentrum gehen die Cloud-Anbieter jedoch noch einen Schritt weiter und bieten mit Modellen wie Platform as a Service (PaaS) Funktionalitäten an, die weit über die Virtualisierung von Hardware hinausgehen. Durch fertige Bausteine wie etwa Datenbanken, aber auch auf die Cloud zugeschnittene Frameworks können sich Unternehmen deutlich mehr auf ihre Anwendung und somit auf die Mehrwerte für ihre Kunden konzentrieren. Der Aufwand im Bereich des IT-Betriebs aber auch der Entwicklung wird so enorm reduziert.
Mit Platform as a Service und Infrastructure as a Service können Unternehmen so ihre Anwendung als Service as Software (SaaS) bereitstellen – ähnlich eben zu Produkten wie Dropbox oder Google Photos. Es bedarf somit keiner eigenen Hardware, um die Anwendung betreiben zu können.
Grob gesagt lässt sich Cloud-Computing also in drei aufeinander aufbauende Bereiche einteilen. Auf niedrigster Ebene ist Infrastructure as a Service, das die einfache Verwendung von virtualisierter Hardware ermöglicht. Darauf aufbauend bietet Platform as a Service Komponenten, die die Verwendung von Datenbanken und anderen Infrastrukturbausteinen erheblich vereinfachen. Auf oberster Ebene bedient sich Software as a Service den darunterliegenden Ebenen, um so Anwendungen mit möglichst wenig Aufwand im Internet für Kunden bereitstellen zu können.
Ein paar Vorteile von Cloud-Computing wurden bereits genannt. Statt diese einfach aufzulisten, hat es Sinn zu gucken, welche Probleme dadurch eigentlich gelöst werden – am besten mit Blick auf typische Probleme, die Unternehmen bei der Entwicklung und dem Betrieb ihrer Anwendungen haben:
Wir haben zu viel oder zu wenig Hardware, aber nie so viel wie wirklich benötigt wird!
Virtuelle Maschinen können in der Cloud nahezu beliebig On Demand hoch- und runtergefahren werden. Die Ausstattung (z.B. RAM, CPU-Leistung) kann je nach Bedarf der Anwendung passgenau ausgewählt werden. Die Kosten entfallen bedarfsgerecht und werden mitunter sekundengenau Pay As You Go abgerechnet. So können kurzfristig Kapazitäten geschaffen werden, um etwa Lastspitzen oder das typische Saisongeschäft abzufangen. Ohne dabei Hardware anschaffen zu müssen, die einen langfristig bindet und größtenteils nicht benötigt wird – Don't Pay Idle!
Es ist unklar, wo genau Kosten entstehen und zu welchen Projekten sie gehören!
In der Cloud können Ressourcen deutlich einfacher dem Verursacher zugeordnet werden. Mit Cloud-Computing ist es einfacher, Ressourcen wie virtuelle Maschinen, aber auch Infrastrukturkomponenten wie Load-Balancer, Datenbanken und Message-Broker direkt der Anwendung zuzuordnen, die sie auch verwenden. Da auch der Betrieb der Anwendung deutlich mehr in Richtung des verantwortlichen Teams rückt, reduzieren sich sehr grob granulare Kostenstellen wie der IT-Betrieb. So lassen sich Personalkosten einfacher dem zugehörigen Projekt zuordnen. Kostenoptimierung kann dadurch meist einfacher als im eigenen Rechenzentrum erfolgen.
Es dauert zu lange, bis neue Features beim Kunden ankommen!
Langwierige und manuelle Release-Prozesse sowie hohe Komplexität im Betrieb der Anwendung führen oft dazu, dass neue Features oft nur nach langer Verzögerung beim Kunden ankommen. Deployments können in der Cloud deutlich einfacher gestaltet und vor allem automatisiert werden. Feature-Staus können durch frühzeitige Abnahme auf temporär eingerichteten Release-Umgebungen vermieden werden. Kluge Deployment-Strategien sorgen dafür, dass Releases ohne Angst, etwas kaputt zu machen, durchgeführt werden können. Auch die Entwicklung kann durch die Verwendung von Platform as a Service deutlich beschleunigt werden, da der Fokus auf Business Value statt auf technischen Details liegt.
Technologie X würde uns helfen, aber uns fehlt das Know-How im Betrieb!
Insbesondere neue Technologien, die für eine effizientere Entwicklung oder allgemein eine Verbesserung der Anwendung sorgen, benötigen im Betrieb eine Menge Wissen und Betreuung – eine große Herausforderung für den oft eh schon überlasteten IT-Betrieb. Häufig werden die begehrten Technologien in der Cloud als Managed Service angeboten, bei denen sich der Cloud-Anbieter um viele Aufgaben (Backups, Updates, Security etc.) rund um den Betrieb kümmert. So kann der Aufwand für den IT-Betrieb im Unternehmen deutlich verringert werden. Entwickler müssen nicht mehr vertröstet werden, dass eine bestimmte Technologie – trotz der Vorteile für die Entwicklung – nicht verwendet werden kann.
Unsere Systeme sind nicht gegen Cyberangriffe geschützt!
Managed Services in der Cloud erhalten automatisch zeitnah Updates und vermeiden so übliche Angriffsvektoren. Da Automatisierung ein großer Teil von Cloud-Computing ist, können kritische Sicherheitslücken in Abhängigkeiten schnell über alle Anwendungen hinweg gepatcht werden. Verschiedene Werkzeuge der Cloud-Anbieter helfen zudem bei der frühzeitigen Erkennung von Problemen oder vermeiden diese durch entsprechende Maßnahmen teils gänzlich.
Unsere Anwendung ist oft in wichtigen Momenten nicht verfügbar!
Im eigenen Rechenzentrum eine hohe Verfügbarkeit zu garantieren ist nicht trivial. Cloud-Anbieter stellen hochverfügbare Bausteine bereit, mit denen die Verfügbarkeit der eigenen Anwendung auf einfachem Wege erhöht werden kann. Durch automatisches Failover bleibt die Anwendung erreichbar, auch wenn Teile der Infrastruktur temporär ausfallen. Auf Basis von Health-Checks wird die Anwendung kontinuierlich überwacht und beim Fehlschlag werden fehlerbehaftete Instanzen ausgetauscht. Auch bei erhöhter Last werden kurzfristig zusätzliche Instanzen hochgefahren, um zu garantieren, dass der Kunde die Anwendung weiterhin in gewohnter Qualität verwenden kann. Die geographisch verteilten Rechenzentren der Cloud-Anbieter ermöglichen die Verfügbarkeit der Anwendung, auch wenn ein oder mehrere von diesen ausfallen.
Es gibt keinen Plan B, wenn wirklich mal etwas Schlimmes passiert!
Zu selten wird darüber nachgedacht, wie damit umgegangen wird, wenn mal etwas komplett schief läuft. Insbesondere der Verlust oder die Beschädigung von Daten kann großen Schaden für ein Unternehmen bedeuten. Viele Cloud-Services ermöglichen die automatische Erstellung von Backups und ermöglichen zum Teil sogar mit Point-In-Time Recovery Daten zu nahezu beliebigen Zeitpunkten in der Vergangenheit wiederherzustellen. Gleichzeitig können Backups in den verschiedenen Rechenzentren des Cloud-Anbieters repliziert werden, um so für noch mehr Sicherheit zu sorgen.
Kunden beschweren sich, dass unsere Anwendung zu langsam ist!
Cloud-Computing ermöglicht es auf einfachem Wege, Anwendungen horizontal zu skalieren, um so eine nahezu beliebige Anzahl von Kunden gleichzeitig bedienen zu können. Die Skalierung erfolgt bedarfsgerecht auf Basis der gegenwärtigen Last. Schnelle Netzwerkverbindungen sowie geographisch verteilte Systeme garantieren zudem möglichst geringe Zugriffszeiten. Im eigenen Rechenzentrum ist dies oft nur begrenzt umsetzbar. Zusätzlich bieten zahlreiche Cloud-Anbieter die Möglichkeit, Anwendungen effizienter zu machen, ohne dass signifikante Änderungen am Code erfolgen müssen (z.B. via Caching).
Die Trennung zwischen IT-Betrieb und -Entwicklung führt zu Reibungsverlusten!
Auch wenn DevOps in vielen Unternehmen Einzug erhalten hat, gibt es immer wieder Reibungspunkte. Da Automatisierung in der Cloud im Vordergrund steht und dank Infrastructure as a Service sowie vor allem Platform as a Service Infrastruktur und Anwendung deutlich einfacher zu verwalten sind, rückt der Betrieb deutlich näher an das Entwicklungsteam. Durch Ansätze wie Infrastructure as Code, bei dem die notwendige Infrastruktur deklarativ in Form von Code beschrieben wird, können Entwickler deutlich mehr Einfluss auf den Betrieb nehmen. So kann sich die Betriebsabteilung häufig besser auf Themen konzentrieren, die außerhalb der Projekte gelagert sind.
Und viele weitere Probleme…
Das waren natürlich nur einige der typischen Probleme, bei denen Cloud helfen kann. Pauschal zu sagen, Cloud-Computing ist die Lösung aller Probleme ist sicher vermessen. Wie bei jeder Entscheidung im IT-Bereich gilt es die Vor- und Nachteile zu analysieren und individuell zu entscheiden, ob sich der Gang in die Cloud für ein Unternehmen lohnt. Genau wie der Betrieb im eigenen Rechenzentrum Herausforderungen beinhaltet, bringt auch die Cloud neue Aufgaben mit sich, die es zu meistern gilt.
Buche hier einen Termin mit Renke, um gemeinsam zu klären, welche Cloud-Lösungen am besten zu deinen Geschäftszielen passen. Von der Auswahl des richtigen Anbieters bis zur Implementierungsstrategie.
Um Cloud-Computing nutzen zu können, gilt es zunächst, erstmal den passenden Anbieter zu finden. Im Bereich der Public-Cloud gibt es mit Amazon Web Services (AWS), Microsoft Azure sowie Google Cloud Platform die drei großen Cloud-Anbieter. Diese bieten den wohl größten Umfang an Funktionalität im Bereich des Cloud-Computing an. Durch eine Vielzahl von Cloud-Services decken sie quasi jeden wichtigen Bereich ab – von virtuellen Maschinen bis hin zu spezialisierten Services im Bereich des Machine Learning. Die großen Drei sind selten eine falsche Wahl, wenn Cloud-Computing zum Einsatz kommen soll. Da sie alle einen ähnlichen Umfang an Funktionen und Service bieten, lässt sich auch nicht pauschal sagen, welcher Anbieter besser ist. Je nach Anforderungen, die ein Unternehmen an Cloud-Computing stellt, bietet sich der eine mehr als der andere an.
Neben den großen gibt es zahlreiche kleinere Anbieter. Für viele Unternehmen in Deutschland spielen vor allem auch europäische und deutsche Cloud-Anbieter eine Rolle, da diese mitunter Anforderungen im Bereich Datenschutz und Compliance besser bedienen können. Der Funktionsumfang kleinerer Anbieter ist indessen deutlich reduziert im Vergleich zu den großen Drei. Bekannte Namen im Bereich europäischer und deutscher Anbieter sind unter anderem IONOS, Hetzner Cloud, Exoscale, Scaleway oder Open Telekom Cloud (OTC).
Wenn ein Unternehmen auf die Vorteile der Cloud nicht verzichten will, aber möglicherweise sinnvolle Gründe hat, die Public-Cloud zu meiden, kann inzwischen auch vergleichsweise einfach eine Private-Cloud im eigenen Rechenzentrum (auch On Premises genannt) aufgebaut werden. Auch wenn eine Private-Cloud nicht die gesamte Funktionalität der Cloud-Anbieter bieten kann, können Technologien wie OpenStack aber auch Kubernetes verwendet werden, um eine vergleichbare Umgebung für Cloud-Computing zu schaffen. Insbesondere wenn kritische Teile der Anwendungslandschaft nur im eigenen Rechenzentrum betrieben werden können, kann Private-Cloud ein sinnvoller Ansatz sein. Auch die Abhängigkeit von Dritten kann so reduziert und der sogenannte Vendor Lock-In vermieden werden.
Weitere Möglichkeiten bieten auch Ansätze wie Hybrid-Cloud, bei dem Teile der Anwendungslandschaft sowohl on-premises als auch in der Public-Cloud betrieben werden. So können unternehmenskritische Komponenten weiterhin im eigenen Rechenzentrum verbleiben, weniger kritische Teile jedoch von den Vorzügen der Cloud profitieren. Auch wenn die Integration der beiden Welten technisch nicht immer trivial ist, kann ein Hybrid-Cloud-Ansatz Mehrwerte liefern.
Wenn ein Unternehmen nicht auf einen einzelnen Anbieter setzen will, können mit dem Ansatz der Multi-Cloud auch Vorteile verschiedener Anbieter kombiniert werden, um so etwa die Gefahr eines Vendor Lock-Ins zu reduzieren oder die Ausfallsicherheit zu erhöhen. Aufgrund meist höherer Kosten sowie technischer Aufwands kommt dieser Ansatz eher selten zum Einsatz – es müssen gute Gründe dafür sprechen.
Neue Projekte können natürlich direkt auf den Betrieb in der Cloud ausgelegt werden. Bei Bestandsanwendungen hingegen muss zunächst eine Cloud-Migration erfolgen. Gerade bei größeren Anwendungslandschaften wird daher eine passende Migrationsstrategie benötigt, die bestimmt, wie die einzelnen Anwendungen in die Cloud migriert werden. Rund um das Thema Cloud-Migration hat sich mit dem 6Rs (inzwischen auch öfter mal 7Rs) eine Art Leitfaden für die verschiedenen Migrationsstrategien etabliert.
Unter den 6Rs werden folgende Migrationsvorgehen verstanden
Rehost (Lift & Shift): Die Anwendung wird nahezu ohne Änderungen in die Cloud gebracht. Die Verwendung begrenzt sich auf Services im Bereich Infrastruktur as a Service (IaaS)
Replatform (Lift, Tinker & Shift): Die Anwendung wird ohne größere Änderungen in die Cloud gebracht. Neben IaaS kommen jedoch auch vereinzelt Services aus dem Bereich Platform as a Service (PaaS) zum Einsatz; insbesondere, wenn der Aufwand der Anpassung gering, die gewonnenen Mehrwerte jedoch vergleichsweise groß sind.
Refactor: Die Anwendung unterzieht sich einer größeren Änderung mit dem Ziel, die Vorzüge der Cloud möglichst voll ausschöpfen zu können. Oft bedeutet dies auch Anpassungen an die Anwendungsarchitektur. Wenn möglich, wird auf Services aus dem Bereich PaaS gesetzt. Die Anwendung macht so die ersten Schritte Richtung Cloud Native.
Retire: Die Anwendung wird abgeschaltet, da sie nicht mehr benötigt wird und eine Migration in die Cloud keinen Zweck erfüllt und nur Kosten verursacht.
Retain: Die Anwendung verbleibt fürs erste im eigenen Rechenzentrum, da sich eine Migration noch nicht lohnt oder aktuell nicht möglich ist.
Repurchase: Die Anwendung wird durch ein anderes Produkt in der Cloud abgelöst. So könnte etwa der eigens entwickelte und in die Jahre gekommene Issue-Tracker durch eine Software as a Service-Lösung wie Jira ersetzt werden.
Für jeden Teil der Anwendungslandschaft wird eine passender Migrationsansatz gewählt, um so eine ganzheitliche Cloud-Strategie zu entwickeln. Besonders spannend sind die Vorgehen Replatform und Rehost, da hier wirklich die Mehrwerte der Cloud zum Einsatz kommen können; dementsprechend stellen diese bei einer Cloud-Migration auch meist die größten Herausforderungen dar. Nach einer gelungenen Migration in die Cloud, ist die Entwicklung natürlich noch nicht zwangsläufig beendet. Auch Anwendungen, die lediglich einem Rehost unterzogen wurden, können im Nachgang Schritt für Schritt angepasst werden, um von den Vorteilen von Services aus dem Bereich Plattform as a Service zu profitieren.
In unserem Cloud-Strategie-Workshop stellen wir die individuellen Bedürfnisse in den Mittelpunkt. Wir erarbeiten zusammen Ziele, Anforderungen und Potentiale einer modernen Cloud Strategie individuell für das Unternehmen. Gemeinsam erarbeiten wir Lösungen, die einen reibungslosen sowie skalierbaren Betrieb der IT- und Geschäftsprozesse sicherstellen und die Zeit für Produkteinführungen nachhaltig optimieren.
Nur weil die Anwendung in der Cloud ist, ist diese noch lange nicht Cloud-Native – selbst nach größeren Anpassungen. Erst mit Erfahrung und Zeit kann die Anwendung Schritt für Schritt zur Cloud-Native-Anwendung weiterentwickelt werden.
Das bedeutet oft die Verwendung von Microservices, egal ob als Container in einem Kubernetes-Cluster oder als Event-getriebene Serverless-Funktionen. So können einzelne Teile der Anwendung unabhängig voneinander entwickelt, bereitgestellt und vor allem skaliert werden. Dies sorgt für eine effizientere Entwicklung und kann den Aufwand im Betrieb deutlich reduzieren. Unterstützend dabei wirken die zahlreichen Services im Bereich Platform as a Service.
Insbesondere um den Betrieb zu erleichtern, sollte ein besondere Aufmerksamkeit auf Aspekten wie Observability und Resilience gelegt werden. Gerade bei verteilten Anwendungen ist es unabdingbar zu verstehen, wie sich die einzelnen Microservices, aber auch die gesamte Anwendung, zu jedem Zeitpunkt verhält. Idealerweise kann so auf mögliche Probleme bereits frühzeitig reagiert werden. Wenn dann unweigerlich doch Probleme auftreten, ist es wichtig, dass die Anwendung auch trotz widriger Umstände immer noch für die Kunden nutzbar ist.
Neben den sehr technischen geprägten Themen sind jedoch auch Prinzipien wie DevOps und 12-Factor-App ein wichtiger Bestandteil von Cloud-Native. Sicher lässt sich DevOps auch im eigenen Rechenzentrum umsetzen, aber gerade in der Cloud können sich Betrieb und Entwicklung deutlich einfacher nähern und somit die Umsetzung selbstorganisierter Teams ermöglichen.
Cloud ist die Zukunft. Der Weg dorthin wird jedoch durch eine Vielzahl von Herausforderungen begleitet. Damit die Konkurrenz nicht davon läuft, gilt es sich diesen Herausforderungen zu stellen, auch wenn diese zu Anfang unüberwindbar erscheinen. Gute Nachricht: Wir unterstützen sie gerne dabei und machen nicht nur ihre Anwendung fit für die Cloud, sondern auch ihr gesamtes Unternehmen!
Viele denken beim Wort Cloud erstmal an Produkte wie Dropbox, iCloud oder Google Photos. Das ist auch erstmal nicht falsch. Alle diese Produkte laufen in der Cloud und ermöglichen Nutzern so eine einfache Verwendung. Wenn wir über Cloud reden, meinen wir jedoch in der Regel Cloud-Computing – die Grundlage, um oben genannte Produkte in Cloud umzusetzen.
Anbieter wie Amazon Web Services oder Microsoft Azure bieten eine Umgebung für Cloud-Computing an. Durch Modelle wie Infrastructure as a Service (IaaS) können Unternehmen virtualisierte Hardware und andere Ressourcen in der Cloud kurz- aber auch langfristig mieten. Mit diesen Ressourcen können Unternehmen – wie in ihrem eigenen Rechenzentrum – Anwendungen betreiben und so ihren Kunden zur Verfügung stellen. Große Vorabinvestitionen in eigene Hardware sind daher nicht mehr notwendig.
Anders als im eigenen Rechenzentrum gehen die Cloud-Anbieter jedoch noch einen Schritt weiter und bieten mit Modellen wie Platform as a Service (PaaS) Funktionalitäten an, die weit über die Virtualisierung von Hardware hinausgehen. Durch fertige Bausteine wie etwa Datenbanken, aber auch auf die Cloud zugeschnittene Frameworks können sich Unternehmen deutlich mehr auf ihre Anwendung und somit auf die Mehrwerte für ihre Kunden konzentrieren. Der Aufwand im Bereich des IT-Betriebs aber auch der Entwicklung wird so enorm reduziert.
Mit Platform as a Service und Infrastructure as a Service können Unternehmen so ihre Anwendung als Service as Software (SaaS) bereitstellen – ähnlich eben zu Produkten wie Dropbox oder Google Photos. Es bedarf somit keiner eigenen Hardware, um die Anwendung betreiben zu können.
Grob gesagt lässt sich Cloud-Computing also in drei aufeinander aufbauende Bereiche einteilen. Auf niedrigster Ebene ist Infrastructure as a Service, das die einfache Verwendung von virtualisierter Hardware ermöglicht. Darauf aufbauend bietet Platform as a Service Komponenten, die die Verwendung von Datenbanken und anderen Infrastrukturbausteinen erheblich vereinfachen. Auf oberster Ebene bedient sich Software as a Service den darunterliegenden Ebenen, um so Anwendungen mit möglichst wenig Aufwand im Internet für Kunden bereitstellen zu können.
Ein paar Vorteile von Cloud-Computing wurden bereits genannt. Statt diese einfach aufzulisten, hat es Sinn zu gucken, welche Probleme dadurch eigentlich gelöst werden – am besten mit Blick auf typische Probleme, die Unternehmen bei der Entwicklung und dem Betrieb ihrer Anwendungen haben:
Wir haben zu viel oder zu wenig Hardware, aber nie so viel wie wirklich benötigt wird!
Virtuelle Maschinen können in der Cloud nahezu beliebig On Demand hoch- und runtergefahren werden. Die Ausstattung (z.B. RAM, CPU-Leistung) kann je nach Bedarf der Anwendung passgenau ausgewählt werden. Die Kosten entfallen bedarfsgerecht und werden mitunter sekundengenau Pay As You Go abgerechnet. So können kurzfristig Kapazitäten geschaffen werden, um etwa Lastspitzen oder das typische Saisongeschäft abzufangen. Ohne dabei Hardware anschaffen zu müssen, die einen langfristig bindet und größtenteils nicht benötigt wird – Don't Pay Idle!
Es ist unklar, wo genau Kosten entstehen und zu welchen Projekten sie gehören!
In der Cloud können Ressourcen deutlich einfacher dem Verursacher zugeordnet werden. Mit Cloud-Computing ist es einfacher, Ressourcen wie virtuelle Maschinen, aber auch Infrastrukturkomponenten wie Load-Balancer, Datenbanken und Message-Broker direkt der Anwendung zuzuordnen, die sie auch verwenden. Da auch der Betrieb der Anwendung deutlich mehr in Richtung des verantwortlichen Teams rückt, reduzieren sich sehr grob granulare Kostenstellen wie der IT-Betrieb. So lassen sich Personalkosten einfacher dem zugehörigen Projekt zuordnen. Kostenoptimierung kann dadurch meist einfacher als im eigenen Rechenzentrum erfolgen.
Es dauert zu lange, bis neue Features beim Kunden ankommen!
Langwierige und manuelle Release-Prozesse sowie hohe Komplexität im Betrieb der Anwendung führen oft dazu, dass neue Features oft nur nach langer Verzögerung beim Kunden ankommen. Deployments können in der Cloud deutlich einfacher gestaltet und vor allem automatisiert werden. Feature-Staus können durch frühzeitige Abnahme auf temporär eingerichteten Release-Umgebungen vermieden werden. Kluge Deployment-Strategien sorgen dafür, dass Releases ohne Angst, etwas kaputt zu machen, durchgeführt werden können. Auch die Entwicklung kann durch die Verwendung von Platform as a Service deutlich beschleunigt werden, da der Fokus auf Business Value statt auf technischen Details liegt.
Technologie X würde uns helfen, aber uns fehlt das Know-How im Betrieb!
Insbesondere neue Technologien, die für eine effizientere Entwicklung oder allgemein eine Verbesserung der Anwendung sorgen, benötigen im Betrieb eine Menge Wissen und Betreuung – eine große Herausforderung für den oft eh schon überlasteten IT-Betrieb. Häufig werden die begehrten Technologien in der Cloud als Managed Service angeboten, bei denen sich der Cloud-Anbieter um viele Aufgaben (Backups, Updates, Security etc.) rund um den Betrieb kümmert. So kann der Aufwand für den IT-Betrieb im Unternehmen deutlich verringert werden. Entwickler müssen nicht mehr vertröstet werden, dass eine bestimmte Technologie – trotz der Vorteile für die Entwicklung – nicht verwendet werden kann.
Unsere Systeme sind nicht gegen Cyberangriffe geschützt!
Managed Services in der Cloud erhalten automatisch zeitnah Updates und vermeiden so übliche Angriffsvektoren. Da Automatisierung ein großer Teil von Cloud-Computing ist, können kritische Sicherheitslücken in Abhängigkeiten schnell über alle Anwendungen hinweg gepatcht werden. Verschiedene Werkzeuge der Cloud-Anbieter helfen zudem bei der frühzeitigen Erkennung von Problemen oder vermeiden diese durch entsprechende Maßnahmen teils gänzlich.
Unsere Anwendung ist oft in wichtigen Momenten nicht verfügbar!
Im eigenen Rechenzentrum eine hohe Verfügbarkeit zu garantieren ist nicht trivial. Cloud-Anbieter stellen hochverfügbare Bausteine bereit, mit denen die Verfügbarkeit der eigenen Anwendung auf einfachem Wege erhöht werden kann. Durch automatisches Failover bleibt die Anwendung erreichbar, auch wenn Teile der Infrastruktur temporär ausfallen. Auf Basis von Health-Checks wird die Anwendung kontinuierlich überwacht und beim Fehlschlag werden fehlerbehaftete Instanzen ausgetauscht. Auch bei erhöhter Last werden kurzfristig zusätzliche Instanzen hochgefahren, um zu garantieren, dass der Kunde die Anwendung weiterhin in gewohnter Qualität verwenden kann. Die geographisch verteilten Rechenzentren der Cloud-Anbieter ermöglichen die Verfügbarkeit der Anwendung, auch wenn ein oder mehrere von diesen ausfallen.
Es gibt keinen Plan B, wenn wirklich mal etwas Schlimmes passiert!
Zu selten wird darüber nachgedacht, wie damit umgegangen wird, wenn mal etwas komplett schief läuft. Insbesondere der Verlust oder die Beschädigung von Daten kann großen Schaden für ein Unternehmen bedeuten. Viele Cloud-Services ermöglichen die automatische Erstellung von Backups und ermöglichen zum Teil sogar mit Point-In-Time Recovery Daten zu nahezu beliebigen Zeitpunkten in der Vergangenheit wiederherzustellen. Gleichzeitig können Backups in den verschiedenen Rechenzentren des Cloud-Anbieters repliziert werden, um so für noch mehr Sicherheit zu sorgen.
Kunden beschweren sich, dass unsere Anwendung zu langsam ist!
Cloud-Computing ermöglicht es auf einfachem Wege, Anwendungen horizontal zu skalieren, um so eine nahezu beliebige Anzahl von Kunden gleichzeitig bedienen zu können. Die Skalierung erfolgt bedarfsgerecht auf Basis der gegenwärtigen Last. Schnelle Netzwerkverbindungen sowie geographisch verteilte Systeme garantieren zudem möglichst geringe Zugriffszeiten. Im eigenen Rechenzentrum ist dies oft nur begrenzt umsetzbar. Zusätzlich bieten zahlreiche Cloud-Anbieter die Möglichkeit, Anwendungen effizienter zu machen, ohne dass signifikante Änderungen am Code erfolgen müssen (z.B. via Caching).
Die Trennung zwischen IT-Betrieb und -Entwicklung führt zu Reibungsverlusten!
Auch wenn DevOps in vielen Unternehmen Einzug erhalten hat, gibt es immer wieder Reibungspunkte. Da Automatisierung in der Cloud im Vordergrund steht und dank Infrastructure as a Service sowie vor allem Platform as a Service Infrastruktur und Anwendung deutlich einfacher zu verwalten sind, rückt der Betrieb deutlich näher an das Entwicklungsteam. Durch Ansätze wie Infrastructure as Code, bei dem die notwendige Infrastruktur deklarativ in Form von Code beschrieben wird, können Entwickler deutlich mehr Einfluss auf den Betrieb nehmen. So kann sich die Betriebsabteilung häufig besser auf Themen konzentrieren, die außerhalb der Projekte gelagert sind.
Und viele weitere Probleme…
Das waren natürlich nur einige der typischen Probleme, bei denen Cloud helfen kann. Pauschal zu sagen, Cloud-Computing ist die Lösung aller Probleme ist sicher vermessen. Wie bei jeder Entscheidung im IT-Bereich gilt es die Vor- und Nachteile zu analysieren und individuell zu entscheiden, ob sich der Gang in die Cloud für ein Unternehmen lohnt. Genau wie der Betrieb im eigenen Rechenzentrum Herausforderungen beinhaltet, bringt auch die Cloud neue Aufgaben mit sich, die es zu meistern gilt.
Buche hier einen Termin mit Renke, um gemeinsam zu klären, welche Cloud-Lösungen am besten zu deinen Geschäftszielen passen. Von der Auswahl des richtigen Anbieters bis zur Implementierungsstrategie.
Um Cloud-Computing nutzen zu können, gilt es zunächst, erstmal den passenden Anbieter zu finden. Im Bereich der Public-Cloud gibt es mit Amazon Web Services (AWS), Microsoft Azure sowie Google Cloud Platform die drei großen Cloud-Anbieter. Diese bieten den wohl größten Umfang an Funktionalität im Bereich des Cloud-Computing an. Durch eine Vielzahl von Cloud-Services decken sie quasi jeden wichtigen Bereich ab – von virtuellen Maschinen bis hin zu spezialisierten Services im Bereich des Machine Learning. Die großen Drei sind selten eine falsche Wahl, wenn Cloud-Computing zum Einsatz kommen soll. Da sie alle einen ähnlichen Umfang an Funktionen und Service bieten, lässt sich auch nicht pauschal sagen, welcher Anbieter besser ist. Je nach Anforderungen, die ein Unternehmen an Cloud-Computing stellt, bietet sich der eine mehr als der andere an.
Neben den großen gibt es zahlreiche kleinere Anbieter. Für viele Unternehmen in Deutschland spielen vor allem auch europäische und deutsche Cloud-Anbieter eine Rolle, da diese mitunter Anforderungen im Bereich Datenschutz und Compliance besser bedienen können. Der Funktionsumfang kleinerer Anbieter ist indessen deutlich reduziert im Vergleich zu den großen Drei. Bekannte Namen im Bereich europäischer und deutscher Anbieter sind unter anderem IONOS, Hetzner Cloud, Exoscale, Scaleway oder Open Telekom Cloud (OTC).
Wenn ein Unternehmen auf die Vorteile der Cloud nicht verzichten will, aber möglicherweise sinnvolle Gründe hat, die Public-Cloud zu meiden, kann inzwischen auch vergleichsweise einfach eine Private-Cloud im eigenen Rechenzentrum (auch On Premises genannt) aufgebaut werden. Auch wenn eine Private-Cloud nicht die gesamte Funktionalität der Cloud-Anbieter bieten kann, können Technologien wie OpenStack aber auch Kubernetes verwendet werden, um eine vergleichbare Umgebung für Cloud-Computing zu schaffen. Insbesondere wenn kritische Teile der Anwendungslandschaft nur im eigenen Rechenzentrum betrieben werden können, kann Private-Cloud ein sinnvoller Ansatz sein. Auch die Abhängigkeit von Dritten kann so reduziert und der sogenannte Vendor Lock-In vermieden werden.
Weitere Möglichkeiten bieten auch Ansätze wie Hybrid-Cloud, bei dem Teile der Anwendungslandschaft sowohl on-premises als auch in der Public-Cloud betrieben werden. So können unternehmenskritische Komponenten weiterhin im eigenen Rechenzentrum verbleiben, weniger kritische Teile jedoch von den Vorzügen der Cloud profitieren. Auch wenn die Integration der beiden Welten technisch nicht immer trivial ist, kann ein Hybrid-Cloud-Ansatz Mehrwerte liefern.
Wenn ein Unternehmen nicht auf einen einzelnen Anbieter setzen will, können mit dem Ansatz der Multi-Cloud auch Vorteile verschiedener Anbieter kombiniert werden, um so etwa die Gefahr eines Vendor Lock-Ins zu reduzieren oder die Ausfallsicherheit zu erhöhen. Aufgrund meist höherer Kosten sowie technischer Aufwands kommt dieser Ansatz eher selten zum Einsatz – es müssen gute Gründe dafür sprechen.
Neue Projekte können natürlich direkt auf den Betrieb in der Cloud ausgelegt werden. Bei Bestandsanwendungen hingegen muss zunächst eine Cloud-Migration erfolgen. Gerade bei größeren Anwendungslandschaften wird daher eine passende Migrationsstrategie benötigt, die bestimmt, wie die einzelnen Anwendungen in die Cloud migriert werden. Rund um das Thema Cloud-Migration hat sich mit dem 6Rs (inzwischen auch öfter mal 7Rs) eine Art Leitfaden für die verschiedenen Migrationsstrategien etabliert.
Unter den 6Rs werden folgende Migrationsvorgehen verstanden
Rehost (Lift & Shift): Die Anwendung wird nahezu ohne Änderungen in die Cloud gebracht. Die Verwendung begrenzt sich auf Services im Bereich Infrastruktur as a Service (IaaS)
Replatform (Lift, Tinker & Shift): Die Anwendung wird ohne größere Änderungen in die Cloud gebracht. Neben IaaS kommen jedoch auch vereinzelt Services aus dem Bereich Platform as a Service (PaaS) zum Einsatz; insbesondere, wenn der Aufwand der Anpassung gering, die gewonnenen Mehrwerte jedoch vergleichsweise groß sind.
Refactor: Die Anwendung unterzieht sich einer größeren Änderung mit dem Ziel, die Vorzüge der Cloud möglichst voll ausschöpfen zu können. Oft bedeutet dies auch Anpassungen an die Anwendungsarchitektur. Wenn möglich, wird auf Services aus dem Bereich PaaS gesetzt. Die Anwendung macht so die ersten Schritte Richtung Cloud Native.
Retire: Die Anwendung wird abgeschaltet, da sie nicht mehr benötigt wird und eine Migration in die Cloud keinen Zweck erfüllt und nur Kosten verursacht.
Retain: Die Anwendung verbleibt fürs erste im eigenen Rechenzentrum, da sich eine Migration noch nicht lohnt oder aktuell nicht möglich ist.
Repurchase: Die Anwendung wird durch ein anderes Produkt in der Cloud abgelöst. So könnte etwa der eigens entwickelte und in die Jahre gekommene Issue-Tracker durch eine Software as a Service-Lösung wie Jira ersetzt werden.
Für jeden Teil der Anwendungslandschaft wird eine passender Migrationsansatz gewählt, um so eine ganzheitliche Cloud-Strategie zu entwickeln. Besonders spannend sind die Vorgehen Replatform und Rehost, da hier wirklich die Mehrwerte der Cloud zum Einsatz kommen können; dementsprechend stellen diese bei einer Cloud-Migration auch meist die größten Herausforderungen dar. Nach einer gelungenen Migration in die Cloud, ist die Entwicklung natürlich noch nicht zwangsläufig beendet. Auch Anwendungen, die lediglich einem Rehost unterzogen wurden, können im Nachgang Schritt für Schritt angepasst werden, um von den Vorteilen von Services aus dem Bereich Plattform as a Service zu profitieren.
In unserem Cloud-Strategie-Workshop stellen wir die individuellen Bedürfnisse in den Mittelpunkt. Wir erarbeiten zusammen Ziele, Anforderungen und Potentiale einer modernen Cloud Strategie individuell für das Unternehmen. Gemeinsam erarbeiten wir Lösungen, die einen reibungslosen sowie skalierbaren Betrieb der IT- und Geschäftsprozesse sicherstellen und die Zeit für Produkteinführungen nachhaltig optimieren.
Nur weil die Anwendung in der Cloud ist, ist diese noch lange nicht Cloud-Native – selbst nach größeren Anpassungen. Erst mit Erfahrung und Zeit kann die Anwendung Schritt für Schritt zur Cloud-Native-Anwendung weiterentwickelt werden.
Das bedeutet oft die Verwendung von Microservices, egal ob als Container in einem Kubernetes-Cluster oder als Event-getriebene Serverless-Funktionen. So können einzelne Teile der Anwendung unabhängig voneinander entwickelt, bereitgestellt und vor allem skaliert werden. Dies sorgt für eine effizientere Entwicklung und kann den Aufwand im Betrieb deutlich reduzieren. Unterstützend dabei wirken die zahlreichen Services im Bereich Platform as a Service.
Insbesondere um den Betrieb zu erleichtern, sollte ein besondere Aufmerksamkeit auf Aspekten wie Observability und Resilience gelegt werden. Gerade bei verteilten Anwendungen ist es unabdingbar zu verstehen, wie sich die einzelnen Microservices, aber auch die gesamte Anwendung, zu jedem Zeitpunkt verhält. Idealerweise kann so auf mögliche Probleme bereits frühzeitig reagiert werden. Wenn dann unweigerlich doch Probleme auftreten, ist es wichtig, dass die Anwendung auch trotz widriger Umstände immer noch für die Kunden nutzbar ist.
Neben den sehr technischen geprägten Themen sind jedoch auch Prinzipien wie DevOps und 12-Factor-App ein wichtiger Bestandteil von Cloud-Native. Sicher lässt sich DevOps auch im eigenen Rechenzentrum umsetzen, aber gerade in der Cloud können sich Betrieb und Entwicklung deutlich einfacher nähern und somit die Umsetzung selbstorganisierter Teams ermöglichen.
Cloud ist die Zukunft. Der Weg dorthin wird jedoch durch eine Vielzahl von Herausforderungen begleitet. Damit die Konkurrenz nicht davon läuft, gilt es sich diesen Herausforderungen zu stellen, auch wenn diese zu Anfang unüberwindbar erscheinen. Gute Nachricht: Wir unterstützen sie gerne dabei und machen nicht nur ihre Anwendung fit für die Cloud, sondern auch ihr gesamtes Unternehmen!