Der beste Weg, um Backend-Webentwicklung zu lernen

In meinem vorherigen Artikel wurde beschrieben, wie Sie in die Frontend-Entwicklung einsteigen können. Es wurde auch besprochen, wie das Frontend ein mit Landminen gefüllter Ort sein kann - treten Sie an den falschen Ort und Sie werden von den vielen Frameworks des JavaScript-Ökosystems überwältigt sein.

Lassen Sie uns in diesem Blog-Artikel sehen, wie Sie in die Back-End-Entwicklung einsteigen können. Unterwegs werde ich einige der häufigsten Fragen beantworten, die mir die Leute dazu stellen.

Was ist Backend-Entwicklung?

Bei der Front-End-Entwicklung wird berücksichtigt, was ein Benutzer auf dem Bildschirm sieht, wenn er eine bestimmte URL öffnet, die Ihnen gehört. Selbst in einer vollständig statischen Umgebung (nur mit HTML / CSS) muss ein Server auf dem Planeten beim Öffnen einer Website mit diesen HTML- und CSS-Dateien auf Sie antworten.

Dieser Server ist nur ein Computer, genau wie der, mit dem Sie selbst im Internet surfen. Es wurde jedoch auf Leistung abgestimmt und enthält keine unnötigen Komponenten wie eine Maus oder eine Tastatur. Und es sitzt mit Tonnen anderer Computer wahrscheinlich in einem Data Warehouse.

Das Programmieren dieser Computer auf spezielle Weise wird als Back-End-Entwicklung bezeichnet .

Sie können denken, dass die Backend-Entwicklung so genannt wird, wie sie ist, weil sie hinter dem Rücken des Benutzers ausgeführt wird. Ein Besucher Ihrer Website "greift" nie wirklich vollständig auf das Back-End zu. Sie kommunizieren einfach mit Ihrem Server, entweder direkt über Ports für einen sehr eingeschränkten Zugriff (wie das Übertragen von HTML / CSS-Dateien) oder nicht einmal das - tief unter CDNs oder Firewalls (wie Cloudflare) vergraben.

Nachdem wir nun genau verstanden haben, was Back-End-Entwicklung bedeutet, wollen wir uns einigen realen Fragen zuwenden.

Sind für das Backend Programmierkenntnisse im Frontend erforderlich?

TLDR; Nein.

Wie oben erwähnt, umfasst die Back-End-Entwicklung die Programmierung eines Computers, der wahrscheinlich auf der anderen Seite des Planeten sitzt und dafür verantwortlich ist, auf die Aussagen Ihrer Benutzer von ihren eigenen Computern aus zu reagieren.

Wenn Sie ein Vollzeit-Backend-Entwickler sind, müssen Sie sich nicht wirklich darum kümmern, was in den HTML-, CSS- und JavaScript-Dateien vor sich geht, die Sie an den Browser des Benutzers senden. Stattdessen müssen Sie sich mehr auf die Leistung des Servers, den Servercode und den Durchsatz konzentrieren.

Was steckt in der Backend-Entwicklung?

Wenn Sie sich die Bücher ansehen, können Sie sagen, dass eine Person, die eine Anwendung codiert, die auf HTTP-Anfragen antworten kann, ein Back-End-Entwickler ist.

In der Realität können Back-End-Entwickler jedoch manchmal viel mehr als nur Server-Skripte schreiben. Sie verfügen über das Wissen, Reverse-Proxy-Server (NGiNX / HAProxy) einzurichten, die Komprimierung und andere Möglichkeiten zur Beschleunigung der Site zu aktivieren und eine Produktions-Docker-Umgebung einzurichten.

Um sich als Back-End-Entwickler zu qualifizieren, würde ich sagen, dass Sie nur folgende Mindestkenntnisse benötigen:

  1. Gute Kenntnisse über eine Programmiersprache, in der Sie HTTP-Server schreiben können. Beispiele: C #, Java, Node, PHP, Python usw. (es gibt viele!)
  2. Verwalten Sie das Hosting mit cPanel (traditionell) oder mit dem Bash-Terminal (Cloud-Hosting / traditionell).
  3. Arbeiten mit Versionskontrollsystemen (VCS) wie git zum Verwalten und Bereitstellen von Builds

Genau wie jedes Spiel mit minimalen und empfohlenen Spezifikationen geliefert wird, lauten meine empfohlenen Spezifikationen für Back-End-Entwickler (einschließlich der minimalen Fähigkeiten):

  1. NGiNX für statische Datei-Assets und Serververwaltung
  2. Kenntnisse im Datenbankmanagement (SQL / NoSQL)
  3. Sicherheit des Backends (Schreiben von sicherem und robustem Code, Ausführen von Anwendungen in Docker-Containern mit eingeschränkten Berechtigungen, Schutz vor DoS-Angriffen)
  4. Autoskalierung / Lastausgleich

Okay, zu viel darüber zu reden, was in die Back-End-Entwicklung fließt. Aber wie wirst du einer?

Beginnen Sie mit Mindestanforderungen

Wie ich bereits sagte, haben wir für das Back-End genau wie für Spiele eine Reihe von Mindestanforderungen und empfohlenen Anforderungen. Die Mindestanforderungen bestehen aus 3 Dingen:

Lernen Sie eine Backend-Programmiersprache

Wenn Menschen selbst lernen, haben sie normalerweise kein Team oder jemanden, der Front-End-Entwicklung durchführen kann. Sie sind alle alleine. Daher müssen Sie zumindest zu Beginn häufig Webseiten und Server selbst erstellen.

Obwohl es viele Möglichkeiten für Back-End-Programmiersprachen gibt, kann ich mir keine beliebte Systemsprache vorstellen, die HTTP-Server nicht sofort unterstützt. Der Vorteil der Auswahl von Node besteht darin, dass Ihre JavaScript-Kenntnisse im Front-End auf das Back-End übertragbar sind.

Sie können jedoch aus einer Vielzahl von Sprachen wie Java, C ++, C #, Python, PHP usw. auswählen.

Wie wählst du eine aus, könnte man fragen. Die Antwort ist die gleiche wie im Front-End-Entwicklungsartikel: Sie müssen zunächst alles ausprobieren und herausfinden, welche am besten zu Ihnen passt.

Der Knoten ist einfach, da Sie möglicherweise bereits die JS-Programmierung für das Front-End durchgeführt haben. Wenn Sie jedoch ein Python- oder Java-Entwickler sind, sind diese möglicherweise leicht zu erlernen. Es hängt von Ihrem Beruf und Geschmack ab.

Erfahren Sie mehr über das Verwalten von Hosting

Vorbei sind die Zeiten, in denen Sie Server manuell kaufen und bei Ihnen zu Hause einrichten, eine Verbindung zu Ihrem ISP herstellen und all diese Dinge selbst erledigen müssen. Dies ist die Ära des Cloud Computing. Wenn Sie Ihre Website hosten, haben Sie hauptsächlich zwei Möglichkeiten:

  1. Entscheiden Sie sich für verwaltete Hosting-Server wie HostGator oder GoDaddy.
  2. Entscheiden Sie sich für Cloud-Hosting-Anbieter wie GCP, AWS oder DigitalOcean.

Was ist der Unterschied zwischen den beiden? In beiden Fällen sind die Server Eigentum der jeweiligen Unternehmen und werden von diesen betrieben. Der Hauptunterschied besteht jedoch darin, dass verwaltetes Hosting GUI-freundlicher ist, über zahlreiche Tools verfügt, mit denen Sie das Dateisystem anzeigen, die Nutzung überwachen, Ihre offiziellen Domain-E-Mails verwalten, Dateien von Ihrem Server hochladen / herunterladen usw. können. Es ist im Grunde ein Setup für Leute mit weniger technischen Fähigkeiten.

Aus diesem Grund empfehle ich erfahrenen Entwicklern keine verwalteten Websites wie HostGator oder GoDaddy. Dennoch könnte es eine gute Plattform sein, um Fehler zu machen und weiter zu lernen, vor allem, weil Sie normalerweise Prepaid-Pläne für sie haben. Sie haben auch eine schöne Benutzeroberfläche zum Verwalten von Dingen, mit der Sie Ihre Rechnungen nicht versehentlich hochschießen können.

Wenn Sie jedoch schneller werden, empfehle ich Ihnen, zu einem Cloud-Anbieter zu wechseln. Dadurch werden alle nützlichen Tools von cPanel entfernt, mit denen Sie Dateien und Ordner auf Servern verwaltet haben. Gleichzeitig wird es Sie herausfordern, Ihre Fähigkeiten erheblich zu verbessern.

Heutzutage bieten viele Cloud-Anbieter auch eine anständige kostenlose Testversion an, damit Sie ihre Plattform tatsächlich ausprobieren können, bevor Sie voll einsteigen. Ich hoste meine Website für Entwickler - codedamn - auf DigitalOcean und finde, dass sie ein gutes Gleichgewicht aufweist Komplexität und Funktionen der Website.

Über diesen Link können Sie sich bei DigitalOcean anmelden und erhalten kostenlos 100-Dollar-Guthaben . DigitalOcean-Instanzen kosten nur 5 US-Dollar pro Monat. Sie haben also eine Start-und Landebahn von etwa 20 Monaten für diese Instanz, sehr viel, oder?

Auf jeden Fall können Sie einen beliebigen Cloud-Anbieter auswählen. Dann ist es wichtig zu lernen, wie man den Server nur über die Befehlszeile verwaltet, indem man ihn ssh'ing.

Erfahren Sie mehr über Versionskontrollsysteme

Neben Git for VCS gibt es noch andere Lösungen. Aber Git ist das am häufigsten verwendete und am einfachsten zu verstehende.

Als Einzelperson werden Sie es möglicherweise nicht sofort zu schätzen wissen. Aber Sie werden verstehen, warum es so wichtig ist, sobald Sie in einem Team an mehreren Funktionen gleichzeitig in Ihrem Projekt arbeiten.

Mit Git können Sie Ihren Workflow mithilfe von Commits und Zweigen verwalten. Commits sind wie Checkpoints in Ihrer Codebasis - diejenigen, auf die Sie immer zurückgreifen können, wenn Sie Fehler machen.

Zweige sind wie alternative Realitäten Ihres Projekts, in denen etwas völlig anderes passieren kann. Diese alternativen Realitäten können zu jedem Zeitpunkt erstellt und jederzeit wieder zusammengeführt werden.

Wenn diese Realitäten mit der Kompatibilität zusammengeführt werden können, ist das in Ordnung. Aber wenn es einen Konflikt gibt (wie wenn Sie in einer Realität leben und in einer anderen tot sind), müssen Sie manuell eine Wahl treffen. Andere Änderungen können automatisch zusammengeführt werden.

Git ist super interessant und sobald Sie es verstanden haben, möchten Sie es in jedem Projekt verwenden. Sie können eine Historie Ihrer Arbeit auf effiziente Weise führen (sie komprimiert und speichert nur den Unterschied zwischen Commits).

Außerdem können Sie Online-Git-Repositorys auf Websites wie GitHub erstellen, die als zentrale Quelle der Wahrheit für Ihre Website dienen. Websites wie GitHub können mit speziellen Webhooks konfiguriert werden, die Ihre Website tatsächlich aktualisieren können, wenn Sie einen neuen Prüfpunkt (ein neues Commit) hinzufügen, ohne dass Sie jemals manuell zum Server gehen und ihn selbst aktualisieren müssen.

Gehen Sie für empfohlene Fähigkeiten

Ich glaube fest daran, durch Lernen zu lernen. Und der beste Weg, etwas zu tun, kommt aus der Notwendigkeit oder dem Interesse. Sobald Sie sich mit den Mindestanforderungen für gut genug halten, ist es Zeit, die empfohlenen Fähigkeiten zu erwerben. Dies umfasst alle oben genannten Tools wie Docker und NGiNX.

DevOps passt auch sehr gut zu Back-End-Entwicklern. Sie können versuchen, TravisCI oder CircleCI für automatisierte Build-Bereitstellungen zu erkunden . Kontinuierliche Integration und Bereitstellung (CI / CD) ist ein Thema, das einen weiteren Blog-Beitrag umfassen könnte, daher werde ich nicht darauf eingehen. Sobald es richtig eingerichtet ist, sparen Sie eine lächerliche Menge an Entwicklerzeit!

Dann kommen Datenbanken, die ich in empfohlenen Fähigkeiten platziert habe. Aber Sie benötigen Datenbanken für so ziemlich jede Anwendung, die eine vom Benutzer generierte Datenpersistenz beinhaltet.

Datenbanken sind normalerweise leicht zu bearbeiten, aber schwieriger zu warten und richtig zu optimieren. Der beste Weg, um mit der Arbeit an einem Back-End-Tech-Stack zu beginnen, besteht darin, alles auf einem einzigen Server zusammen zu haben - den Code Ihrer Anwendung, die Reverse-Proxy-Server, die Datenbank usw. Wenn Sie sich in jeder Sache besser auskennen, können Sie dies tun entkoppeln Sie es von der bestehenden Geschäftslogik.

Auf diese Weise aktivieren Sie eine Architektur, die hoch skaliert werden kann. Eine datenbankbetriebsintensive Anwendung könnte eine optimierte Lösung für Datenbanken haben. Und eine Site mit hohem Datenverkehr sollte über einen guten CDN-Mechanismus verfügen, um statische Assets usw. auszulagern.

Fazit

Es gibt so viel zu lernen, aber es ist alles erreichbar, wenn Sie nicht aufgeben. Lassen Sie mich über meine Twitter- und Instagram- Handles wissen, was Sie über diesen Beitrag denken . Es wird mir sehr viel bedeuten, wenn wir uns dort verbinden!

Wenn Sie interessiert sind, besuchen Sie auch codedamn - eine entwicklerorientierte Plattform für Lerntechnologien wie die Backend-Entwicklung! Ich habe sogar ein YT-Video über das Hochfahren Ihres eigenen einfachen Website-Servers in 2 Minuten gepostet! Schau dir das an und lass mich wissen, was du denkst!

Frieden!