Checkliste fĂŒr die Erstellung und Veröffentlichung von Webanwendungen

Um eine eigene Webanwendung zu erstellen, reicht es heutzutage nicht aus, sie lediglich zu entwickeln. Ein bedeutender Aspekt ist die Konfiguration der Tools fĂŒr die Bereitstellung der Anwendung, die Überwachung sowie das Management und die Verwaltung der Umgebung, in der sie betrieben wird. Die Ära der manuellen Bereitstellung gehört der Vergangenheit an; selbst fĂŒr kleine Projekte können Automatisierungswerkzeuge erhebliche Vorteile bringen. Bei einer manuellen Bereitstellung können wir hĂ€ufig vergessen, etwas zu ĂŒbertragen, einen bestimmten Punkt zu berĂŒcksichtigen oder einen vergessenen Test durchzufĂŒhren – die Liste ließe sich noch lange fortsetzen.

Dieser Artikel richtet sich an diejenigen, die gerade die Grundlagen der Erstellung von Webanwendungen erlernen und ein wenig mehr ĂŒber die grundlegenden Begriffe und Konventionen erfahren möchten.

Die Entwicklung von Anwendungen kann in zwei Hauptbereiche unterteilt werden: den Code der Anwendung und die Umgebung, in der dieser Code ausgefĂŒhrt wird. Der Anwendungs-Code gliedert sich zudem in serverseitigen Code (der auf dem Server ausgefĂŒhrt wird, hĂ€ufig: GeschĂ€ftslogik, Autorisierung, Datenhaltung usw.) und clientseitigen Code (der auf dem BenutzergerĂ€t ausgefĂŒhrt wird: hĂ€ufig BenutzeroberflĂ€chen und die damit verbundene Logik).

Lassen Sie uns mit der Umgebung beginnen.

Die Grundlage fĂŒr die FunktionalitĂ€t jeglichen Codes, Systeme oder Software ist das Betriebssystem. Im Folgenden betrachten wir die auf dem Hosting-Markt gĂ€ngigsten Systeme und geben eine kurze Übersicht ĂŒber sie:

Windows Server – die bekannte Windows-Version, aber in der Server-Iteration. Einige Funktionen, die in der regulĂ€ren (Client-)Version von Windows verfĂŒgbar sind, fehlen hier, wie bestimmte Dienste zur Statistiksammlung und Ă€hnliche Software. DafĂŒr sind jedoch zahlreiche Netzwerkadministrationswerkzeuge und grundlegende Software zum Deployment vorhanden. Server (Web, FTP, 
). Insgesamt scheint Windows Server wie ein gewöhnliches Windows zu funktionieren und verhĂ€lt sich auch so, doch kostet er das Doppelte seines regulĂ€ren Pendants. BerĂŒcksichtigt man, dass Sie höchstwahrscheinlich Ihre Anwendung auf einem dedizierten oder virtuellen Server bereitstellen werden, kann der Endpreis zwar steigen, bleibt jedoch im Rahmen. Da die Windows-Plattform einen ĂŒberwĂ€ltigenden Anteil am Markt fĂŒr Desktop-OS hat, wird ihre Server-Edition den meisten Nutzern am vertrautesten sein.

Unix-Ă€hnlichem System. Der traditionelle Betrieb in solchen Systemen sieht keinen gewohnten grafischen BenutzeroberflĂ€che vor und bietet dem Benutzer lediglich die Konsole zur Steuerung. FĂŒr unerfahrene Benutzer kann die Arbeit in diesem Format eine Herausforderung darstellen, allein der Ausstieg aus dem recht beliebten textbasierten Editor Vim, das dazugehörige Thema hat in 6 Jahren bereits ĂŒber 1,8 Millionen Aufrufe erreicht. Die Hauptdistributoren (Editionen) dieser Familie sind: Debian — ein beliebtes Distribution, dessen Paketversionen hauptsĂ€chlich auf LTS (Long Term Support – langanhaltender Support, der sich in einer hohen ZuverlĂ€ssigkeit und StabilitĂ€t des Systems und der Pakete zeigt; Ubuntu – enthĂ€lt die Distributionen aller Pakete in ihren neuesten Versionen, was die StabilitĂ€t beeintrĂ€chtigen kann, jedoch die Nutzung der Funktionen ermöglicht, die mit neuen Versionen geliefert werden; Red Hat Enterprise Linux – ein Betriebssystem, das fĂŒr den kommerziellen Einsatz positioniert ist, kostenpflichtig ist, jedoch UnterstĂŒtzung von Softwareanbietern, einige proprietĂ€re Pakete und Treiberpakete beinhaltet; CentOS – opensource eine Variation von Red Hat Enterprise Linux, unterscheidet sich durch das Fehlen proprietĂ€rer Pakete und UnterstĂŒtzung.

FĂŒr diejenigen, die gerade erst beginnen, in diesem Bereich Fuß zu fassen, empfehle ich Systeme Windows Server, oder Ubuntu. Betrachtet man Windows, so ist das vor allem die Vertrautheit mit dem System, Ubuntu – welches mehr Toleranz gegenĂŒber Updates bietet und unter anderem weniger Probleme beim Start von Projekten mit Technologien verursacht, die neue Versionen benötigen.

Nachdem wir uns fĂŒr ein Betriebssystem entschieden haben, kommen wir zum Werkzeugset, das es ermöglicht, Anwendungen oder Teile davon auf dem Server zu installieren, zu aktualisieren und deren Zustand zu ĂŒberwachen.

Die nĂ€chste wichtige Entscheidung betrifft die Bereitstellung Ihrer Anwendung und des Servers dafĂŒr. Derzeit gibt es drei gĂ€ngige Wege:

  • Einen Server selbst zu hosten ist die kostengĂŒnstigste Variante. Allerdings mĂŒssen Sie einen statischen IP-Adresse von Ihrem Anbieter anfordern, damit Ihre Ressource im Laufe der Zeit nicht ihre Adresse Ă€ndert.
  • Einen Dedicated Server (VDS) zu mieten und selbst fĂŒr die Administration und Skalierung der Lasten verantwortlich zu sein.
  • Ein Abonnement bei einem Cloud-Hosting-Anbieter zu bezahlen (oft gibt es kostenlose Testphasen), wo das Preismodell ĂŒblicherweise nutzungsbasiert ist. Zu den bekanntesten Anbietern zĂ€hlen Amazon AWS (ein kostenloses Jahr Nutzung, jedoch mit einer monatlichen Obergrenze) und Google Cloud (300 $ Guthaben, die im Laufe eines Jahres fĂŒr Cloud-Dienste verwendet werden können). Hosting), Yandex.Cloud (gibt 4000 Rubel fĂŒr 2 Monate), Microsoft Azure (bietet kostenlosen Zugang zu beliebten Diensten fĂŒr ein Jahr und zusĂ€tzlich 12.500 Rubel fĂŒr beliebige Dienste fĂŒr einen Monat). Damit können Sie jeden dieser Anbieter testen, ohne einen Cent auszugeben, und gleichzeitig einen Eindruck von der QualitĂ€t und dem Niveau der erbrachten Dienstleistungen gewinnen.

AbhĂ€ngig von dem gewĂ€hlten Ansatz Ă€ndert sich hauptsĂ€chlich, wer die Verantwortung fĂŒr den jeweiligen Bereich der Administration trĂ€gt. Wenn Sie selbst hosten, sollten Sie wissen, dass alle Unterbrechungen, sei es durch StromausfĂ€lle, Internetprobleme oder den Server selbst sowie die darauf installierte Software, vollstĂ€ndig in Ihrer Verantwortung liegen. Dennoch ist dies fĂŒr Lern- und Testzwecke mehr als ausreichend.

Sollten Sie jedoch nicht ĂŒber eine zusĂ€tzliche Maschine verfĂŒgen, die als Server fungieren kann, ziehen Sie möglicherweise die zweite oder dritte Option in Betracht. Die zweite Option ist identisch mit der ersten, wobei Sie jedoch die Verantwortung fĂŒr die VerfĂŒgbarkeit des Servers und dessen Leistung auf den Anbieter ĂŒbertragen. Die Administration des Servers und der Software bleibt weiterhin unter Ihrer Kontrolle.

Und schließlich gibt es die Möglichkeit, KapazitĂ€ten von Cloud-Anbietern zu mieten. Hier können Sie eine automatisierte Verwaltung fĂŒr nahezu alles einrichten, ohne tief in technische Einzelheiten eintauchen zu mĂŒssen. DarĂŒber hinaus können Sie anstelle eines einzelnen Servers mehrere Instanzen parallel betreiben, die beispielsweise unterschiedliche Teile einer Anwendung bedienen, und das ohne signifikante Kostenunterschiede im Vergleich zu einem dedizierten Server. Zudem stehen Ihnen Werkzeuge zur Orchestrierung, Containerisierung, automatischen Bereitstellung, kontinuierlichen Integration und vieles mehr zur VerfĂŒgung! Einige dieser Themen werden wir im Folgenden nĂ€her betrachten.

Im Allgemeinen sieht die Serverinfrastruktur folgendermaßen aus: Wir haben einen sogenannten 'Orchestrator' (Orchestrierung – der Prozess der Verwaltung mehrerer Serverinstanzen), der Änderungen in der Umgebung der Serverinstanz steuert, einen Virtualisierungskontainer (optional, aber oft verwendet), der es ermöglicht, die Anwendung in isolierte logische Schichten zu unterteilen, und Software fĂŒr Continuous Integration, die es ermöglicht, den bereitgestellten Code durch 'Skripte' zu aktualisieren.

Orchestrierung ermöglicht es Ihnen, die Status der Server zu ĂŒberwachen, Updates der Serverumgebung durchzufĂŒhren oder zurĂŒckzusetzen usw. In der Anfangsphase wird dieser Aspekt wahrscheinlich nicht relevant fĂŒr Sie sein, da man fĂŒr die Orchestrierung mehrere Server benötigt (es kann auch nur einer sein, aber wozu?), und um mehrere Server zu haben, muss ein Bedarf an ihnen bestehen. Zu den bekanntesten Werkzeugen in diesem Bereich gehört hauptsĂ€chlich Kubernetes, das entwickelt wurde. Google.

Der nĂ€chste Schritt ist die Virtualisierung auf Betriebssystemebene. Momentan hat sich das Konzept der 'Containerisierung' verbreitet, das von einem Tool stammt. Docker, die isolierte Container bereitstellt, die jedoch im Kontext eines einzigen Betriebssystems ausgefĂŒhrt werden. Was bedeutet das: In jedem dieser Container kann eine Anwendung oder sogar eine Gruppe von Anwendungen gestartet werden, die glauben, sie seien die einzigen in dem gesamten Betriebssystem, ohne die Existenz anderer Prozesse auf derselben Maschine auch nur zu ahnen. Diese Funktion ist besonders nĂŒtzlich, um identische Anwendungen in verschiedenen Versionen oder einfach nur konfliktbeladene Anwendungen zu starten sowie um verschiedene Teile einer Anwendung in Schichten zu unterteilen. Dieses Schicht-Backup kann spĂ€ter in ein Image geschrieben werden, das beispielsweise fĂŒr das Deployment einer Anwendung verwendet wird. Das bedeutet, dass Sie durch das Installieren dieses Images und das Bereitstellen der darin enthaltenen Container eine vollstĂ€ndig betriebsbereite Umgebung fĂŒr die AusfĂŒhrung Ihrer Anwendung erhalten! In den ersten Schritten können Sie dieses Werkzeug sowohl zu Schulungszwecken als auch zur Erzielung eines echten Nutzens verwenden, indem Sie die Logik der Anwendung auf verschiedene Schichten verteilen. Es sei jedoch gesagt, dass Dockerisierung nicht fĂŒr jeden notwendig ist und nicht immer sinnvoll ist. Sie ist sinnvoll, wenn die Anwendung „fragmentiert“ ist, in kleine Teile zerlegt, von denen jeder fĂŒr eine bestimmte Aufgabe verantwortlich ist; die sogenannte „Mikroservice-Architektur“.

DarĂŒber hinaus ist es neben der Bereitstellung der Umgebung auch wichtig, ein effektives Deployment der Anwendung sicherzustellen, das alle Arten von Code-Transformationen, Installationen der zugehörigen Bibliotheken und Pakete, das AusfĂŒhren von Tests, Benachrichtigungen ĂŒber diese Operationen usw. umfasst. Hierbei sollten wir auf das Konzept der „Continuous Integration“ achten (CI – Continuous Integration). Zu den wichtigsten Werkzeugen in diesem Bereich gehören derzeit Jenkins (eine CI-Software, die in Java geschrieben ist und zu Beginn etwas kompliziert erscheinen kann), Travis CI (geschrieben in Ruby, subjektiv etwas einfacher als Jenkins, doch auch hier sind einige Kenntnisse in der Deployment-Konfiguration erforderlich),Gitlab CI (geschrieben in Ruby und Go Jetzt, da wir ĂŒber die Umgebung gesprochen haben, in der Ihre Anwendung laufen wird, ist es an der Zeit, einen Blick auf die Werkzeuge zu werfen, die uns die moderne Welt fĂŒr die Entwicklung dieser Anwendungen bietet.).

Lassen Sie uns mit dem Grundlegendsten beginnen:

Backend Backend (Backend) – der serverseitige Teil. Die Wahl der Programmiersprache, der grundlegenden Funktionen und der vordefinierten Struktur (Framework) wird hier hauptsĂ€chlich durch persönliche Vorlieben bestimmt. Dennoch ist es erwĂ€hnenswert, zur Überlegung (die Meinung des Autors ĂŒber Programmiersprachen ist ziemlich subjektiv, auch wenn sie den Anspruch auf eine objektive Beschreibung erhebt):

  • Python – eine fĂŒr unerfahrene Benutzer ziemlich freundliche Sprache, die einige Fehler verzeiht, gleichzeitig jedoch auch streng mit dem Entwickler sein kann, um zu verhindern, dass etwas Schlechtes produziert wird. Eine bereits recht ausgereifte und sinnvolle Programmiersprache, die 1991 entstanden ist.
  • Go – eine Sprache von Google, ebenfalls sehr benutzerfreundlich und praktisch. Es ist relativ einfach, sie zu kompilieren und eine ausfĂŒhrbare Datei auf jeder Plattform zu erhalten. Sie kann sowohl einfach und angenehm als auch komplex und ernsthaft sein. Neu und jung, wurde sie erst 2009 eingefĂŒhrt.
  • Rust – ist etwas Ă€lter als der vorherige Kollege und wurde 2006 veröffentlicht, immer noch relativ jung im Vergleich zu seinen Verwandten. Sie richtet sich eher an erfahrenere Entwickler, bemĂŒht sich jedoch weiterhin, viele niedrigstufige Aufgaben fĂŒr den Programmierer zu lösen.
  • Java – ein Veteran der kommerziellen Softwareentwicklung, der 1995 eingefĂŒhrt wurde und aktuell einer der am hĂ€ufigsten verwendeten Programmiersprachen fĂŒr die Entwicklung von Unternehmensanwendungen ist. Mit seinen grundlegenden Konzepten und der komplexen Konfiguration der AusfĂŒhrungsumgebung kann es fĂŒr AnfĂ€nger ziemlich herausfordernd werden.
  • ASP.net – eine von Microsoft entwickelte Plattform zur Anwendungsentwicklung. FĂŒr die Implementierung der FunktionalitĂ€ten wird hauptsĂ€chlich die Programmiersprache C# (ausgesprochen C-sharp) verwendet, die im Jahr 2000 entstand. Sie ist in ihrer KomplexitĂ€t vergleichbar mit einem Niveau zwischen Java und Rust.
  • PHP – ursprĂŒnglich zur Vorverarbeitung von HTML verwendet, hĂ€lt es derzeit zwar die absolute MarktfĂŒhrerschaft unter den Programmiersprachen, doch zeigt sich eine Tendenz zur abnehmenden Nutzung. Es zeichnet sich durch eine niedrige EinstiegshĂŒrde und einfache Codeerstellung aus, könnte jedoch beim Entwickeln grĂ¶ĂŸerer Anwendungen in der FunktionalitĂ€t unzureichend sein.

Und der letzte Teil unserer Anwendung – der fĂŒr den Benutzer am greifbarsten ist – Frontend (Frontend) – ist das Gesicht Ihrer Anwendung, mit dem der Benutzer direkt interagiert.

Ohne ins Detail zu gehen, basiert modernes Frontend auf drei SÀulen, Frameworks (und nicht nur) zur Erstellung von BenutzeroberflÀchen. Folglich sind die drei beliebtesten:

  • ReactJS – keine Framework, sondern eine Bibliothek. TatsĂ€chlich unterscheidet sich der stolze Titel eines Frameworks lediglich durch das Fehlen bestimmter Funktionen „out of the box“ und die Notwendigkeit, sie manuell zu installieren. So gibt es einige Varianten der „Zubereitung“ dieser Bibliothek, die eine Art Frameworks bilden. FĂŒr AnfĂ€nger kann es etwas herausfordernd sein aufgrund einiger grundlegender Prinzipien und der recht aggressiven Konfiguration der Build-Umgebung. Allerdings kann man fĂŒr einen schnellen Start das Paket „create-react-app“ nutzen.
  • VueJS – ein Framework zur Erstellung von BenutzeroberflĂ€chen. Von den drei genannten hat es zu Recht den Titel des anfĂ€ngerfreundlichsten Frameworks. Der Einstieg in die Entwicklung mit Vue ist niedriger als bei seinen genannten Verwandten. DarĂŒber hinaus ist es das jĂŒngste unter ihnen.
  • Angular gilt als das komplexeste der genannten Frameworks und erfordert als einziges eine gewisse Vorerfahrung. TypeScript umsteigt. (Erweiterung ĂŒber die Javascript-Sprache). HĂ€ufig verwendet, um große Unternehmensanwendungen zu erstellen.

Zusammenfassend lĂ€sst sich sagen, dass die Bereitstellung von Anwendungen heute völlig anders ablĂ€uft als noch vor einigen Jahren. NatĂŒrlich steht es niemandem im Weg, den "Deployment"-Prozess auf die alte Weise durchzufĂŒhren. Aber ist es das bisschen Zeit, die man zu Beginn spart, wirklich wert, wenn man dabei auf eine Vielzahl an Fallstricken stĂ¶ĂŸt, die Entwickler auf diesem Weg erwarten? Ich denke nicht. Wenn Sie etwas mehr Zeit investieren, um sich mit diesen Werkzeugen vertraut zu machen (es ist nicht viel Aufwand, da Sie nur herausfinden mĂŒssen, ob sie fĂŒr Ihr aktuelles Projekt notwendig sind oder nicht), können Sie dies oft wieder wettmachen, indem Sie beispielsweise die FĂ€lle von unerklĂ€rlichen Fehlern reduzieren, die nur in der Produktionsumgebung auftreten, NĂ€chte damit verbringen, herauszufinden, was zum Serverausfall gefĂŒhrt hat und warum er nicht neu gestartet werden kann, und vieles mehr.

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster