Que dois-je savoir sur les serveurs dans un rôle de développement Web? [fermé]

12

Je sais que cela peut sembler un peu vague, alors je vais essayer d'expliquer un peu plus loin ...

Après avoir été développeur indépendant pendant de nombreuses années, je suis maintenant à la recherche d'un rôle de développeur web commercial. Ma seule expérience avec les serveurs et l'hébergement est le téléchargement via FTP et le jeu avec CPanel / WHM un peu. Le rôle que je cherche est le développement Web PHP, MySQL, HTML, les rôles de type CSS, mais dans de récentes interviews, on m'a posé des questions sur la configuration des choses sur le serveur, que je n'avais aucune idée de ce qui se disait ... ce qui n'était pas idéal!

Sans en savoir plus que moi, il est difficile d'expliquer exactement ce que je cherche à apprendre, mais ce sont essentiellement les éléments du serveur que je devrais connaître en tant que développeur Web? Si vous êtes un développeur Web, avez-vous des relations avec le serveur en dehors du téléchargement de fichiers, et si oui, quoi? Est-ce que des choses comme Subversion (SVN) et des systèmes de contrôle de version sont souvent mis en place par l'équipe de développement Web, est-ce que cela pourrait être ce dont ils parlaient?

John
la source
2
doublon possible de Qu'est
Dan Pichelman
3
Je pense que celui-ci est plus spécifique sur les serveurs cependant :)
Michael Durrant
2
Je déteste vous le dire, mais si vous ne pouvez pas configurer un serveur Web, vous n'êtes pas un développeur Web très précieux et ce n'est pas quelque chose que vous pouvez apprendre rapidement dans un livre. Plutôt que de faire un demi-travail pour apprendre les composants du serveur à partir d'un livre. Il vaut mieux perfectionner vos compétences PHP et postuler en tant que programmeur PHP.
Reactgular
@MathewFoscarini parce que je ne suis pas bon dans ce domaine, je dois l'éviter et ne perfectionner que ce que je sais? Ce conseil ne provoquerait-il pas l'arrêt du monde? not a very valuable web developerest ce que j'essaie de surmonter, donc je suis heureux de l'apprendre correctement, je ne sais tout simplement pas comment procéder au mieux pour cet apprentissage et sur quels domaines se concentrer en premier.
john
@john Vous avez demandé dans le contexte d'être embauché en tant que développeur Web. Quelque chose pour lequel vous n'êtes pas qualifié. Si c'est comme cela que vous souhaitez être embauché, alors allez-y, mais ne vous attendez pas à une solution à court terme pour répondre aux questions lors d'une interview. Je m'attendrais à ce que l'employeur tente d'éliminer les candidats qui n'ont pas d'expérience de carrière pratique en travaillant sur des serveurs. Mon impression de votre question était que vous essayez d'obtenir un emploi faisant ce que vous ne pouviez pas faire en tant que pigiste. Vous pouvez essayer de trouver un client prêt à payer pendant que vous apprenez ces compétences de serveur.
Reactgular

Réponses:

10

C'est une grande série de questions, mais je soupçonne une question que beaucoup de gens doivent aborder, en particulier lorsqu'ils commencent à progresser dans une carrière qui a commencé avec une forte concentration sur le front-end.

Vous mentionnez que vous optez pour un rôle qui inclut le développement PHP et MySQL. Ce sont des choses qui doivent s'exécuter sur le serveur. Pour être en mesure de faire de bons jugements techniques en tant que développeur, vous devez comprendre comment ces choses fonctionnent sur le serveur et comment elles interagissent avec le front-end Web. Donc, vous devez clairement développer une compréhension du serveur.

Plutôt que d'essayer de comprendre à l'avance le corps exact de connaissances dont vous pourriez avoir besoin sur le serveur, je vous recommande de plonger et de construire quelque chose, y compris l'installation de tous les logiciels côté serveur vous-même. Un excellent moyen de se mouiller les pieds est d'installer Linux sur votre ordinateur. Vous pouvez utiliser quelque chose comme VirtualBox pour le laisser fonctionner avec votre système d'exploitation actuel. Installez MySQL, installez et configurez le serveur pour PHP et essayez de faire fonctionner tout ensemble. La grande chose est, ces jours-ci, un ordinateur portable modérément bien équipé peut exécuter tout cela et être le "serveur".Cela pourrait être difficile au début, surtout si vous n'avez pas d'expérience avec Linux et la ligne de commande. En tant que développeur, vous devez au moins en savoir suffisamment pour pouvoir passer à travers cet exercice et cela vous donnera un bon départ pour trouver comment approfondir vos connaissances.

Il y a trois domaines dans lesquels vous devrez probablement vous mettre à niveau:

  1. Les bases du système d'exploitation Linux. Commencez peut-être par une distribution facile à installer comme Ubuntu.
  2. Mise en place d'un serveur web et PHP. L'installation d'Apache est un bon point de départ. Il existe d'autres alternatives, mais c'est là que la plupart des gens commencent.
  3. Apprendre les bases de l'installation et de l'exécution de MySQL. À tout le moins, en tant que développeur, vous devrez probablement être capable d'écrire DDL pour créer des tables et d'autres structures dans la base de données et vous devrez certainement pouvoir interroger la base de données sur le serveur pour explorer les données et vous assurer de ce que votre l'application crache correspond à ce qui est dans la base de données.

Si vous deviez utiliser Ubuntu, vous pouvez suivre les instructions de base ici pour vous mettre en route. Remarque, vous devrez faire un peu de montée en puissance sur les bases de Linux avant de commencer à installer et à jouer avec les serveurs Web / composants de base de données.

En ce qui concerne la façon dont les développeurs doivent interagir avec le serveur, au-delà du téléchargement de fichiers, je pense que cela varie beaucoup d'une organisation à l'autre.

  1. Les développeurs s'occupent souvent de l'administration d'au moins l'environnement de développement. Parfois, ce sont les développeurs qui mettent en place le système de contrôle des révisions (par exemple SVN) et le processus de déploiement (déplacement du code entre les environnements).
  2. Pour votre point, au moins les développeurs devront utiliser le système de contrôle des révisions qui vit sur le serveur.
  3. Vous devrez également faire des choses comme regarder les journaux sur un serveur pour voir quels messages sont générés pour aider à diagnostiquer et résoudre les problèmes.
  4. Vous devrez peut-être travailler avec une équipe d'infrastructure pour déterminer des éléments tels que la configuration réseau ou la configuration de stockage du serveur. Souvent, les problèmes d'application sont une combinaison de la configuration et du code.

Le fait est qu'il n'y a pas une seule réponse pour savoir exactement comment vous devrez toucher le serveur, mais au cours de votre carrière, cela ira certainement au-delà du téléchargement de fichiers via quelque chose comme FTP. Commencer par apprendre les bases maintenant vous aidera.

DemetriKots
la source
Excellente réponse, merci! Donc, quand je mets en place «Mamp» pour le travail local, est-ce la même chose mais sans accès au monde extérieur? J'ai installé quelques systèmes d'exploitation Linux et je connais quelques trucs en ligne de commande, mais rien dont je me souvienne facilement. Ma connaissance des serveurs est inexistante, mais je pense toujours à eux comme étant accessibles uniquement par ligne de commande, et non comme un système d'exploitation convivial, est-ce le cas?
john
2
Il est préférable d'être à l'aise avec la ligne de commande. La plupart des «vrais» serveurs Web avec lesquels vous aurez affaire seront des machines distantes et n'auront pas d'interface graphique installée.
GrandmasterB
2
Comme l'a écrit @GrandmasterB, il est utile de se familiariser avec la ligne de commande. À mon avis, Linux est une bonne plate-forme d'apprentissage, car il vous oblige à vous rapprocher du métal en apprenant ce que le système d'exploitation fait au-delà de ce que vous voyez à l'écran. Regardez le fichier httpd.conf, comprenez ce que fait réellement le serveur Web et comment le module PHP s'y intègre. Obtenez une compréhension fondamentale de la plate-forme et cela fera de vous un meilleur développeur.
DemetriKots
Je suis passé de Linux à des serveurs Windows il y a quelques années et je n'ai jamais regardé en arrière. Linux est génial et puissant, mais vous devez utiliser les outils qui correspondent le mieux aux exigences du travail.
Reactgular
2

Mon premier conseil est de ne pas vous limiter exclusivement à un seul rôle. C'est formidable d'être un spécialiste et d'avoir une connaissance approfondie d'un ensemble de compétences particulier (PHP, par exemple). Cependant, il est tout aussi important d'avoir une vaste connaissance qui couvre le reste de votre domaine.

D'après mon expérience, la plupart des équipes ne cherchent pas à embaucher quelqu'un qui a les connaissances pour réécrire les fonctionnalités de base de PHP, mais plutôt quelqu'un qui peut gérer tout problème qui leur est posé (bien que ce niveau de connaissance ne nuise certainement pas). Ou au moins quelqu'un qui peut aider à résoudre tous les problèmes rencontrés par l'équipe. Par exemple, imaginez une situation dans laquelle votre application tombe en panne et les clients sont affectés. Vous pouvez soit lever les mains et dire "Je n'ai aucune idée de quoi faire ..." ou vous pouvez SSH sur le serveur, commencer à analyser les journaux, remarquer que l'espace disque d'un système de fichiers particulier est plein et procéder au nettoyage. Ceci est un exemple mineur mais je pense que le point est clair. Avec ces connaissances de base, en tant que développeur, vous pouvez écrire un script qui surveille ce système de fichiers particulier et le nettoie une fois qu'il atteint un certain seuil. Vous êtes maintenant devenu beaucoup plus précieux pour votre manager.

Une autre chose que j'ai apprise au cours de ma carrière, c'est que les choses avancent vite et si vous ne suivez pas, vous allez être laissé pour compte. Plus vous en savez sur tout votre environnement (y compris les aspects commerciaux), mieux vous vous portez. Cela ne veut pas dire que vous devez être un expert dans tout ce que vous faites, mais au moins avoir les connaissances nécessaires pour ne pas être étiqueté comme étant désemparé. Plus vous êtes familier, plus vous êtes adaptable et plus un atout est précieux pour votre entreprise.

Pour répondre spécifiquement à vos questions ...

  • Quels éléments de serveur dois-je connaître en tant que développeur?

Familiarisez-vous avec l'ensemble de la pile d'applications. Sachez quel serveur Web, base de données, mécanismes de mise en cache, etc. qui sont utilisés. Et quelles versions aussi. Ayez suffisamment de familiarité pour pouvoir recréer l'environnement sur votre propre serveur. Ce qui, en soi, est d'une importance vitale. Vous devez vous efforcer d'avoir plus ou moins les mêmes environnements de développement et de production, car cela réduit les surprises ( http://12factor.net/dev-prod-parity ).

  • En tant que développeur, quelles relations entretenez-vous avec le serveur?

Cela dépend vraiment de l'équipe. Dans mon cas particulier, les développeurs jouent un rôle énorme dans la mise en scène des environnements. Nous connaissons le fonctionnement interne de l'application et sommes donc les mieux placés pour déterminer quelles technologies de serveur sont en place pour l'exécuter. J'imagine que toutes les équipes n'ont pas une telle approche pratique, mais avoir suffisamment de familiarité pour pouvoir s'impliquer dans les discussions est un grand avantage. Plus précisément, en ce qui concerne le contrôle de version, vous, en tant que développeur, êtes très affecté par la technologie choisie (Git, Subversion, Mercurial, etc.) et devez donc vous efforcer de vous impliquer dans le processus de décision.

Et maintenant?

Quant à ma suggestion sur la meilleure façon d'aborder l'apprentissage de tout cela? Déplacez vos pieds . Ne vous inquiétez pas d'essayer de lire tout ce que vous pouvez sur le sujet, la plupart s'écouleront probablement de votre cerveau au moment où vous aurez terminé. Au lieu de cela, commencez à développer quelque chose à partir de zéro. Commencez avec Vagrant ; il vous permettra de créer et de gérer facilement une machine virtuelle que vous pourrez utiliser comme nouveau terrain de jeu. Ensuite, installez un serveur Web et une base de données et commencez à créer. Si vous avez une idée d'application, parfait, allez-y ... sinon, trouvez un tutoriel ou essayez de recréer une application existante. Il s'agit simplement de se familiariser avec l'ensemble du processus. De plus, en tant que développeur PHP, assurez-vous de consulter PHP: The Right Way... il contient vraiment beaucoup d'excellentes informations. Et surtout, ne vous stressez pas. J'imagine que vous avez suivi le chemin d'un développeur parce que c'est quelque chose que vous aimez et que vous êtes passionné ... ne perdez pas de vue cela!

JC Yamokoski
la source
1

Se concentrer sur ce que vous devez savoir sur les serveurs pour être développeur Web? ...

En fait, étonnamment peu. Vos principaux domaines de connaissances devraient être la programmation, le HTML, le PHP, etc.

Ce que vous devez savoir, c'est comment exécuter les choses localement et lorsque vous faites cela, vous utilisez votre box comme un «serveur». Ainsi, lorsque vous exécutez localement, vous utilisez un navigateur Web pour afficher les pages, comme avec tout site Internet ... sauf que le vôtre le sera http://localhostouhttp://127.0.0.1

Quant à la configuration de cgi, http, etc. Je ne m'attends pas à ce que vous ayez besoin de le savoir. Vous pouvez toujours parcourir un livre général sur la configuration d'un serveur Web pour le système d'exploitation dans lequel vous travaillez et ce serait une couverture suffisante pour connaître les conditions générales.

Pour une vue d'ensemble, je recommande d'entrer dans Linux et d'apprendre à installer et configurer des machines telles que des serveurs Web. Mais seulement si vous vous intéressez réellement à ces choses. Pas seulement pour impressionner lors des interviews.

Enfin, je vous recommanderais d'envisager de prendre des notes lors des entretiens sur des domaines que vous ne connaissez pas suffisamment. Il serait utile que votre question soit plus précise sur les termes, etc. que vous ne connaissiez pas.

Michael Durrant
la source
Merci. J'aimerais tout de même apprendre si le temps le permet. Un livre de type «Linux pour les nuls» m'aiderait-il ici? Je déménagerai bientôt, est-ce qu'Amazon AWS héberge quelque chose qui me serait utile avec un peu de travail, ou est-ce complètement différent?
john
1
Je n'utiliserais pas de livre pour les nuls. Une grande partie peut ne pas être pertinente. J'essayerais de survoler quelque chose comme Administrer des serveurs Web, par exemple cengagebrain.com/shop/en/US/storefront/…
Michael Durrant
oui, lancez linux comme machine de développement et configurez un serveur web dessus. Habituez-vous à jouer avec et à le configurer. Vous en apprendrez suffisamment de cette façon. C'est essentiellement comment vous apprenez sur le tas. La moitié des choses est sous le contrôle d'administrateurs système, ce qui peut être bon pour commencer, mais à mesure que vous avancez, vous préférerez recevoir plus de contrôle de la configuration vous-même.
wobbily_col
0

Vous devez savoir ci-dessous les choses pour terminer le cycle de développement Web.

1) IDE (Netbeans et Eclipse etc.)

2) Tout langage de programmation pour le codage. (PHP, java, etc.)

3) Technologie frontale pour la conception de pages (HTML, CSS, etc.)

4) Base de données sauvegardée pour stocker et récupérer des données. (MySQL, etc.)

3) Système de contrôle de version pour vérifier et récupérer votre référentiel de formulaire de code.

4) outil de compilation pour compiler votre code avec des fichiers dépendants. (Fourmi, Maven)

6) Serveur Web pour déployer et exécuter votre code.

7) Besoin de connaître le processus de déploiement de base sur les serveurs pour exécuter et tester votre composant Web et ejb. (Tomcat, serveur Web-Logic)

Ratnesh Dubey
la source
0

En plus de la réponse de DemetriKots, j'ajouterais également des solutions de déploiement automatisé et d'intégration continue. La configuration initiale du serveur n'est qu'une étape, et le déploiement via FTP est douloureux et sujet aux erreurs, sans solution appropriée pour annuler les mauvais déploiements.

  • Hudson - Serveur d'intégration continue
  • Phing - outil de construction automatisé, spécifiquement pour PHP, basé sur Ant
  • Ant - outil de construction automatisé
  • Capistrano - créez des scripts de déploiement pour automatiser et faciliter le déploiement de votre application Web.
Kikimac
la source