Liste de contrôle pour la création et la publication d'applications Web

Pour créer sa propre application web à notre époque, il ne suffit pas de pouvoir la développer. Un aspect important est la mise en place d'outils pour le déploiement et la surveillance des applications, ainsi que pour la gestion et l'administration de l'environnement dans lequel elles opèrent. Alors que l’ère du déploiement manuel tombe dans l’oubli, même pour les petits projets, les outils d’automatisation peuvent apporter des avantages tangibles. Lors d'un déploiement « à la main », on peut souvent oublier de déplacer quelque chose, de prendre en compte telle ou telle nuance, de faire un test oublié, cette liste peut se poursuivre assez longtemps.

Cet article peut aider ceux qui apprennent simplement les bases de la création d'applications Web et souhaitent comprendre un peu les termes et conventions de base.

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

Commençons par mercredi.

La base du fonctionnement de tout code, système ou logiciel est le système d'exploitation, nous examinerons donc ci-dessous les systèmes les plus populaires sur le marché de l'hébergement et leur donnerons une brève description :

Windows Server - le même Windows, mais dans une variante serveur. Certaines fonctionnalités disponibles dans la version client (normale) de Windows ne sont pas présentes ici, par exemple certains services de collecte de statistiques et logiciels similaires, mais il existe un ensemble d'utilitaires pour l'administration réseau, des logiciels de base pour le déploiement de serveurs (web, ftp, ...). En général, Windows Server ressemble à Windows ordinaire, charlatan comme Windows ordinaire, cependant, il coûte 2 fois plus cher que son homologue habituel. Cependant, étant donné que vous déployerez très probablement l'application sur un serveur dédié/virtuel, le coût final pour vous, même s'il peut augmenter, n'est pas critique. Étant donné que la plate-forme Windows occupe une place prépondérante sur le marché des systèmes d'exploitation grand public, son édition serveur sera la plus familière à la plupart des utilisateurs.

Unix-système similaire. Le travail traditionnel dans ces systèmes ne nécessite pas la présence d'une interface graphique familière, offrant à l'utilisateur uniquement une console comme élément de contrôle. Pour un utilisateur inexpérimenté, travailler dans ce format peut être difficile, quel est le coût de sortie d'un éditeur de texte très populaire dans le domaine des données Vim, une question en lien avec cela a déjà reçu plus de 6 million de vues en 1.8 ans. Les principales distributions (éditions) de cette famille sont : Debian - une distribution populaire, les versions de packages qu'elle contient sont principalement axées sur LTS (Support à long terme – support pendant une longue période), qui se traduit par une fiabilité et une stabilité assez élevées du système et des packages ; Ubuntu – contient les distributions de tous les packages dans leurs dernières versions, ce qui peut affecter la stabilité, mais vous permet d'utiliser les fonctionnalités fournies avec les nouvelles versions ; Red Hat Enterprise Linux – Système d'exploitation, positionné pour un usage commercial, est payant, mais inclut le support des fournisseurs de logiciels, certains packages propriétaires et packages de pilotes ; CentOS-open source une variante de Red Hat Enterprise Linux, caractérisée par l'absence de packages et de support propriétaires.

Pour ceux qui commencent tout juste à maîtriser ce domaine, ma recommandation serait les systèmes Windows ServerOu Ubuntu. Si l'on considère Windows, il s'agit avant tout de la familiarité du système, Ubuntu – plus de tolérance aux mises à jour, et donc par exemple moins de problèmes lors du lancement de projets sur des technologies nécessitant de nouvelles versions.

Ainsi, après avoir choisi le système d'exploitation, passons à un ensemble d'outils qui vous permettent de déployer (installer), de mettre à jour et de surveiller l'état de l'application ou de ses parties sur le serveur.

La prochaine décision importante sera le placement de votre application et le serveur correspondant. À l'heure actuelle, les méthodes les plus courantes sont de 3 :

  • Héberger (conserver) un serveur par vous-même est l'option la plus économique, mais vous devrez commander une IP statique auprès de votre fournisseur afin que votre ressource ne change pas d'adresse au fil du temps.
  • Louez un serveur dédié (VDS) – et administrez-le de manière indépendante et faites évoluer les charges
  • Payez (ils vous donnent souvent la possibilité d'essayer gratuitement les fonctionnalités de la plateforme) pour un abonnement à un hébergement cloud, où le modèle de paiement pour les ressources utilisées est assez courant. Les représentants les plus éminents de cette tendance : Amazon AWS (ils offrent une année gratuite d'utilisation des services, mais avec une limite mensuelle), Google Cloud (ils donnent 300 $ sur le compte, qui peuvent être dépensés au cours de l'année sur des services d'hébergement cloud) , Yandex.Cloud (ils donnent 4000 2 roubles pour 12 mois), Microsoft Azure (donnent un accès gratuit aux services populaires pendant un an, + 500 XNUMX roubles pour tous les services pendant un mois). Ainsi, vous pouvez essayer n'importe lequel de ces fournisseurs sans dépenser un centime, mais en obtenant une opinion approximative sur la qualité et le niveau de service fourni.

En fonction de la voie choisie, la seule chose qui changera à l'avenir est de savoir qui est en grande partie responsable de tel ou tel domaine de l'administration. Si vous vous hébergez vous-même, vous devez comprendre que toute interruption de l'électricité, d'Internet, du serveur lui-même, des logiciels déployés dessus - tout cela repose entièrement sur vos épaules. Cependant, pour la formation et les tests, cela est largement suffisant.

Si vous ne disposez pas d’une machine supplémentaire pouvant jouer le rôle de serveur, vous souhaiterez alors utiliser la deuxième ou la troisième méthode. Le deuxième cas est identique au premier, à l'exception du fait que vous transférez la responsabilité de la disponibilité du serveur et de sa puissance sur les épaules de l'hébergeur. L'administration du serveur et du logiciel est toujours sous votre contrôle.

Et enfin, la possibilité de louer la capacité des fournisseurs de cloud. Ici, vous pouvez configurer un contrôle automatisé de presque tout sans entrer dans trop de détails techniques. De plus, au lieu d'une seule machine, vous pouvez avoir plusieurs instances exécutées en parallèle, qui peuvent, par exemple, être responsables de différentes parties de l'application, sans pour autant différer beaucoup en termes de coût par rapport à la possession d'un serveur dédié. Et aussi, il existe des outils d’orchestration, de conteneurisation, de déploiement automatique, d’intégration continue et bien plus encore ! Nous examinerons certaines de ces choses ci-dessous.

En général, l'infrastructure du serveur ressemble à ceci : nous avons ce qu'on appelle un « orchestrateur » (« l'orchestration » est le processus de gestion de plusieurs instances de serveur), qui gère les changements environnementaux sur une instance de serveur, un conteneur de virtualisation (facultatif, mais tout à fait souvent utilisé), qui vous permet de diviser l'application en couches logiques isolées, et un logiciel d'intégration continue, permettant les mises à jour du code hébergé via des « scripts ».

Ainsi, l'orchestration vous permet de voir l'état des serveurs, de déployer ou d'annuler les mises à jour de l'environnement du serveur, etc. Dans un premier temps, cet aspect ne vous affectera probablement pas, puisque pour orchestrer quoi que ce soit, il faut plusieurs serveurs (on peut en avoir un, mais pourquoi est-ce nécessaire ?), et pour avoir plusieurs serveurs, il en faut. Parmi les outils allant dans ce sens, le plus populaire est Kubernetes, développé par Google.

La prochaine étape est la virtualisation au niveau du système d'exploitation. De nos jours, le concept de « dockerisation » s’est répandu, qui vient de l’outil Docker, qui fournit les fonctionnalités de conteneurs isolés les uns des autres, mais lancés dans le contexte d'un seul système d'exploitation. Qu'est-ce que cela signifie : dans chacun de ces conteneurs, vous pouvez exécuter une application, voire un ensemble d'applications, qui croiront qu'elles sont les seules de tout l'OS, sans même soupçonner l'existence de quelqu'un d'autre sur cette machine. Cette fonction est très utile pour lancer des applications identiques de versions différentes, ou simplement des applications en conflit, ainsi que pour diviser des parties d'une application en couches. Cette distribution de couches peut ensuite être écrite dans une image, qui peut être utilisée, par exemple, pour déployer une application. Autrement dit, 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 ! Dans les premières étapes, vous pouvez utiliser cet outil à la fois à des fins d'information et pour obtenir des avantages très réels en divisant la logique de l'application en différentes couches. Mais il convient de dire ici que tout le monde n’a pas besoin de la dockerisation, et pas toujours. La dockerisation 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 qu'on appelle « l'architecture microservice ».

De plus, en plus de fournir l'environnement, nous devons assurer un déploiement compétent de l'application, qui comprend toutes sortes de transformations de code, l'installation de bibliothèques et de packages liés à l'application, l'exécution de tests, les notifications sur ces opérations, etc. Ici, nous devons prêter attention à un concept tel que « l'intégration continue » (CI – Intégration continue). Les principaux outils dans ce domaine pour le moment sont Jenkins (un logiciel de CI écrit en Java peut paraître un peu compliqué au début), Travis CI (écrit en Ruby, subjectif, un peu plus simple Jenkins, cependant, certaines connaissances dans le domaine de la configuration du déploiement sont encore requises), CI Gitlab (écrit sur Ruby et c'est parti).

Ainsi, après avoir parlé de l'environnement dans lequel votre application fonctionnera, il est temps d'enfin examiner quels outils le monde moderne nous offre pour créer ces mêmes applications.

Commençons par les bases: backend (backend) – partie serveur. Le choix de la langue, de l'ensemble des fonctions de base et de la structure prédéfinie (framework) est ici déterminé principalement par les préférences personnelles, mais il convient néanmoins de le mentionner pour considération (l'opinion de l'auteur sur les langues est assez subjective, bien qu'avec une affirmation à une description impartiale) :

  • Python est un langage assez convivial pour un utilisateur inexpérimenté, il pardonne certaines erreurs, mais il peut aussi être assez strict avec le développeur pour qu'il ne fasse rien de mal. Une langue déjà assez mature et significative, apparue en 1991.
  • Go - un langage de Google, est également assez convivial et pratique, il est assez facile de compiler et d'obtenir un fichier exécutable sur n'importe quelle plateforme. Cela peut être simple et agréable, ou cela peut être complexe et sérieux. Frais et jeune, apparu relativement récemment, en 2009.
  • Rust est un peu plus âgé que son précédent collègue, sorti en 2006, mais reste encore assez jeune par rapport à ses pairs. Destiné aux 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 est un vétéran du développement commercial, introduit en 1995, et est aujourd'hui l'un des langages les plus couramment utilisés dans le développement d'applications d'entreprise. Avec ses concepts de base et sa configuration lourde, le runtime peut devenir assez difficile pour un débutant.
  • ASP.net est une plateforme de développement d'applications publiée par Microsoft. Pour écrire des fonctionnalités, on utilise principalement le langage C# (prononcer C Sharp), apparu en 2000. Sa complexité est comparable au niveau entre Java et Rust.
  • PHP, utilisé à l'origine pour le prétraitement HTML, bien qu'il occupe actuellement un leadership absolu sur le marché des langues, il existe une tendance à un déclin de son utilisation. Il a un seuil d'entrée bas et une facilité d'écriture de code, mais en même temps, lors du développement d'applications assez volumineuses, les fonctionnalités du langage peuvent ne pas suffire.

Eh bien, la dernière partie de notre application - la plus tangible pour l'utilisateur - L'extrémité avant (frontend) – est le visage de votre application ; c’est avec cette partie que l’utilisateur interagit directement.

Sans entrer dans les détails, le frontend moderne repose sur trois piliers, des frameworks (et pas tellement), pour créer des interfaces utilisateur. Ainsi, les trois plus populaires sont :

  • ReactJS n'est pas un framework, mais une bibliothèque. En fait, le framework ne diffère de son fier titre que par l'absence de certaines fonctions « prêtes à l'emploi » et la nécessité de les installer manuellement. Ainsi, il existe plusieurs variantes de la « préparation » de cette bibliothèque, formant des cadres uniques. Cela peut être un peu difficile pour un débutant, en raison de certains principes de base et d'une configuration assez agressive de l'environnement de construction. Cependant, pour un démarrage rapide, vous pouvez utiliser le package « create-react-app ».
  • VueJS est un framework pour créer des interfaces utilisateur. De cette trinité, il prend à juste titre le titre de framework le plus convivial ; pour le développement dans Vue, la barrière à l'entrée est inférieure à celle des autres frères mentionnés. De plus, il est le plus jeune d'entre eux.
  • Angular est considéré comme le plus complexe de ces frameworks, le seul qui nécessite Manuscrit (module complémentaire pour le langage Javascript). Souvent utilisé pour créer des applications de grande entreprise.

En résumant ce qui a été écrit ci-dessus, nous pouvons conclure que le déploiement actuel d'une application est radicalement différent de la façon dont ce processus se déroulait auparavant. Cependant, personne ne vous empêche d’effectuer le « déploiement » à l’ancienne. Mais le peu de temps gagné au départ vaut-il le grand nombre d’erreurs que devra commettre un développeur qui choisit cette voie ? Je crois que la réponse est non. En passant un peu plus de temps à vous familiariser avec ces outils (et vous n'en avez pas besoin de plus, car vous devez comprendre si vous en avez besoin ou non dans votre projet en cours), vous pouvez les jouer, en réduisant considérablement, par exemple , des cas d'erreurs fantômes en fonction de l'environnement et qui apparaissent uniquement sur le serveur de production, une analyse nocturne de ce qui a conduit au crash du serveur et pourquoi il ne démarre pas, et bien plus encore.

Source: habr.com

Ajouter un commentaire