Was muss ich über Server in einer Webentwicklungsrolle wissen? [geschlossen]

12

Ich weiß, dass das ein bisschen vage klingen mag, also werde ich versuchen, es ein bisschen weiter zu erklären ...

Nachdem ich viele Jahre selbstständiger Entwickler war, bin ich jetzt auf der Suche nach einer kommerziellen Webentwickler-Rolle. Meine einzige Erfahrung mit Servern und Hosting ist das Hochladen über FTP und ein wenig Herumspielen mit CPanel / WHM. Die Rollen, die ich anstrebe, sind Webentwicklung, PHP, MySQL, HTML, CSS, aber in den letzten Interviews wurden mir Fragen zum Einrichten von Dingen auf dem Server gestellt, von denen ich keine Ahnung hatte, was gesagt wurde ... was nicht ideal war!

Ohne mehr zu wissen als ich, ist es schwer zu erklären, was genau ich lernen möchte, aber es sind im Grunde nur die Serverelemente, die ich als Webentwickler kennen sollte? Haben Sie als Webentwickler mit dem Server zu tun, abgesehen vom Hochladen von Dateien, und wenn ja, mit was? Sind Dinge wie Subversion (SVN) und Versionskontrollsysteme oft vom Webentwicklungsteam eingerichtet worden? Könnte es das sein, worüber sie gesprochen haben?

John
quelle
2
mögliches Duplikat von Was sollte jeder Programmierer über Webentwicklung wissen?
Dan Pichelman
3
Ich denke, dieses ist über Bediener zwar spezifischer :)
Michael Durrant
2
Ich hasse es, es Ihnen vorzuenthalten, aber wenn Sie keinen Webserver konfigurieren können, sind Sie kein sehr wertvoller Webentwickler und es ist nicht etwas, das Sie schnell in einem Buch lernen können. Anstatt einen halben Arsch damit zu tun, Serverkomponenten aus einem Buch zu lernen. Sie sind besser dran, Ihre PHP-Kenntnisse zu perfektionieren und sich als PHP-Programmierer zu bewerben.
Reactgular
@MathewFoscarini, weil ich nicht gut darin bin, sollte ich es vermeiden und nur das perfektionieren, was ich weiß? Würde dieser Rat die Welt nicht zum Stillstand bringen? not a very valuable web developerist das, was ich zu überwinden versuche, also bin ich froh, es richtig zu lernen. Ich weiß einfach nicht, wie ich dieses Lernen am besten angehen soll und auf welche Bereiche ich mich zuerst konzentrieren soll.
John
@john Du hast im Rahmen einer Anstellung als Webentwickler gefragt. Etwas, für das Sie nicht qualifiziert sind. Wenn es das ist, als was Sie angestellt werden möchten, dann versuchen Sie es auf jeden Fall, aber erwarten Sie keine kurzfristige Lösung für die Beantwortung von Fragen in einem Interview. Ich würde erwarten, dass der Arbeitgeber versucht, Kandidaten auszusondern, die keine praktische Berufserfahrung auf Servern haben. Mein Eindruck von Ihrer Frage war, dass Sie versuchen, eine Arbeit zu finden, die Sie als Freiberufler nicht können. Sie können versuchen, einen Kunden zu finden, der bereit ist zu zahlen, wenn Sie diese Serverfähigkeiten erlernen.
Reactgular

Antworten:

10

Dies ist eine große Reihe von Fragen, aber ich vermute, dass viele Leute sich damit auseinandersetzen müssen, vor allem, wenn sie anfangen, in einer Karriere voranzukommen, die mit einem starken Fokus auf das Front-End begann.

Sie erwähnen, dass Sie sich für eine Rolle entscheiden, die PHP- und MySQL-Entwicklung umfasst. Dies sind Dinge, die auf dem Server ausgeführt werden müssen. Um als Entwickler gute technische Entscheidungen treffen zu können, müssen Sie verstehen, wie diese Dinge auf dem Server funktionieren und wie sie mit dem Web-Front-End interagieren. Sie müssen also unbedingt ein Verständnis für den Server entwickeln.

Anstatt zu versuchen, das genaue Wissen, das Sie möglicherweise über den Server benötigen, im Voraus herauszufinden, würde ich empfehlen, selbst einzutauchen und etwas zu erstellen, einschließlich der Installation der gesamten serverseitigen Software. Eine großartige Möglichkeit, Ihre Füße nass zu machen, besteht darin, Linux auf Ihrem Computer zu installieren. Sie können so etwas wie VirtualBox verwenden, um es neben Ihrem aktuellen Betriebssystem laufen zu lassen. Installieren Sie MySQL, installieren und konfigurieren Sie den Server für PHP und versuchen Sie, alles zusammenzubringen. Das Tolle ist heutzutage, dass ein mäßig gut ausgestatteter Laptop all dies ausführen und der "Server" sein kann.dies am Anfang schwierig sein kann, insbesondere wenn Sie keine Erfahrung mit Linux und der Befehlszeile haben. Als Entwickler sollten Sie mindestens genug wissen, um diese Übung bestehen zu können, und Sie erhalten einen schnellen Einstieg, um herauszufinden, wie Sie Ihr Wissen erweitern können.

Es gibt drei Bereiche, in denen Sie wahrscheinlich auf dem Laufenden bleiben müssen:

  1. Die Grundlagen des Linux-Betriebssystems. Beginnen Sie vielleicht mit einer einfach zu installierenden Distribution wie Ubuntu.
  2. Einrichten eines Webservers und von PHP. Die Installation von Apache ist ein guter Anfang. Es gibt andere Alternativen, aber hier fangen die meisten Menschen an.
  3. Erlernen der Grundlagen der Installation und Ausführung von MySQL. Zumindest müssen Sie als Entwickler wahrscheinlich in der Lage sein, DDL zu schreiben, um Tabellen und andere Strukturen in der Datenbank zu erstellen, und Sie müssen definitiv in der Lage sein, die Datenbank auf dem Server abzufragen, um Daten zu durchsuchen und sicherzustellen, was Ihre ist Anwendung spuckt Übereinstimmungen aus, die in der Datenbank enthalten sind.

Wenn Sie mit Ubuntu arbeiten möchten, können Sie die grundlegenden Anweisungen hier befolgen , um sich in Betrieb zu nehmen. Beachten Sie, dass Sie einige Vorbereitungen für Linux-Grundlagen treffen müssen, bevor Sie mit der Installation und dem Spielen mit den Webservern / Datenbankkomponenten beginnen.

In Bezug auf die Art und Weise, wie Entwickler mit dem Server interagieren müssen, ist dies, abgesehen vom Hochladen von Dateien, von Organisation zu Organisation sehr unterschiedlich.

  1. Die Entwickler kümmern sich häufig um die Administration zumindest der Entwicklungsumgebung. Manchmal sind es Entwickler, die das Revisionskontrollsystem (z. B. SVN) und den Bereitstellungsprozess (Verschieben von Code zwischen Umgebungen) einrichten.
  2. Zumindest müssen Entwickler ein Versionskontrollsystem verwenden, das sich auf dem Server befindet.
  3. Sie müssen auch in den Protokollen auf einem Server nachsehen, welche Nachrichten generiert werden, um Probleme zu diagnostizieren und zu beheben.
  4. Möglicherweise müssen Sie mit einem Infrastruktur-Team zusammenarbeiten, um beispielsweise die Netzwerkkonfiguration oder die Speicherkonfiguration des Servers zu ermitteln. Oft sind Anwendungsprobleme eine Kombination aus Konfiguration und Code.

Der Punkt ist, dass es keine einzige Antwort dafür gibt, wie genau Sie den Server berühren müssen, aber im Laufe Ihrer Karriere wird es sicherlich nicht nur darum gehen, Dateien über so etwas wie FTP hochzuladen. Erste Schritte mit dem Erlernen der Grundlagen werden helfen.

DemetriKots
quelle
Tolle Antwort, danke! Wenn ich "Mamp" für die lokale Arbeit einrichte, ist das dasselbe, aber ohne Zugang zur Außenwelt? Ich habe ein paar Linux-Betriebssysteme installiert und weiß ein wenig über Befehlszeilen Bescheid, aber nichts, woran ich mich leicht erinnern kann. Mein Wissen über Server ist nicht vorhanden, aber ich denke immer, dass auf sie nur über die Befehlszeile zugegriffen wird und nicht wie auf ein benutzerfreundliches Betriebssystem. Ist das der Fall?
John
2
Verwenden Sie am besten die Befehlszeile. Bei den meisten "echten" Webservern handelt es sich um Remotecomputer, auf denen keine grafische Benutzeroberfläche installiert ist.
GroßmeisterB
2
Wie @GrandmasterB schrieb, ist es nützlich, die Befehlszeile in die Hand zu nehmen. Meiner Meinung nach ist Linux eine gute Lernplattform, da es Sie dazu zwingt, "dem Metall nahe" zu kommen, um zu lernen, was das Betriebssystem über das hinaus tut, was Sie auf dem Bildschirm sehen. Sehen Sie sich die Datei httpd.conf an, und erfahren Sie, was der Webserver tatsächlich tut und wie sich das PHP-Modul in ihn integriert. Wenn Sie ein grundlegendes Verständnis für die Plattform erhalten, werden Sie zu einem besseren Entwickler.
DemetriKots
Ich bin vor ein paar Jahren von Linux auf Windows Server umgestiegen und habe nie zurückgeschaut. Linux ist großartig und leistungsstark, aber Sie müssen sich für die Tools entscheiden, die den Anforderungen des Jobs am besten entsprechen.
Reactgular
2

Mein erster Rat ist, sich nicht ausschließlich auf eine Rolle zu beschränken. Es ist großartig, ein Spezialist zu sein und ein tiefes Wissen über bestimmte Fähigkeiten zu besitzen (zum Beispiel PHP). Genauso wichtig ist es jedoch, ein breites Wissen zu haben, das sich über den Rest Ihrer Domain erstreckt.

Nach meiner Erfahrung suchen die meisten Teams nicht jemanden, der über das Wissen verfügt, die Kernfunktionalität von PHP neu zu schreiben, sondern jemanden, der mit jedem Problem fertig wird, das auf sie zukommt (obwohl dieses Wissen sicherlich nicht schaden würde). Oder zumindest jemand, der helfen kann, Probleme zu lösen, auf die das Team stößt. Stellen Sie sich zum Beispiel eine Situation vor, in der Ihre Anwendung ausfällt und Kunden betroffen sind. Sie können entweder Ihre Hände hochlegen und sagen "Ich habe keine Ahnung, was zu tun ist ..." oder Sie können SSH auf dem Server ausführen, Protokolle scannen, feststellen, dass der Speicherplatz eines bestimmten Dateisystems voll ist, und fortfahren, um es zu bereinigen. Dies ist ein kleines Beispiel, aber ich denke, der Punkt ist klar. Mit diesem Grundwissen, als Entwickler, Sie könnten ein Skript schreiben, das dieses bestimmte Dateisystem überwacht und es bereinigt, sobald es einen bestimmten Schwellenwert erreicht. Sie sind jetzt für Ihren Vorgesetzten um so wertvoller geworden.

Eine andere Sache, die ich in meiner Karriere gelernt habe, ist, dass sich die Dinge schnell entwickeln und wenn Sie nicht mithalten, werden Sie zurückgelassen. Je mehr Sie über Ihre gesamte Umgebung (einschließlich der geschäftlichen Aspekte) wissen, desto besser sind Sie. Das heißt nicht, dass Sie in allem, was Sie tun, ein Experte sein müssen, aber zumindest das Wissen haben müssen, um nicht als ahnungslos eingestuft zu werden. Je vertrauter Sie sind, desto anpassungsfähiger sind Sie und desto wertvoller sind Sie für Ihr Unternehmen.

Um Ihre Fragen gezielt zu beantworten ...

  • Welche Serverelemente sollte ich als Entwickler kennen?

Machen Sie sich mit dem gesamten Anwendungsstapel vertraut. Wissen, welche Webserver, Datenbanken, Caching-Mechanismen usw. verwendet werden. Und welche Versionen auch. Machen Sie sich so vertraut, dass Sie die Umgebung auf Ihrem eigenen Server neu erstellen können. Was an und für sich lebenswichtig ist. Sie sollten mehr oder weniger die gleichen Umgebungen in Entwicklung und Produktion anstreben, um Überraschungen zu vermeiden ( http://12factor.net/dev-prod-parity ).

  • Was haben Sie als Entwickler mit dem Server zu tun?

Das hängt wirklich vom Team ab. In meinem speziellen Fall spielen die Entwickler eine große Rolle bei der Inszenierung der Umgebungen. Wir sind mit der Funktionsweise der Anwendung am besten vertraut und können daher am besten ermitteln, welche Servertechnologien für die Ausführung der Anwendung vorhanden sind. Ich stelle mir vor, dass nicht alle Teams eine solche praktische Herangehensweise haben. Es ist jedoch ein großer Vorteil, über ausreichende Kenntnisse zu verfügen, um sich in die Diskussionen einbringen zu können. Insbesondere in Bezug auf die Versionskontrolle sind Sie als Entwickler stark von der Auswahl der Technologie (Git, Subversion, Mercurial usw.) betroffen und sollten sich daher bemühen, sich in den Entscheidungsprozess einzubeziehen.

Also, was jetzt?

Was meinen Vorschlag betrifft, wie ich am besten vorgehen kann, um all dies zu lernen? Bewegen Sie Ihre Füße . Machen Sie sich keine Sorgen, wenn Sie versuchen, alles zu lesen, was Sie zu diesem Thema können. Das meiste davon wird wahrscheinlich erst dann aus Ihrem Gehirn austreten, wenn Sie fertig sind. Beginnen Sie stattdessen, etwas von Grund auf neu zu entwickeln. Beginnen Sie mit Vagrant ; Auf diese Weise können Sie auf einfache Weise eine virtuelle Maschine erstellen und verwalten, die Sie als neuen Spielplatz verwenden können. Installieren Sie dann einen Webserver und eine Datenbank und beginnen Sie mit der Erstellung. Wenn Sie eine Idee für eine App haben, machen Sie es perfekt. Wenn nicht, finden Sie ein Tutorial oder versuchen Sie, eine vorhandene App neu zu erstellen. Es geht nur darum, sich mit dem gesamten Prozess vertraut zu machen. Als PHP-Entwickler sollten Sie auch unbedingt PHP: The Right Way ausprobieren... es enthält wirklich viele exzellente Infos. Und vor allem: Stress dich nicht aus. Ich stelle mir vor, Sie sind dem Weg eines Entwicklers gefolgt, weil es etwas ist, das Ihnen Spaß macht und an dem Sie leidenschaftlich sind ... verlieren Sie das nicht aus den Augen!

JC Yamokoski
quelle
1

Konzentration auf Was müssen Sie über Server wissen, um ein Webentwickler zu sein? ...

Eigentlich überraschend wenig. Ihre Hauptkenntnisse sollten Programmierung, HTML, PHP usw. sein.

Was Sie wissen müssen, ist, wie Sie Dinge lokal ausführen und wenn Sie dies tun, verwenden Sie Ihre Box als "Server". Wenn Sie also lokal ausführen, verwenden Sie einen Webbrowser, um die Seiten anzuzeigen, genau wie bei jeder anderen Internetseite ... außer Ihrer http://localhostoderhttp://127.0.0.1

Was die Konfiguration von CGI, HTTP usw. angeht, muss man das wohl nicht wissen. Sie können jederzeit ein allgemeines Buch zum Einrichten eines Webservers für das Betriebssystem durcharbeiten, in dem Sie arbeiten. Dies würde ausreichen, um die allgemeinen Bedingungen zu kennen.

Für den größeren Überblick empfehle ich, sich mit Linux vertraut zu machen und zu lernen, wie Maschinen wie Webserver eingerichtet und konfiguriert werden. Aber nur, wenn Sie tatsächlich ein Interesse an dem Zeug haben. Nicht nur um in Interviews zu beeindrucken.

Abschließend würde ich empfehlen, dass Sie in Interviews Notizen zu Bereichen machen, über die Sie nicht genug wissen. Es wäre hilfreich, wenn Ihre Frage genauer wäre, welche Begriffe usw. Sie nicht kennen.

Michael Durrant
quelle
Vielen Dank. Ich würde sowieso gerne lernen, wenn es die Zeit erlaubt. Würde mir ein "Linux für Dummies" -Typbuch hier weiterhelfen. Ich ziehe in Kürze um. Ist das Hosting von Amazon AWS Cloud etwas, das mir mit ein wenig Arbeit nützen würde, oder ist es völlig anders?
John
1
Ich würde kein Dummies-Buch benutzen. Vieles mag nicht relevant sein. Ich würde versuchen, etwas wie die Verwaltung von Webservern zu überfliegen
Michael Durrant
ja, starte Linux als deine Entwicklungsmaschine und richte darauf einen Webserver ein. Gewöhnen Sie sich daran, damit zu spielen und es zu konfigurieren. So lernst du genug. Das ist im Grunde, wie Sie am Arbeitsplatz lernen. Die Hälfte des Materials befindet sich unter der Kontrolle von Sysadmins, was anfangs gut sein kann, aber wenn Sie vorankommen, werden Sie es vorziehen, mehr Kontrolle über das Setup selbst zu haben.
wobbily_col
0

Sie müssen die folgenden Dinge wissen, um den Webentwicklungszyklus abzuschließen.

1) IDE (Netbeans und Eclipse usw.)

2) Beliebige Programmiersprache für die Codierung. (PHP, Java usw.)

3) Front-Technologie zur Seitengestaltung (HTML, CSS etc.)

4) Gesicherte Datenbank zum Speichern und Abrufen von Daten. (MySQL usw.)

3) Versionskontrollsystem zum Überprüfen und Abrufen Ihres Code-Formular-Repositorys.

4) Build-Tool zum Kompilieren von Code mit abhängigen Dateien. (Ameise, Maven)

6) Webserver zum Bereitstellen und Ausführen von Code.

7) Sie müssen den grundlegenden Bereitstellungsprozess über Server kennen, um Ihre Web- und EJB-Komponente ausführen und testen zu können. (Tomcat, Web-Logic Server)

Ratnesh Dubey
quelle
0

Neben der Antwort von DemetriKots möchte ich auch Lösungen für die automatisierte Bereitstellung und die kontinuierliche Integration erläutern. Die anfängliche Einrichtung des Servers ist nur ein Schritt, und die Bereitstellung über FTP ist schmerzhaft und fehleranfällig. Es gibt keine geeignete Lösung für das Zurücksetzen fehlerhafter Bereitstellungen.

  • Hudson - Continuous Integration Server
  • Phing - automatisiertes Build-Tool, speziell für PHP, basierend auf Ant
  • Ant - automatisiertes Build - Tool
  • Capistrano - Erstellen Sie Bereitstellungsskripts, um die Bereitstellung Ihrer Webanwendung zu automatisieren und zu vereinfachen.
Kikimac
quelle