Checkliste zum Erstellen und Veröffentlichen von Webanwendungen

Um heutzutage eine eigene Webanwendung zu erstellen, reicht es nicht aus, diese entwickeln zu können. Ein wichtiger Aspekt ist das Einrichten von Tools für die Anwendungsbereitstellung, -überwachung sowie die Verwaltung und Verwaltung der Umgebung, in der sie ausgeführt wird. Die Ära der manuellen Bereitstellung gerät in Vergessenheit. Selbst bei kleinen Projekten können Automatisierungstools greifbare Vorteile bringen. Wenn wir "von Hand" eingesetzt werden, können wir oft vergessen, etwas zu übertragen, die eine oder andere Nuance zu berücksichtigen, einen vergessenen Test durchzuführen und diese Liste kann für einige Zeit fortgesetzt werden.

Dieser Artikel kann denjenigen helfen, die nur die Grundlagen der Erstellung von Webanwendungen verstehen und ein wenig über die grundlegenden Begriffe und Konventionen wissen möchten.

Die Konstruktion von Anwendungen kann also immer noch in zwei Teile unterteilt werden. Dies ist alles, was sich auf den Anwendungscode bezieht, und alles, was sich auf die Umgebung bezieht, in der dieser Code ausgeführt wird. Der Anwendungscode ist wiederum in Server (einer, der häufig auf dem Server ausgeführt wird: Geschäftslogik, Autorisierung, Datenspeicherung usw.) und Client (einer, der auf dem Computer des Benutzers ausgeführt wird: häufig die Schnittstelle und verwandte Bereiche) unterteilt damit Logik).

Beginnen wir mit Mittwoch.

Die Grundlage für den Betrieb von Code, Systemen und Software ist das Betriebssystem. Im Folgenden werden die beliebtesten Systeme auf dem Hosting-Markt vorgestellt und kurz beschrieben:

Windows Server ist das gleiche Windows, jedoch in Servervarianten. Einige Funktionen, die in der (regulären) Client-Version von Windows verfügbar sind, sind hier nicht vorhanden, z. B. einige Statistiksammlungsdienste und ähnliche Software. Es gibt jedoch eine Reihe von Dienstprogrammen für die Netzwerkadministration sowie Basissoftware für die Serverbereitstellung (Web, FTP, ...). Im Allgemeinen sieht Windows Server wie ein normales Windows aus, quakt wie ein normales Windows, kostet jedoch das Zweifache seines üblichen Gegenstücks. Da Sie die Anwendung jedoch höchstwahrscheinlich auf einem dedizierten / virtuellen Server bereitstellen, sind die endgültigen Kosten für Sie nicht kritisch, auch wenn sie möglicherweise steigen. Da die Windows-Plattform einen überwältigenden Platz auf dem Markt für Benutzerbetriebssysteme einnimmt, ist ihre Server-Edition den meisten Benutzern am vertrautesten.

Unix- ähnliches System. Die herkömmliche Arbeit in diesen Systemen impliziert keine vertraute grafische Oberfläche, die dem Benutzer nur eine Konsole als Steuerelement bietet. Für einen unerfahrenen Benutzer kann es schwierig sein, in einem solchen Format zu arbeiten, so dass nur der in den Daten sehr beliebte Vim- Texteditor übrig bleibt. Die damit verbundene Frage hat seit 6 Jahren bereits mehr als 1,8 Millionen Aufrufe erhalten. Die Hauptdistributionen (Editionen) dieser Familie sind: Debian - eine beliebte Distribution, deren Paketversionen sich hauptsächlich auf LTS ( Long Term Support - Langzeitunterstützung) konzentrieren, was sich in der relativ hohen Zuverlässigkeit und Stabilität des Systems und der Pakete widerspiegelt; Ubuntu - enthält Distributionen aller Pakete in ihren neuesten Versionen, die die Stabilität beeinträchtigen können, aber die Verwendung der Funktionen ermöglichen, die mit neuen Versionen geliefert werden. Red Hat Enterprise Linux - ein für den kommerziellen Gebrauch vermarktetes Betriebssystem wird bezahlt, beinhaltet jedoch Unterstützung von Softwareanbietern, einigen proprietären Paketen und Treiberpaketen. CentOS - OpenSource- Variante von Red Hat Enterprise Linux, gekennzeichnet durch den Mangel an proprietären Paketen und Support.

Für diejenigen, die nur die Entwicklung dieses Bereichs verstehen, wäre meine Empfehlung Windows Server oder Ubuntu . Wenn wir Windows in Betracht ziehen, ist dies in erster Linie eine Gewohnheit des Systems Ubuntu - mehr Toleranz gegenüber Updates und zum Beispiel weniger Probleme beim Starten von Projekten mit Technologien, die neue Versionen erfordern.

Nachdem Sie sich für das Betriebssystem entschieden haben, gehen wir zu einer Reihe von Tools über, mit denen Sie den Status der Anwendung oder ihrer Teile auf dem Server bereitstellen (installieren), aktualisieren und überwachen können.

Die nächste wichtige Entscheidung ist, Ihre Anwendung und Ihren Server dafür zu hosten. Im Moment sind die häufigsten drei Möglichkeiten:

  • Das Hosten (Beibehalten) eines Servers auf eigene Faust ist die kostengünstigste Option. Sie müssen jedoch eine statische IP-Adresse bei Ihrem Anbieter bestellen, damit Ihre Ressource ihre Adresse im Laufe der Zeit nicht ändert.
  • Mieten Sie einen dedizierten Server (VDS) - und verwalten Sie dessen Verwaltung und Lastskalierung unabhängig
  • Bezahlen Sie (oft gleichzeitig geben sie der Plattform Funktionalität kostenlos) ein Abonnement für ein Cloud-Hosting, bei dem das Zahlungsmodell für verwendete Ressourcen weit verbreitet ist. Die prominentesten Vertreter dieser Richtung: Amazon AWS (geben Sie ein Jahr kostenlos Dienste, aber mit einem monatlichen Limit), Google Cloud (geben Sie 300 US-Dollar für ein Konto, das im Laufe des Jahres für Cloud-Hosting-Dienste ausgegeben werden kann), Yandex. Cloud (geben Sie 4000 Rubel . für 2 Monate), Microsoft Azure (gewähren Sie ein Jahr lang kostenlosen Zugriff auf beliebte Dienste, + 12 500 Rubel für alle Dienste für einen Monat). Auf diese Weise können Sie jeden dieser Anbieter ausprobieren, ohne einen Cent auszugeben, aber eine ungefähre Meinung über die Qualität und das Serviceniveau einzuholen.

Abhängig vom gewählten Weg wird sich in Zukunft nur die Tatsache ändern, für wen zum größten Teil die Verantwortung für einen bestimmten Verwaltungsbereich liegt. Wenn Sie sich selbst hosten, müssen Sie verstehen, dass Stromunterbrechungen, das Internet, der Server selbst und die darauf bereitgestellte Software vollständig auf Ihren Schultern liegen. Für Schulungen und Tests ist dies jedoch mehr als ausreichend.

Wenn Sie keinen zusätzlichen Computer haben, der die Rolle eines Servers spielen kann, sollten Sie den zweiten oder dritten Weg verwenden. Der zweite Fall ist identisch mit dem ersten, mit der Ausnahme, dass Sie die Verantwortung für die Verfügbarkeit des Servers und seine Leistung auf die Schultern des Hosts verlagern. Die Server- und Softwareverwaltung liegt weiterhin unter Ihrer Kontrolle.

Und schließlich die Möglichkeit, die Kapazität von Cloud-Anbietern zu mieten. Hier können Sie die automatische Steuerung von fast allem konfigurieren, ohne auf technische Nuancen einzugehen. Darüber hinaus können anstelle eines Computers mehrere Instanzen (Instanzen) parallel ausgeführt werden, die beispielsweise für verschiedene Teile der Anwendung verantwortlich sein können, sich jedoch in ihren Kosten nicht wesentlich vom Besitz eines dedizierten Servers unterscheiden. Außerdem gibt es Instrumente für Orchestrierung, Containerisierung, automatische Bereitstellung, kontinuierliche Integration und vieles mehr! Einige dieser Dinge werden wir unten betrachten.

Im Allgemeinen sieht die Serverinfrastruktur wie folgt aus: Wir haben einen sogenannten „Orchestrator“ („Orchestrierung“ - das Verwalten mehrerer Serverinstanzen), der Umgebungsänderungen auf der Serverinstanz verwaltet, einen Virtualisierungscontainer (optional, aber häufig verwendet), mit dem Sie die Anwendung aufteilen können auf isolierten logischen Ebenen und Software für die kontinuierliche Integration - mit der der gehostete Code über "Skripte" aktualisiert werden kann.

Mit der Orchestrierung können Sie also den Serverstatus anzeigen, Aktualisierungen der Serverumgebung rückgängig machen oder zurücksetzen usw. Zunächst ist es unwahrscheinlich, dass Sie von diesem Aspekt betroffen sind, denn um etwas zu orchestrieren, benötigen Sie mehrere Server (kann einer, aber warum ist dies erforderlich?). Damit mehrere Server vorhanden sind, benötigen Sie diese. Von den Tools in diesem Bereich sind hauptsächlich Kubernetes zu hören, die von Google entwickelt wurden.

Der nächste Schritt ist die Virtualisierung auf Betriebssystemebene. Jetzt ist das Konzept der „Dockerisierung“ weit verbreitet, das vom Docker- Tool stammt, das die Funktionalität von voneinander isolierten Containern bietet, die jedoch im Kontext desselben Betriebssystems gestartet wurden. Was bedeutet das: In jedem dieser Container können Sie eine Anwendung oder sogar eine Reihe von Anwendungen ausführen, die davon ausgehen, dass sie die einzigen im gesamten Betriebssystem sind, ohne zu wissen, dass auf diesem Computer jemand anderes vorhanden ist. Diese Funktion ist sehr nützlich, um dieselben Anwendungen unterschiedlicher Versionen oder nur widersprüchliche Anwendungen zu starten und um Teile der Anwendung in Ebenen aufzuteilen. Diese Besetzung von Ebenen kann anschließend in ein Image geschrieben werden, das beispielsweise zum Bereitstellen einer Anwendung verwendet werden kann. Wenn Sie dieses Image installieren und die darin enthaltenen Container erweitern, erhalten Sie eine vorgefertigte Umgebung zum Starten Ihrer Anwendung! In den ersten Schritten können Sie dieses Tool sowohl für Bildungszwecke als auch zur Erzielung eines echten Nutzens verwenden, indem Sie die Anwendungslogik auf verschiedene Ebenen verteilen. Aber es ist erwähnenswert, dass nicht jeder Docker braucht, und das nicht immer. Das Andocken ist in Fällen gerechtfertigt, in denen die Anwendung "fragmentiert" ist, aufgeteilt in kleine Teile, die jeweils für ihre eigene Aufgabe, die sogenannte "Microservice-Architektur", verantwortlich sind.

Neben der Bereitstellung der Umgebung müssen wir auch eine kompetente Bereitstellung der Anwendung bereitstellen, die alle Arten von Codetransformationen, die Installation von Bibliotheken und Paketen, die mit der Anwendung verknüpft sind, das Ausführen von Tests, Benachrichtigungen über diese Vorgänge usw. umfasst. Hier müssen wir auf ein Konzept wie "Continuous Integration" ( CI - Continuous Integration ) achten. Die Hauptwerkzeuge in diesem Bereich sind derzeit Jenkins (in Java geschriebene Software für CI scheint anfangs etwas kompliziert zu sein), Travis CI (subjektiv in Ruby geschrieben, etwas einfacher als Jenkins , jedoch einige Kenntnisse in Bereitstellungskonfigurationsbereiche), Gitlab CI (geschrieben in Ruby and Go ).

Nachdem wir über die Umgebung gesprochen haben, in der Ihre Anwendung funktionieren wird, ist es Zeit zu sehen, welche Tools uns die moderne Welt bietet, um genau diese Anwendungen zu erstellen.

Beginnen wir mit den Grundlagen: Backend (Backend) - die Serverseite. Die Wahl der Sprache, eine Reihe von Grundfunktionen und eine vordefinierte Struktur (Rahmen) wird hier hauptsächlich von persönlichen Vorlieben bestimmt, ist jedoch erwähnenswert (die Meinung des Autors zu Sprachen ist recht subjektiv, wenn auch mit dem Anspruch auf eine unvoreingenommene Beschreibung):

  • Python ist eine Sprache, die für einen unerfahrenen Benutzer freundlich genug ist, einige Fehler verzeiht, aber es kann auch ziemlich streng mit dem Entwickler sein, damit er nichts Schlechtes tut. Bereits ziemlich ausgereifte und bedeutungsvolle PL, die 1991 erschien.
  • Go ist eine Sprache von Google, es ist auch sehr freundlich und praktisch, es ist einfach genug, eine ausführbare Datei auf jeder Plattform zu kompilieren und abzurufen. Es kann einfach und unterhaltsam sein, oder es kann schwierig und ernst sein. Frisch und jung, erschien vor relativ kurzer Zeit im Jahr 2009.
  • Rust - etwas älter als der vorherige Kollege, der 2006 entlassen wurde, ist in Bezug auf seine Brüder noch recht jung. Es richtet sich an erfahrene Entwickler, obwohl es immer noch versucht, viele einfache Aufgaben für den Programmierer zu lösen.
  • Java ist ein Veteran der kommerziellen Entwicklung, der 1995 erschien, eine der derzeit am häufigsten verwendeten Sprachen bei der Entwicklung von Unternehmensanwendungen. Mit seinen Grundkonzepten und der starken Optimierung der Laufzeitumgebung kann es für Anfänger ziemlich kompliziert werden.
  • ASP.net ist eine von Microsoft veröffentlichte Anwendungsentwicklungsplattform. Zum Schreiben der Funktionalität wird hauptsächlich die Sprache C # (ausgesprochen C Sharp) verwendet, die im Jahr 2000 erschien. Seine Komplexität ist vergleichbar mit dem Niveau zwischen Java und Rust.
  • PHP - ursprünglich für die HTML-Vorverarbeitung verwendet, besteht derzeit die Tendenz, die Nutzung zu verringern, obwohl es auf dem Sprachmarkt weiterhin absolut führend ist. Es verfügt über eine niedrige Eingabeschwelle und erleichtert das Schreiben von Code. Bei der Entwicklung von Anwendungen, die groß genug sind, reicht die Funktionalität der Sprache möglicherweise nicht aus.

Nun, der letzte Teil unserer Anwendung - der für den Benutzer greifbarste - Frontend (Frontend) - ist das Gesicht Ihrer Anwendung. Mit diesem Teil interagiert der Benutzer direkt.

Ohne auf Details einzugehen, steht das moderne Frontend auf drei Säulen, Frameworks (und nicht so sehr), um Benutzeroberflächen zu erstellen. Dementsprechend sind die drei beliebtesten:

  • ReactJS ist kein Framework, sondern eine Bibliothek. Tatsächlich unterscheidet sich das Framework vom stolzen Titel nur, wenn einige Funktionen "out of the box" fehlen und sie manuell installiert werden müssen. Daher gibt es verschiedene Variationen der "Vorbereitung" dieser Bibliothek, die eine Art Rahmen bilden. Für einen Anfänger kann es aufgrund einiger Grundprinzipien und einer ziemlich aggressiven Einrichtung der Montageumgebung kompliziert sein. Für einen schnellen Start können Sie jedoch das Paket "create-react-app" verwenden.
  • VueJS ist ein Framework zum Erstellen benutzerdefinierter Schnittstellen. Aus dieser Dreifaltigkeit nimmt er zu Recht den Titel des benutzerfreundlichsten Frameworks, für die Entwicklung in Vue ist die Eintrittsschwelle niedriger als die der anderen zitierten Brüder. Außerdem ist er unter ihnen der jüngste.
  • Angular - wird als das komplexeste der angegebenen Frameworks angesehen und benötigt als einziges TypeScript (ein Add-On für die Javascript-Sprache). Wird häufig zum Erstellen großer Unternehmensanwendungen verwendet.

Zusammenfassend können wir den Schluss ziehen, dass sich die Bereitstellung der Anwendung jetzt grundlegend von der Vorgehensweise unterscheidet. Es stört jedoch niemanden, den „Einsatz“ auf altmodische Weise durchzuführen. Aber ist es die wenig Zeit wert, die zu Beginn gespart wurde - eine große Anzahl von Rechen, auf die der Entwickler, der diesen Weg gewählt hat, treten muss? Ich glaube die Antwort ist nein. Nachdem Sie etwas mehr Zeit damit verbracht haben, sich mit diesen Tools vertraut zu machen (und Sie brauchen nicht mehr, weil Sie verstehen müssen, ob Sie sie im aktuellen Projekt benötigen oder nicht), können Sie sie ausprobieren und beispielsweise Fälle von Geisterfehlern, die von der Umgebung und den Problemen abhängen, erheblich reduzieren Manifestieren nur auf dem Produktionsserver, Nachtanalyse, was zum Absturz des Servers führte und warum er nicht startet, und vieles mehr.

Source: https://habr.com/ru/post/de446642/


All Articles