Liste de contrôle pour créer et publier des applications web

De nos jours, il ne suffit pas de savoir développer une application web. Un aspect important est la configuration des outils de déploiement de l'application, le suivi, ainsi que la gestion et l'administration de l'environnement dans lequel elle fonctionne. L'ère du déploiement manuel s'éloigne de plus en plus, même pour les petits projets. Les outils d'automatisation peuvent offrir des avantages considérables. Lors d'un déploiement manuel, nous pouvons parfois oublier de transférer quelque chose, de prendre en compte un détail particulier, ou de lancer un test oublié; cette liste peut être assez longue.

Cet article peut aider ceux qui découvrent les bases de la création d'applications web et souhaitent mieux comprendre les termes et conventions essentiels.

Ainsi, la construction d'applications peut être divisée en deux parties : tout ce qui concerne le code de l'application et tout ce qui concerne l'environnement dans lequel ce code s'exécute. Le code de l'application, à son tour, se divise également en code serveur (celui qui s'exécute sur le serveur, souvent : logique métier, authentification, stockage de données, etc.) et en code client (celui qui s'exécute sur la machine de l'utilisateur : souvent l'interface et la logique qui y est liée).

Commençons, disons, par l'environnement.

La base du fonctionnement de tout code, système ou logiciel est le système d'exploitation. Par conséquent, ci-dessous, nous examinerons les systèmes les plus populaires proposés sur le marché de l'hébergement et fournirons une brève description de chacun :

Windows Server – c'est bien la Windows, mais en version serveur. Certains fonctionnalités disponibles dans la version classique (client) de Windows ne sont pas présentes ici, telles que certains services de collecte de statistiques et des logiciels similaires. En revanche, il y a un ensemble d'utilitaires pour l'administration réseau, et des logiciels de base pour le déploiement (web, ftp, …). En résumé, Windows Server ressemble à une Windows classique, émet les mêmes bruits qu'une Windows classique, mais coûte deux fois plus cher que son homologue standard. Cependant, étant donné que vous allez probablement déployer votre application sur un serveur dédié / virtuel, le coût final pour vous peut effectivement augmenter, mais pas de manière critique. Étant donné que la plateforme Windows occupe une place prépondérante sur le marché des systèmes d'exploitation utilisateurs, sa version serveur sera la plus familière pour la plupart des utilisateurs. serveurs (web, ftp, …). En général, Windows Server ressemble à une Windows classique, fonctionne comme une Windows classique, mais coûte deux fois plus cher que son homologue standard. Cependant, étant donné que vous allez probablement déployer des applications sur un serveur dédié/virtuel, le coût final pour vous peut augmenter, mais pas de manière critique. Comme la plateforme Windows occupe une part prédominante sur le marché des systèmes d'exploitation pour utilisateurs, sa version serveur sera la plus familière pour la plupart des utilisateurs.

Unix-système similaire. Le fonctionnement traditionnel dans ces systèmes ne suppose pas la présence d'une interface graphique familière, offrant à l'utilisateur comme élément de contrôle uniquement une console. Pour un utilisateur peu expérimenté, travailler dans ce format peut représenter une difficulté, sans parler de la sortie d'un éditeur de texte assez populaire dans ce domaine. Vim, la question liée à cela a déjà enregistré plus de 1,8 million de vues en 6 ans. Les principales distributions (éditions) de cette famille sont : Debian — une distribution populaire, dont les versions des paquets sont principalement orientées vers le LTS (Long Term Support – support à long terme), ce qui se traduit par une fiabilité et une stabilité assez élevées du système et des paquets ; Ubuntu – contient des distributions de tous les paquets dans leurs dernières versions, ce qui peut affecter la stabilité, mais permet de profiter des fonctionnalités fournies avec les nouvelles versions ; Red Hat Enterprise Linux – OS, positionnée pour un usage commercial, est payante, mais inclut le support de la part des fournisseurs de logiciels, certains paquets propriétaires et des paquets de pilotes ; CentOS – opensource variation de Red Hat Enterprise Linux, se distingue par l'absence de paquets propriétaires et de support.

Pour ceux qui découvrent cette domaine, ma recommandation serait des systèmes Windows Server, ou bien Ubuntu. Si l'on considère Windows, c'est avant tout la familiarité du système, Ubuntu – plus de tolérance aux mises à jour, et par conséquent, par exemple, moins de problèmes lors du lancement de projets nécessitant de nouvelles versions.

Ainsi, en ayant déterminé l'OS, passons à un ensemble d'outils permettant de déployer (installer), mettre à jour et surveiller l'état de l'application ou de ses parties sur le serveur.

Une décision importante suivante sera – l'hébergement de votre application et du serveur pour elle. Actuellement, les trois voies les plus courantes sont :

  • Héberger (garder) le serveur soi-même, — l'option la plus économique, mais il faudra commander un IP statique auprès du fournisseur afin que votre ressource ne change pas d'adresse avec le temps.
  • Louer un Serveur Dédié (VDS) – et gérer soi-même son administration et l'évolutivité des charges.
  • Payer un abonnement (souvent avec un essai gratuit des fonctionnalités de la plateforme) sur un service de cloud hosting où le modèle de paiement selon les ressources utilisées est couramment répandu. Les plus grands représentants de ce secteur sont : Amazon AWS (offrant une année gratuite avec certaines limites mensuelles), Google Cloud (fournissant 300 $ de crédit utilisable pendant un an pour leurs services cloud. d'hébergement), Yandex.Cloud (offrant 4000 RUB pour 2 mois), Microsoft Azure (proposant un accès gratuit à des services populaires pendant un an, plus 12 500 roubles pour n'importe quel service pendant un mois). Ainsi, vous pouvez essayer n'importe lequel de ces fournisseurs sans débourser un centime, tout en obtenant une idée générale de la qualité et du niveau des services fournis.

Selon la voie choisie, seule la responsabilité de chaque domaine d'administration changera essentiellement. Si vous hébergez vous-même, sachez que toute interruption liée à l'électricité, à Internet, au serveur lui-même, ou au logiciel déployé – tout cela repose entièrement sur vos épaules. Cependant, pour l'apprentissage et les tests, cela suffit amplement.

Si vous n'avez pas de machine supplémentaire pouvant servir de serveur, vous voudrez alors opter pour la deuxième ou la troisième voie. Le deuxième cas est identique au premier, à l'exception que vous transférez la responsabilité de la disponibilité du serveur et de sa puissance au fournisseur d'hébergement. L'administration du serveur et du logiciel reste sous votre contrôle.

Enfin, il y a l'option de louer des ressources chez des fournisseurs de cloud. Ici, vous pouvez configurer une gestion automatisée de presque tout, sans vous plonger trop dans les détails techniques. De plus, au lieu d'une seule machine, vous pouvez avoir plusieurs instances (exemplaires) fonctionnant en parallèle, qui peuvent, par exemple, prendre en charge différentes parties de l'application, tout en n'étant pas très différentes en termes de coût par rapport à la possession d'un serveur dédié. De plus, des outils d'orchestration, de conteneurisation, de déploiement automatique, d'intégration continue et bien d'autres sont disponibles ! Certains de ces éléments seront abordés ci-dessous.

En général, l'infrastructure du serveur se présente comme suit : nous avons ce qu'on appelle un « orchestrateur » (l'« orchestration » est le processus de gestion de plusieurs instances de serveurs), qui gère les modifications de l'environnement sur l'instance du serveur, un conteneur de virtualisation (optionnel, mais souvent utilisé), permettant de diviser l'application en couches logiques isolées, et un logiciel d'Intégration Continue – permettant de mettre à jour le code hébergé via des « scripts ».

Ainsi, l'orchestration vous permet de voir les statuts des serveurs, d'effectuer des déploiements ou des retours en arrière des mises à jour de l'environnement serveur, etc. Dans les premiers temps, cet aspect ne vous concernera probablement pas, car pour orchestrer quoi que ce soit, il faut plusieurs serveurs (on peut en avoir un seul, mais à quoi bon ?), et pour avoir plusieurs serveurs, il faut en avoir besoin. Parmi les outils de ce domaine, Kubernetes est le plus connu, développé. Google.

La prochaine étape est la virtualisation au niveau du système d'exploitation. Le concept de « containerisation » est désormais largement répandu, un terme dérivé d'un outil. Docker, fournissant la fonctionnalité de conteneurs isolés les uns des autres, mais s'exécutant dans le contexte d'un même système d'exploitation. Qu'est-ce que cela signifie : dans chacun de ces conteneurs, il est possible de lancer une application, ou même un ensemble d'applications, qui se considéreraient comme les seules existantes dans tout le système d'exploitation, ignorant même l'existence d'autres sur la même machine. Cette fonctionnalité est très utile pour exécuter des applications identiques dans des versions différentes, ou tout simplement des applications en conflit, ainsi que pour diviser des parties d'applications en couches. Ce modèle de couches peut ensuite être enregistré dans une image, qui peut être utilisée, par exemple, pour le déploiement d'une application. Ainsi, en installant cette image et en déployant les conteneurs qu'elle contient, vous obtenez un environnement prêt à l'emploi pour exécuter votre application ! Au début, vous pouvez utiliser cet outil à des fins de découverte, ainsi que pour obtenir de véritables bénéfices en répartissant la logique de l'application sur différentes couches. Cependant, il convient de dire que la containerisation n'est pas toujours nécessaire et pas pour tout le monde. La containerisation est justifiée dans les cas où l'application est « fragmentée », divisée en petites parties, chacune responsable de sa propre tâche, ce que l'on appelle l'« architecture microservices ».

De plus, en garantissant l'environnement, nous devons également assurer un déploiement efficace de l'application, comprenant toutes sortes de transformations de code, d'installations de bibliothèques et de paquets liés à l'application, de passation de tests, de notifications concernant ces opérations, et ainsi de suite. Ici, nous devons prêter attention à un concept tel que l'« Intégration Continue » (CI – Intégration Continue). Les principaux outils dans ce domaine actuellement sont Jenkins (un logiciel pour CI, écrit en Java, qui peut sembler un peu complexe au départ), Travis CI (écrit en Ruby, subjectivement, un peu plus facile que Jenkins,cependant, il faut encore des connaissances en matière de configuration de déploiement), Gitlab CI (écrit en Ruby et Go.).

Donc, après avoir discuté de l'environnement dans lequel votre application va fonctionner, il est enfin temps de voir quels outils le monde moderne nous offre pour créer ces applications.

Commençons par les bases : Backend (backend) – la partie serveur. Le choix du langage, de l'ensemble des fonctionnalités de base et de la structure prédéfinie (framework) dépend principalement des préférences personnelles. Cependant, il convient de mentionner les considérations suivantes (l'avis de l'auteur sur les langages est assez subjectif, bien qu'il prétende fournir une description impartiale) :

  • Python – un langage suffisamment convivial pour les utilisateurs inexpérimentés, qui pardonne certaines erreurs, mais qui peut également être assez strict avec le développeur pour éviter qu'il ne cause des problèmes. C'est un langage de programmation déjà bien établi, apparu en 1991.
  • Go – un langage de Google, également assez convivial et pratique, facile à compiler et à obtenir un exécutable sur n'importe quelle plateforme. Il peut être simple et agréable, mais aussi complexe et sérieux. Il est frais et jeune, apparu relativement récemment, en 2009.
  • Rust – un peu plus ancien que le précédent, sorti en 2006, et encore relativement jeune par rapport à ses pairs. Il est orienté vers des développeurs plus expérimentés, bien qu'il essaie toujours de résoudre de nombreuses tâches de bas niveau pour le programmeur.
  • Java – un vétéran du développement commercial, apparu en 1995, l'un des langages les plus utilisés dans le développement d'applications d'entreprise à l'heure actuelle. Avec ses concepts de base et la configuration compliquée de l'environnement d'exécution, il peut devenir assez complexe pour un novice.
  • ASP.net – une plateforme de développement d'applications lancée par Microsoft. Le langage principalement utilisé pour écrire des fonctions est le C# (prononcé C Sharp), qui a été introduit en 2000. En termes de complexité, il se situe entre Java et Rust.
  • PHP – initialement utilisé pour le prétraitement du HTML, actuellement, bien qu'il maintienne une position de leader sur le marché des langages, une tendance à la baisse de son utilisation est observée. Il se distingue par son faible seuil d'entrée, la simplicité de rédaction de code, mais, lors du développement d'applications suffisamment grandes, la fonctionnalité du langage peut s'avérer insuffisante.

Et enfin, la partie la plus palpable de notre application pour l'utilisateur – Frontend (frontend) – est le visage de votre application, c'est cette partie avec laquelle l'utilisateur interagit directement.

Sans entrer dans les détails, le front-end moderne repose sur trois piliers, des frameworks (et d'autres) pour créer des interfaces utilisateur. En conséquence, les trois plus populaires sont :

  • ReactJS – ce n'est pas un framework, mais une bibliothèque. En fait, il se distingue par l'absence de certaines fonctionnalités « prêtes à l'emploi », et nécessite leur installation manuelle. Ainsi, il existe plusieurs variations de « préparation » de cette bibliothèque, formant des frameworks particuliers. Pour un débutant, cela peut être un peu compliqué, en raison de certains principes de base, et d'un environnement de compilation assez exigeant. Cependant, pour un démarrage rapide, vous pouvez utiliser le package « create-react-app ».
  • VueJS – un framework pour construire des interfaces utilisateur. Parmi ce trio, il mérite le titre de framework le plus convivial, car le seuil d'entrée pour le développement en Vue est plus bas que chez ses autres pairs. De plus, c'est le plus jeune d'entre eux.
  • Angular – il est considéré comme le plus complexe des frameworks mentionnés, le seul qui nécessite une TypeScript (couche supplémentaire sur le langage Javascript). Il est souvent utilisé pour construire de grandes applications d'entreprise.

En résumé, on peut conclure que le déploiement d'applications aujourd'hui est radicalement différent de ce qu'il était auparavant. Cependant, rien n'empêche de procéder à un « déploiement » à l'ancienne. Mais ce petit gain de temps au départ vaut-il le grand nombre d'embûches sur lesquelles un développeur qui choisit cette voie risque de trébucher ? Je pense que la réponse est « non ». En prenant un peu plus de temps pour se familiariser avec ces outils (et il n'en faut pas plus, car il vous suffit de comprendre s'ils sont nécessaires pour votre projet actuel ou non), vous pourrez compenser ce temps perdu, en réduisant, par exemple, les cas d'erreurs fantômes dépendant de l'environnement, qui ne se manifestent que sur le serveur de production, les nuits passées à comprendre ce qui a causé le plantage du serveur et pourquoi il ne se lance pas, et bien d'autres choses.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster