La meilleure façon d'apprendre le développement Web backend

Mon article précédent décrit comment vous pouvez entrer dans le développement frontend. Il a également discuté de la façon dont le frontal peut être un endroit rempli de mines terrestres - entrez au mauvais endroit et vous serez submergé par les nombreux cadres de l'écosystème JavaScript.

Dans cet article de blog, voyons comment vous pouvez vous lancer dans le développement back-end. En cours de route, je répondrai à certaines des questions les plus courantes que les gens me posent à ce sujet.

Qu'est-ce que le développement backend?

Le développement frontal implique ce qu'un utilisateur voit à l'écran lorsqu'il ouvre une URL spécifique qui vous appartient. Même dans un environnement complètement statique (avec uniquement HTML / CSS), lorsque quelqu'un ouvre un site Web, un serveur de la planète doit vous répondre avec ces fichiers HTML et CSS.

Ce serveur n'est qu'un ordinateur, tout comme celui que vous utilisez vous-même pour naviguer sur Internet. Mais il a été réglé pour les performances et ne comporte pas de composants inutiles tels qu'une souris ou un clavier. Et il se trouve avec des tonnes d'autres ordinateurs probablement dans un entrepôt de données.

La programmation de ces ordinateurs d'une manière spéciale est appelée développement back-end .

Vous pouvez penser que le développement backend s'appelle ce qu'il est parce qu'il s'exécute derrière le dos de l'utilisateur. Un visiteur de votre site Web "n'accède" jamais complètement au back-end. Ils communiquent simplement avec votre serveur, soit directement via les ports pour un accès très limité (comme le transfert de fichiers HTML / CSS), soit même pas cela - enfouis profondément sous des CDN ou des pare-feu (comme Cloudflare).

Maintenant que nous avons une compréhension brute de ce que signifie le développement back-end, passons à de vraies questions.

Des connaissances en programmation frontale sont-elles nécessaires pour le back-end?

TLDR; Non.

Le développement back-end, comme mentionné ci-dessus, implique la programmation d'un ordinateur assis probablement de l'autre côté de la planète, chargé de répondre à ce que vos utilisateurs disent de leurs propres ordinateurs.

Si vous êtes un développeur backend à plein temps, vous n'avez pas vraiment besoin de vous soucier de ce qui se passe dans les fichiers HTML, CSS et JavaScript que vous envoyez au navigateur de l'utilisateur. Au lieu de cela, vous devez vous concentrer davantage sur les performances du serveur, le code du serveur et le débit.

Que faut-il au développement back-end?

Eh bien, en passant par les livres, vous pouvez dire qu'une personne qui code une application capable de répondre aux requêtes HTTP est un développeur back-end.

Mais en réalité, les développeurs back-end sont parfois capables de faire beaucoup plus que simplement écrire des scripts serveur. Ils ont les connaissances nécessaires pour configurer des serveurs proxy inverses (NGiNX / HAProxy), activer la compression et d'autres moyens d'accélérer le site, et configurer un environnement docker de production.

Pour se qualifier en tant que développeur back-end, je dirais que les compétences minimales dont vous avez besoin sont:

  1. Bonne connaissance d'un langage de programmation dans lequel vous pouvez écrire des serveurs HTTP. Exemples: C #, Java, Node, PHP, Python, etc. (il y en a beaucoup!)
  2. Gérer l'hôte en utilisant cPanel (traditionnel) ou en utilisant le terminal bash (hébergement cloud / traditionnel)
  3. Travailler avec des systèmes de contrôle de version (VCS) comme git pour gérer et déployer des builds

Tout comme chaque jeu est livré avec des spécifications minimales et recommandées, pour les développeurs back-end, mes spécifications recommandées seraient (y compris les compétences minimales):

  1. NGiNX pour les ressources de fichiers statiques et la gestion des serveurs
  2. Compétences en gestion de base de données (SQL / NoSQL)
  3. Sécurité du backend (écriture de code sûr et robuste, exécution d'applications dans des conteneurs docker avec des privilèges limités, protection contre les attaques DoS)
  4. Autoscaling / équilibrage de charge

D'accord, on parle trop de ce qui entre dans le développement back-end. Mais comment en devenez-vous un?

Commencez avec les exigences minimales

Comme je l'ai dit, pour le back-end, tout comme les jeux, nous avons un ensemble d'exigences minimales et d'exigences recommandées. Les exigences minimales se composent de 3 choses:

Apprenez un langage de programmation backend

Lorsque les gens apprennent par eux-mêmes, ils n'ont généralement ni équipe ni personne capable de faire du développement frontal. Ils sont tous seuls. Vous devrez donc souvent créer vous-même des pages Web et des serveurs, du moins au début.

Bien qu'il y ait beaucoup de choix pour les langages de programmation back-end, et je ne peux penser à aucun langage système populaire qui ne prend pas en charge les serveurs HTTP prêts à l'emploi. L'avantage de choisir Node est que vos compétences JavaScript front-end sont transférables au back-end.

Néanmoins, vous pouvez choisir parmi une variété de langages tels que Java, C ++, C #, Python, PHP, etc.

Comment en choisir un, pourriez-vous demander. La réponse est la même que dans l'article sur le développement du front-end: vous devez tout essayer au départ et voir lequel clique le mieux avec vous.

Node est facile car vous avez peut-être déjà programmé JS pour le front-end. Mais si vous êtes un développeur Python ou Java, vous trouverez peut-être ceux-ci faciles à comprendre. Cela dépend complètement de votre profession et de votre goût.

En savoir plus sur la gestion de l'hébergement

Il est révolu le temps où vous deviez acheter manuellement des serveurs et les configurer chez vous, vous connecter à votre FAI, faire tout cela vous-même. C'est l'ère du cloud computing. Désormais, lors de l'hébergement de votre site web, vous avez principalement 2 options:

  1. Optez pour des serveurs d'hébergement gérés comme HostGator ou GoDaddy.
  2. Optez pour des fournisseurs d'hébergement cloud comme GCP, AWS ou DigitalOcean.

Quelle est la différence entre les deux? Dans les deux cas, les serveurs sont détenus et exploités par les sociétés respectives. Mais la principale différence est que l'hébergement géré est plus convivial pour l'interface graphique, dispose d'un riche ensemble d'outils pour voir le système de fichiers, surveiller l'utilisation, gérer les e-mails de votre domaine officiel, télécharger / télécharger des fichiers depuis votre serveur, etc. C'est essentiellement une configuration pour les personnes ayant moins de compétences techniques.

Pour cette raison, je ne recommande pas les sites gérés comme HostGator ou GoDaddy aux développeurs chevronnés. Néanmoins, cela pourrait être une bonne plate-forme pour faire des erreurs et apprendre, principalement parce que vous avez généralement des forfaits prépayés. Vous aurez également une belle interface utilisateur pour gérer les choses, ce qui ne vous permet pas de tirer accidentellement vos factures.

Mais lorsque vous commencez à prendre de la vitesse, je vous recommande de passer à un fournisseur de cloud. Cela enlève tous les bons outils de cPanel que vous utilisiez pour gérer les fichiers et les dossiers sur les serveurs. Mais en même temps, cela vous mettra au défi de beaucoup améliorer vos compétences.

Aujourd'hui, de nombreux fournisseurs de cloud proposent également un essai gratuit décent, afin que vous puissiez réellement essayer leur plate-forme avant de vous lancer. J'héberge mon site Web pour les développeurs - codedamn - sur DigitalOcean et je trouve qu'il est à un juste équilibre complexité et fonctionnalités du site.

Vous pouvez utiliser ce lien pour vous inscrire sur DigitalOcean et obtenir des crédits gratuits de 100 $ . Les instances DigitalOcean sont aussi bon marché que 5 $ par mois, vous avez donc une piste d'environ 20 mois sur cette instance, une bonne affaire, hein?

Quoi qu'il en soit, vous pouvez choisir n'importe quel fournisseur de cloud. Ensuite, il est important d'apprendre à gérer le serveur en utilisant uniquement la ligne de commande en y ssh'ing.

En savoir plus sur les systèmes de contrôle de version

Il existe d'autres solutions en dehors de Git pour VCS. Mais Git est le plus utilisé et le plus simple à comprendre.

En tant qu'individu, vous pourriez ne pas l'apprécier tout de suite. Mais vous comprendrez pourquoi c'est si important au moment où vous commencez à travailler soit en équipe sur plusieurs fonctionnalités simultanément dans votre projet.

Git vous permet de gérer votre flux de travail à l'aide de commits et de branches. Les validations sont comme des points de contrôle dans votre base de code - ceux auxquels vous pouvez toujours revenir si vous vous trompez.

Les branches sont comme des réalités alternatives de votre projet, où quelque chose de complètement différent peut se produire. Ces réalités alternatives peuvent être créées à tout moment et peuvent être fusionnées à tout moment.

Si ces réalités peuvent être fusionnées avec la compatibilité, alors tout va bien. Mais s'il y a un conflit (comme si vous êtes vivant dans une réalité et mort dans une autre), vous devez alors faire un choix manuellement. D'autres modifications peuvent être fusionnées automatiquement.

Git est super intéressant, et une fois que vous en aurez pris connaissance, vous voudrez l'utiliser dans chaque projet. Vous obtenez de garder un historique de votre travail de manière efficace (il compresse et stocke uniquement la différence entre les commits).

Il vous permet également de créer des référentiels git en ligne sur des sites comme GitHub, qui agit comme une source centrale de vérité pour votre site Web. Des sites comme GitHub peuvent être configurés avec des webhooks spéciaux qui peuvent réellement mettre à jour votre site Web chaque fois que vous ajoutez un nouveau point de contrôle (un nouveau commit) sans que vous ayez jamais besoin d'aller manuellement sur le serveur et de le mettre à jour vous-même.

Optez pour les compétences recommandées

Je crois fermement à l'apprentissage par la pratique. Et la meilleure façon de faire quelque chose vient de la nécessité ou de l'intérêt. Une fois que vous vous considérez assez bon avec les exigences minimales, il est temps d'acquérir les compétences recommandées. Cela inclut tous les outils comme Docker et NGiNX mentionnés ci-dessus.

DevOps est également quelque chose qui s'intègre parfaitement avec les développeurs back-end. Vous pouvez essayer d'explorer TravisCI ou CircleCI pour des déploiements de build automatisés. L'intégration et le déploiement continus (CI / CD) est un sujet qui pourrait prendre un autre article de blog entier, donc je ne vais pas entrer dans cela. En fait, une fois qu'il est correctement configuré, cela vous fera gagner un temps de développeur ridicule!

Vient ensuite les bases de données, que j'ai placées dans les compétences recommandées. Mais vous allez avoir besoin de bases de données pour à peu près n'importe quelle application qui implique une sorte de persistance des données générée par l'utilisateur.

Les bases de données sont généralement faciles à utiliser, mais plus difficiles à maintenir et à modifier correctement. La meilleure façon de commencer à travailler sur une pile technologique d'arrière-plan est de tout rassembler sur un seul serveur - le code de votre application, les serveurs proxy inverses, la base de données, etc. dissociez-le de la logique métier existante.

En faisant cela, vous activez une architecture qui peut être hautement évolutive. Une application utilisant une base de données intensive pourrait avoir une solution optimisée pour les bases de données. Et un site lié à un trafic important devrait avoir un bon mécanisme CDN pour décharger les actifs statiques, etc.

Conclusion

Il y a tant à apprendre, mais tout est réalisable si vous n'abandonnez pas. Faites-moi savoir ce que vous pensez de cet article via mes poignées Twitter et Instagram . Cela signifiera beaucoup pour moi si nous nous connectons là-bas!

De plus, si vous êtes intéressé, consultez codedamn - une plate-forme axée sur les développeurs pour l'apprentissage de technologies telles que le développement backend! J'ai même publié une vidéo YouTube sur la création de votre propre serveur de site Web simple en 2 minutes! Vérifiez cela et dites-moi ce que vous en pensez!

Paix!