23. Februar 2022

„Platform as a Service“ am Beispiel Django on Beanstalk

AuthorAna Novokmet
Kategorien

„Platform as a Service“ (PaaS) bietet Unternehmen eine leistungsstarke Möglichkeit, um moderne und cloudbasierte Softwareentwicklung voranzutreiben. Ausschlaggebend hierfür ist die Entlastung der Unternehmen von der Verantwortung für die Verwaltung der zugrundeliegenden Infrastruktur (in der Regel Hardware und Betriebssysteme). Der Vorteil ist hier besonders, dass sich Entwickler auf die Bereitstellung und Wartung von Anwendungen konzentrieren können. Das Platform-as-a-Service Modell ermöglicht es, produktiver zu sein, da sich nicht mit der Beschaffung von Ressourcen, der Kapazitätsplanung, der Softwarewartung, dem Patching oder anderen undifferenzierten Aufgaben, die mit dem Betrieb von Anwendung einhergehen, befasst werden muss. (Quelle)

In unserem Blogbeitrag zu Platform as a Service (PaaS) werden die typischen Einsatzwecke und Vorteile übrigens genauer beleuchtet.

AWS Elastic Beanstalk – ein Überblick

AWS Elastic Beanstalk ist eine einfache Plattform-as-a-Service Lösung für die Bereitstellung und Skalierung von Webanwendungen und -services, die in Java, .NET, PHP, Node.js, Python, Ruby, Go und Docker auf bekannten Servern wie Apache, Nginx, Passenger und IIS geschrieben wurden. Entwickler können einfach ihren Code hochladen und Elastic Beanstalk kümmert sich um alles Weitere - einschließlich Kapazitätsbereitstellung, Load Balancing, automatische Skalierung und Überwachung des Anwendungsstatus. Gleichzeitig behalten die Nutzer die vollständige Kontrolle über die AWS-Ressourcen, die ihre Anwendung antreiben und den Zugriff jederzeit gewährleisten.

Elastic Beanstalk ist kostenlos, Nutzer zahlen nur für die AWS-Ressourcen, die sie für die Speicherung und Ausführung ihrer Anwendung benötigen. (Quelle)

Wie stellt man eine Django-Anwendung auf Elastic Beanstalk bereit?

Dieser Blogbeitrag zeigt Ihnen, wie eine standardmäßige, automatisch generierte Django-Python-Website in einer AWS Elastic Beanstalk Python-Cloud-Computing-Umgebung bereitgestellt werden kann. Damit dies gelingt, sollten alle gängigen Python-Voraussetzungen installiert sein, einschließlich der folgenden Pakete: Python 3.7 oder höher, pip, virtualenv und awsebcli. Das Django-Python-Framework wird im Rahmen dieses Artikels installiert.

Allgemeine Schritt-für-Schritt Anleitung:

Schritt 1: Einrichten einer virtuellen Python-Umgebung
Schritt 2: Erstellen eines Django-Projekts
Schritt 3: Konfigurieren der erstellten Django-Anwendung für Elastic Beanstalk
Schritt 4: Verwenden der Elastic Beanstalk CLI zum Einrichten der Website

Schritt 1: Einrichten einer virtuellen Python-Umgebung

Erstellen Sie mit dem Befehl virtualenv eine virtuelle Umgebung namens eb-virt, in der Sie Django und seine Abhängigkeiten installieren. Sie können erfahren, welche Pakete Ihre Anwendung benötigt, indem Sie eine virtuelle Umgebung verwenden und sicherstellen, dass die relevanten Pakete auf den Amazon EC2-Instanzen geladen sind, die Ihre Anwendung ausführen. Die Befehle, die Sie für Unix-basierte Systeme eingeben müssen, sind in der Abbildung unten dargestellt. Die Befehle für Windows finden Sie im offiziellen AWS Developer Guide. (Quelle)

Schritt 2: Erstellen eines Django-Projekts

Jetzt sind Sie bereit, ein Django-Python-Projekt zu erstellen und es in der virtuellen Cloud-Computing-Umgebung auf Ihrem PC auszuführen. Zunächst müssen Sie die virtuelle Umgebung eb-virt aktivieren, und dann können Sie mit dem Befehl django-admin startproject ein Django-Python-Projekt namens ebdjango erstellen.  Mit manage.py runserver können Sie Ihre Django-Site lokal starten.

Um die Seite zu sehen, öffnen Sie http://127.0.0.1:8000/ in einem Webbrowser. Um die Ausgabe Ihrer Anfrage zu sehen, sehen Sie sich das Serverprotokoll an. Mit Strg+C wird der Webserver heruntergefahren und Sie kehren zu Ihrer virtuellen Umgebung zurück. (Quelle)

Schritt 3: Konfigurieren der erstellten Django-Anwendung für Elastic Beanstalk

Um Ihre Django-Cloud-Anwendung zu starten, sucht Elastic Beanstalk standardmäßig nach einer Datei namens application.py. Da diese in Ihrem Django-Projekt nicht vorhanden ist, müssen Sie einige Änderungen an der Umgebung Ihrer Anwendung vornehmen. Damit die Module Ihrer Anwendung geladen werden können, müssen Sie zusätzlich Umgebungsvariablen setzen.

Führen Sie pip freeze aus und speichern Sie die Ausgabe in der Datei requirements.txt (EB verwendet sie, um zu bestimmen, welches Paket auf den EC2-Instanzen installiert werden soll, auf denen Ihre Anwendung läuft). Danach erstellen Sie ein Verzeichnis mit dem Namen .ebextensions und fügen eine Konfigurationsdatei mit dem Namen django.config hinzu (Beispiel ~/ebdjango/.ebextensions/django.config, fügen Sie den in der Abbildung unten gezeigten Text in diese Datei ein) - EB verwendet diese Datei zum Starten der Anwendung. (Quelle)

Schritt 4: Verwenden der Elastic Beanstalk CLI zur Einrichtung der Website

Um eine Umgebung zu erstellen und Ihre Django-Anwendung bereitzustellen, müssen Sie Ihr EB CLI-Repository mit dem Befehl eb init initialisieren (er erstellt die Anwendung django-tutorial, wie in der Abbildung unten gezeigt). Wenn Sie per SSH auf die EC2-Instanz zugreifen möchten, führen Sie eb init aus und folgen Sie den Schritten zur Konfiguration eines Standardschlüsselpaars. Mit eb create erstellen Sie eine Umgebung und stellen Ihre Anwendung darin bereit (dieser Befehl erstellt eine EB-Umgebung mit Lastausgleich namens django-env). Nachdem die Umgebung erstellt wurde, ermitteln Sie den Domänennamen Ihrer neuen Umgebung mit dem Befehl eb status (Wert der Eigenschaft CNAME).

Der nächste Schritt besteht darin, ALLOWED_HOSTS in der Datei settings.py im ebdjango-Verzeichnis zu suchen, den Domainnamen Ihrer Anwendung dort hinzuzufügen und zu speichern. Stellen Sie Ihre Anwendung mit dem Befehl eb deploy bereit - EB CLI bündelt dann den Inhalt des Projektverzeichnisses und stellt ihn in Ihrer Umgebung bereit. Nachdem der Prozess abgeschlossen ist, öffnen Sie Ihre Website mit dem Befehl eb open. (Quelle)

Herzlichen Glückwunsch, Sie haben Ihre Django-Cloud-Anwendung mit Elastic Beanstalk über das Platform-as-a-Service Modell bereitgestellt. Als Nächstes können Sie die Anwendung oder ihre Konfiguration aktualisieren und neu bereitstellen, während EB den Rest der Arbeit erledigt. Wenn Sie mit dieser Anwendung fertig sind, beenden Sie Ihre Elastic Beanstalk-Umgebung mit eb terminate, um Instanzstunden und andere AWS-Ressourcen zwischen Entwicklungssitzungen zu sparen. (Quelle)

Die meisten Cloud-Anbieter bieten irgendeine Form von Platform as a service (PaaS) an und machen die oben genannten Vorteile für jedes Unternehmen nutzbar. Weitere PaaS-Beispiele sind Microsoft Azure App Services und Google App Engine. Mehr darüber erfahren Sie in den kommenden Blogartikeln.


Empfohlenene Artikel
22. Dezember 2022 Libelle IT-Glossar Teil 22: Was ist DevOps?
30. November 2022 Die 12-Faktor-App Teil 3: (Einweggebrauch, Dev-Prod-Vergleichbarkeit, Logs, Admin-Prozesse)

Alle Blogartikel