Verschieben Sie Ihre Anwendung in die Cloud? Das müssen Sie wissen

0
183
Shutterstock/phloxii

Jeder verschiebt seine Anwendungen heutzutage in die Cloud. Ein Neuanfang ist einfach, aber was ist, wenn Sie über eine vorhandene Infrastruktur verfügen, die migriert werden muss? Die Neuerstellung Ihres Netzwerks in der Cloud bietet Ihnen die Möglichkeit, Ihre Architektur zu modernisieren und die vielen Vorteile von Cloud-Anbietern wie AWS zu nutzen.

Was die Cloud ausmacht So nützlich?

In seiner einfachsten Form ist die “Cloud” ist nur ein Infrastructure-as-a-Service-Anbieter, der es Ihnen ermöglicht, Hardware für die Ausführung Ihrer Anwendungen zu mieten. Viele Unternehmen betreiben ihre Netzwerke von ihren eigenen lokalen Servern. Wenn Sie sie von einem Drittanbieter mieten, erhalten Sie mehr Flexibilität und die Möglichkeit, sie nach Bedarf zu skalieren.

Moderne Cloud-Anbieter wie Amazon Web Services (AWS), Google Cloud Platform, Microsoft Azure und Digital Ocean (DO) bieten weit mehr als nur Server gegen Gebühr an. Sie haben es sich zur Aufgabe gemacht, die Effizienz ihres Betriebs zu verbessern und Entwicklern benutzerfreundliche Tools zur Verfügung zu stellen, die das Erstellen von Anwendungen erheblich vereinfachen.

Der Betrieb Ihrer Server in der Cloud kann beispielsweise < strong>sparen Sie Geld. Während dedizierte Server natürlich Core-for-Core teurer sein werden (da jeder seine Produkte etwas aufwerten wird), haben Anbieter wie AWS fortschrittliche Autoscaling-Systeme. Auf diese Weise können Sie Ihren Serverlebenszyklusprozess vollständig automatisieren und neue Server bei schwankender Nachfrage erstellen und zerstören, oft mehrmals am Tag. Anstatt für Spitzenkapazitäten zu bezahlen, können Sie außerhalb der Geschäftszeiten herunterskalieren und insgesamt Geld sparen.

VERWANDTE: Erste Schritte mit AWS Autoscaling

Durch das Einrichten der automatischen Skalierung können Sie auch automatisch zusätzliche Server erstellen, falls eine unerwartet hohe Last auftritt. Dadurch wird Ihr Netzwerk hoch skalierbar, und bedeutet, dass Sie aufgrund von hohem Datenverkehr keine wirklichen Ausfallzeiten haben. Diese skalierbare Mentalität gilt für alle Services. Beispielsweise sind die Lambda-Funktionen von AWS nach dem Auspacken unendlich skalierbar. Ihre Systeme übernehmen die Ausführung des Codes für Sie; Egal wie oft Sie die Funktion pro Sekunde aufrufen, es wird kein Engpass entstehen.

Werbung

Die Cloud spart auch Geld durch Aufgabenautomatisierung. Der Relational Database Service (RDS) von AWS ist beispielsweise ein vollständig verwalteter SQL-Service, der einen Großteil der Aufgaben der Datenbankverwaltung automatisiert. Sie können bereits jemanden bezahlen, der diese Aufgaben auf Ihren eigenen Servern für Sie erledigt; Wenn Sie RDS verwenden, könnte diese Person mehr Datenbanken verwalten und den Rest ihrer Zeit effizienter verbringen.

Und schließlich ist die Cloud-Infrastruktur oft viel langlebigerals On-Premise-Lösungen. Dies liegt zum Teil an Diensten wie S3, die für die Datenspeicherung unglaublich redundant sind, aber es gilt auch für das Design von Hochverfügbarkeitsnetzwerken. Es ist einfach, Failover-Fälle zu entwerfen, bei denen ein Backup-Server im Falle eines Hardwarefehlers übernehmen kann. Und im schlimmsten Fall ist es sehr einfach, alles in Ihrem Netzwerk zu sichern, da Dienste wie EBS, die den Speicher für Ihre Server versorgen, so konfiguriert werden können, dass sie automatisch auf S3 sichern.

Zum Beispiel AWS&# Der DNS-Dienst von 8217, Route 53, unterstützt Integritätsprüfungen, die Ihre Hardware überwachen und den Datenverkehr automatisch auf DNS-Ebene umschalten, wenn ein Server nicht mehr reagiert. Auto-Scaling-Gruppen unterstützen auch Zustandsprüfungen und können einen Server bei Problemen vollständig beenden und ersetzen.

Modernisierung Ihrer Architektur mit der Cloud Lösungen

Shutterstock/Ashalatha

Der Wechsel in die Cloud ist ein großer Schritt, aber mit den zusätzlichen Tools, die Ihnen zur Verfügung gestellt werden, ist dies ein guter Grund, Ihre Architektur zu untersuchen, um zu sehen, ob Teile davon von einer Designänderung profitieren können.

Viele ältere Anwendungen sind beispielsweise “monolithisch” d.h. verpackt in ein großes Programm, das auf Ihrem Server ausgeführt wird. Dieses Programm kann mit einer lokalen oder entfernten Datenbank kommunizieren, eingehende Webanfragen verarbeiten, Abfragen durchführen, Informationen suchen, Warteschlangen verarbeiten und alles andere, was Ihr Anwendungsfall wünscht.

Dies kann gut sein, um Dinge schnell zum Laufen zu bringen, aber irgendwann stellt es ein Problem dar – es ist nicht effizient. Solange es versucht, viele komplexe Aufgaben gleichzeitig zu bewältigen, wird es immer einen Aspekt einer großen monolithischen Anwendung geben, der zum Engpass für den Rest der Anwendung wird. Was dann normalerweise passiert, ist, dass Sie gezwungen sind, hochzuskalieren, mehr Server bereitzustellen und mehr Instanzen auszuführen. Dies kann unglaublich verschwenderisch sein, wenn die restlichen Komponenten des Programms nicht so stark beansprucht werden.

Werbung

Die Lösung, auf die sich viele Ingenieure zubewegen, ist also “Microservices” Dabei handelt es sich um Einzelleistungen, die jeweils ein klares, festes Ziel haben. Vielleicht übernimmt ein Element Ihrer Webanwendung die Videoverarbeitung, und es wird im Vergleich besonders stark beansprucht, wenn Benutzer lange Videos hochladen. Sie können diesen Teil in einen eigenen Microservice verschieben, extern verwalten und bei Bedarf einfach aufrufen. Jetzt kann diese Komponente vollständig skaliert werden. Möglicherweise benötigen Sie drei Server, auf denen der Videoverarbeitungsdienst ausgeführt wird, aber nur zwei Server, auf denen der Rest der Anwendung ausgeführt wird. Dadurch werden Ihre Ressourcen effizienter genutzt und das Design insgesamt besser skalierbar.

Welche Services sollte ich in Betracht ziehen?

Unabhängig davon, ob Sie sich für ein Microservices-Design entscheiden, können andere Cloud-Lösungen sehr hilfreich sein.

Wir werden einige von AWS besprechen&#8217 ;s Dienstleistungen, da sie der Branchenführer sind, insbesondere in Bezug auf die Anzahl der angebotenen Dienstleistungen. Bei den meisten großen Anbietern sind jedoch gleichwertige Produkte bei anderen Cloud-Anbietern wie Azure, GCP und Digital Ocean erhältlich.

Cloud Object Storage (S3)

Die meisten lokalen Lösungen verwenden Speicher auf Blockebene, d. h. Objekte werden als Dateien auf Datenträgern gespeichert und über das Netzwerk verfügbar gemacht. Die Größe von Anbietern wie AWS ermöglicht jedoch die Speicherung großer Dateimengen in ihrem Simple Storage Service (S3).

S3 hat keine traditionellen Ordner, obwohl sie Objektschlüssel haben, die meistens wie diese funktionieren. Anstatt direkten Zugriff auf das zugrunde liegende Laufwerk anzubieten, können Sie mit S3 einfach eine Datei mit einem Namen und einem Speicherort in der Cloud speichern. Das war's, aber dieses einfache Designmuster ermöglicht eine große Flexibilität.

Werbung

Angenommen, Ihre Anwendung lässt von Nutzern hochgeladene Inhalte zu. Das Speichern von Bildern in S3 wäre eine großartige Option, und Sie können sie sogar über das Internet über das CloudFront-Content-Delivery-Netzwerk von AWS verfügbar machen.

Der Wechsel zu S3-basiertem Speicher ist ein kleiner Prozess , aber es gibt Hybridlösungen wie AWS Storage Gateway.

VERWANDTE: Brauchen Sie lokale NAS-Leistung? Verwenden Sie das S3 Storage Gateway von AWS

Cloud Functions

Cloud Functions wie Lambda sind unglaublich Nützlich—Sie ermöglichen es Ihnen, Code in der Cloud auszuführen, ohne an Server denken zu müssen. Fordern Sie einfach die Ausführung einer Funktion an, entweder direkt oder von einer API wie dem API Gateway von AWS, und sie wird in die Warteschlange gestellt und auf Lambda-Servern ausgeführt.

Sie zahlen lediglich eine Gebühr für die CPU-Sekunden und den Speicher, den Ihre Funktion verwendet. Unabhängig davon, wie oft Sie die Funktion aufrufen, sie wird skaliert, um sie zu verarbeiten.

Cloud-Funktionen können einfache Aufgaben in Ihrem Netzwerk problemlos automatisieren. Wenn Sie ein Cron-Job-Skript haben, das auf einem Ihrer Server ausgeführt wird, ziehen Sie in Betracht, es nach Lambda zu verschieben. Natürlich beschränkt sich Lambda nicht nur auf einfache Skripte. Es ist sehr leistungsstark und kann verwendet werden, um robuste Anwendungs-Backends zu erstellen.

VERWANDTE: Was sind Lambda-Funktionen und wie werden sie verwendet?

Load-Balancer & Auto-Scaling

Load-Balancer sind Netzwerkgeräte, die den Datenverkehr zwischen Servern aufteilen. Traditionell müssen Sie einen Server einrichten und diese mit einem Programm wie HAProxy selbst konfigurieren. Bei AWS sind sie in das Netzwerk integriert und Sie müssen sie nur einschalten und eine monatliche Gebühr dafür bezahlen.

Die automatische Skalierung ist eine weitere Funktion, die auf Load Balancern aufbaut. Anstatt dass Ihre Serverliste statisch ist, basiert sie stattdessen auf den Datenverkehrsanforderungen. Server werden nach Bedarf hinzugefügt und aus dem Pool entfernt.

Werbung

Dies hat viele Vorteile, wie wir bereits behandelt haben, aber es hat auch weitreichende Auswirkungen darauf, wie Sie verwenden und aktualisieren Sie Ihr Netzwerk. Da Ihr Serverinstallationsprozess automatisiert ist, können Sie Blue/Green-Code-Implementierungen durchführen, d. h. wenn Server aktualisiert werden, indem Sie völlig neue Server erstellen, darauf warten, dass der Dienst online geht, und den Datenverkehr langsam auf sie umleiten, um alle Probleme auszumerzen.< /p>

Wenn es etwas gibt, das wir jedem empfehlen, ist es sicher, es einzurichten. 8217;s automatische Skalierung Ihrer wichtigsten EC2-Services.

VERWANDTE: Erste Schritte mit den Elastic Load Balancer von AWS

Automatisierte CI/CD-Pipelines

Shutterstock/Ribkhan

Continuous Integration/Continuous Deployment ist der Prozess des Einrichtens eines automatisierten Builds Ihrer Anwendung, der auf dem Server bereitgestellt wird, wenn Sie Änderungen an Ihrer Quellcodeverwaltung vornehmen.

Im Grunde pushen Sie einen Commit an Github (oder ein anderes Repository, das Sie verwenden), und ein Service wie AWS CodePipeline startet einen Build-Server. Dieser Server erstellt und testet Ihre Anwendung, und wenn er erfolgreich ist, sendet er den fertigen Build zur Aktualisierung an Ihre Server. Wenn Sie die automatische Skalierung eingerichtet haben, kann dies mit einer blau/grünen Bereitstellung mit der Option für ein schnelles und einfaches Rollback bei Bedarf erfolgen.

VERWANDTE: Wie Erste Schritte mit den CI/CD-Pipelines von AWS

Eingebautes Content Delivery Network (CDN)

Ein CDN kann Ihre Lieferzeiten erheblich verkürzen. Da AWS im Grunde eine weltweite Computing-Supermacht ist, verfügt ihr CDN über Edge-Nodes auf der ganzen Welt. Viele andere Cloud-Anbieter haben ähnliche Lösungen; Das Cloud CDN von Google ist eines der schnellsten und flexibelsten, da Google einen Großteil der Infrastruktur des Internets kontrolliert.

VERWANDTE: Erste Schritte mit dem CloudFront-CDN von AWS

VERWANDTE: So verwenden Sie das Cloud-CDN von Google zur Beschleunigung Ihrer Website

Können Sie ohne Ausfallzeiten migrieren?

Die Migration wird ein langer und komplizierter Prozess sein, muss jedoch nicht mit längeren Ausfallzeiten verbunden sein. Es ist wahrscheinlich, dass Sie eine gewisse Ausfallzeit haben, aber der Prozess kann ziemlich reibungslos ablaufen.

Werbung

Sie können eine von zwei Strategien anwenden: entweder alle Ihre Server gleichzeitig verschieben einmal und schalten Sie das gesamte Netzwerk um oder verschieben Sie Teile Ihrer Anwendungen in die Cloud und aktualisieren Sie Ihre Anwendungen, um die neuen Dienste zu nutzen.

Die zweite Option führt zu einem hybriden Ansatz und wird von den meisten großen Unternehmen gewählt, da es kostengünstiger ist, nur die Dinge zu bewegen, die am meisten profitieren. AWS bietet viele Services, die durch die Integration lokaler Hardware in die Cloud funktionieren.

Die erste Option ist für kleine Bereitstellungen einfach und wird durch Services wie den Application Migration Service von AWS vereinfacht, der schnell Verschieben Sie eine Flotte von Servern auf EC2. Sie werden wahrscheinlich immer noch Code-Updates und -Konfiguration benötigen, aber es kann Ihr gesamtes Netzwerk in eine Testumgebung verschieben, in der Sie alles einrichten und dann die Umstellung durchführen können, wenn Sie bereit sind.

VERWANDTE: So migrieren Sie Server einfach in die Cloud mit dem Anwendungsmigrationsservice von AWS

In jedem Fall ist der Wechsel in die Cloud eine lange Entscheidung, die Sie mit einem klaren Plan gut recherchieren sollten. Ihre spezifische Einrichtung kann stark variieren, daher müssen Sie sich mit den Best Practices für die Art von Anwendungen, die Sie ausführen möchten, vertraut machen.