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

Pour créer votre propre application web de nos jours, il ne suffit pas de pouvoir la développer. Un aspect important est la mise en place d'outils de déploiement, de surveillance, de gestion et d'administration de l'environnement dans lequel il opère. 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. Lorsqu'elle est déployée «à la main», on peut souvent oublier de transférer quelque chose, prendre en compte l'une ou l'autre nuance, exécuter un test oublié, cette liste peut être prolongée pendant un certain temps.

Cet article peut aider ceux qui ne comprennent que les bases de la création d'applications Web et qui souhaitent en savoir un peu plus sur les termes et conventions de base.

Ainsi, la construction d'applications peut encore être divisée en 2 parties, c'est 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 d'application, à son tour, est également divisé en serveur (celui qui s'exécute sur le serveur, souvent: logique métier, autorisation, stockage de données, etc.) et client (celui qui s'exécute sur la machine de l'utilisateur: souvent l'interface et les éléments associés). avec elle logique).

Commençons par mercredi.

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

Windows Server est le même Windows, mais dans une variante de serveur. Certaines fonctionnalités disponibles dans la version client (régulière) de Windows ne sont pas présentes ici, par exemple, certains services de collecte de statistiques et des logiciels similaires, mais il existe un ensemble d'utilitaires pour l'administration du réseau, des logiciels de base pour le déploiement du serveur (Web, FTP, ...). En général, Windows Server ressemble à un Windows normal, des charlatans comme un Windows normal, cependant, il coûte 2 fois plus cher que son équivalent habituel. Cependant, étant donné que vous déploierez très probablement l'application sur un serveur dédié / virtuel, le coût final pour vous, bien qu'il puisse augmenter, n'est pas critique. Étant donné que la plate-forme Windows occupe une place écrasante sur le marché des OS utilisateurs, son édition serveur sera la plus familière à la plupart des utilisateurs.

Système de type Unix . Le travail traditionnel dans ces systèmes n'implique pas une interface graphique familière, n'offrant à l'utilisateur qu'une console comme élément de contrôle. Pour un utilisateur inexpérimenté, travailler dans un tel format peut être difficile, ce qui ne signifie que sortir de l'éditeur de texte Vim , qui est assez populaire dans les données, la question liée à cela a gagné plus de 1,8 million de vues en 6 ans. Les principales distributions (éditions) de cette famille sont: Debian - une distribution populaire, les versions des packages sont principalement axées sur LTS ( Long Term Support - support pendant une longue période), ce qui se reflète dans la fiabilité et la stabilité plutôt é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 - un système d'exploitation commercialisé à des fins commerciales est payant, cependant, il inclut le support des fournisseurs de logiciels, certains packages propriétaires et pilotes; CentOS - variation open source de Red Hat Enterprise Linux, caractérisée par le manque de packages propriétaires et de support.

Pour ceux qui ne comprennent que le développement de ce domaine, ma recommandation serait Windows Server ou Ubuntu . Si nous considérons Windows, c'est principalement une habitude du système, Ubuntu - plus de tolérance aux mises à jour, et à son tour, par exemple, moins de problèmes lors du démarrage de projets sur des technologies qui nécessitent de nouvelles versions.

Donc, après avoir décidé du 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 d'héberger votre application et votre serveur. Pour le moment, les plus courantes sont de 3 façons:

  • L'hébergement (garder) un serveur par vous-même est l'option la plus économique, mais vous devrez commander une adresse IP statique auprès de votre fournisseur afin que votre ressource ne change pas son adresse au fil du temps.
  • Louez un serveur dédié (VDS) - et gérez indépendamment son administration et son évolutivité
  • Payez (souvent en même temps, ils donnent gratuitement la fonctionnalité de la plate-forme) un abonnement sur certains hébergements cloud, où le modèle de paiement pour les ressources utilisées est assez courant. Les représentants les plus éminents de cette direction: Amazon AWS (donner une année gratuite d'utilisation des services, mais avec une limite mensuelle), Google Cloud (donner 300 $ à un compte qui peut être dépensé pendant l'année sur les services d'hébergement cloud), Yandex. Cloud (donner 4000 roubles .pendant 2 mois), Microsoft Azure (donne un accès gratuit aux services populaires pendant un an, + 12 500 roubles pour tous les services pendant un mois). Ainsi, vous pouvez essayer l'un de ces fournisseurs sans dépenser un centime, mais obtenir une opinion approximative sur la qualité et le niveau de service.

En fonction de la voie choisie, à l'avenir, seul le fait changera, sur qui, pour la plupart, est la responsabilité d'un domaine particulier de l'administration. Si vous vous hébergez, 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, c'est plus que suffisant.

Si vous ne disposez pas d'une machine supplémentaire pouvant jouer le rôle de serveur, vous souhaiterez utiliser la deuxième ou la troisième méthode. 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 aux épaules de l'hôte. L'administration du serveur et des logiciels 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 trop entrer dans les nuances techniques. De plus, au lieu d'une seule machine, vous pouvez avoir plusieurs instances (instances) exécutées en parallèle, qui, par exemple, peuvent être responsables de différentes parties de l'application, tout en ne différant pas beaucoup en termes de coût de la propriété d'un serveur dédié. Et aussi, il existe des instruments d'orchestration, de conteneurisation, de déploiement automatique, d'intégration continue et bien plus encore! Nous considérerons certaines de ces choses ci-dessous.

En général, l'infrastructure du serveur est la suivante: nous avons un soi-disant «orchestrateur» («orchestration» - le processus de gestion de plusieurs instances de serveur) qui gère les changements environnementaux sur l'instance de serveur, un conteneur de virtualisation (facultatif, mais souvent utilisé) qui vous permet de diviser l'application sur des couches logiques isolées, et un logiciel pour l'intégration continue - qui permet de mettre à jour le code hébergé via des "scripts".

Ainsi, l'orchestration vous permet de voir les statuts du serveur, de restaurer ou de restaurer les mises à jour de l'environnement du serveur, etc. Au début, il est peu probable que cet aspect vous concerne, car pour orchestrer quelque chose, vous avez besoin de plusieurs serveurs (peut-on, mais pourquoi est-ce nécessaire?), Et pour qu'il y ait plusieurs serveurs, vous en avez besoin. Parmi les outils dans ce domaine, c'est principalement Kubernetes, développé par Google , qui est entendu.

La prochaine étape est la virtualisation au niveau du système d'exploitation. Désormais, le concept de «dockérisation» est très répandu, issu de l'outil Docker , qui fournit la fonctionnalité de conteneurs isolés les uns des autres, mais lancés dans le cadre du même système d'exploitation. Qu'est-ce que cela signifie: dans chacun de ces conteneurs, vous pouvez exécuter une application, ou même un ensemble d'applications qui supposeront qu'elles sont les seules de l'ensemble du système d'exploitation, sans même savoir l'existence de quelqu'un d'autre sur cette machine. Cette fonction est très utile à la fois pour lancer les mêmes applications de versions différentes, ou simplement des applications conflictuelles, ainsi que pour diviser des parties de l'application en couches. Cette série 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 étendant les conteneurs qu'elle contient, vous obtenez un environnement prêt à l'emploi pour lancer votre application! Dans les premières étapes, vous pouvez utiliser cet outil à la fois à des fins éducatives et pour obtenir un avantage très réel en répartissant la logique d'application sur différentes couches. Mais, il vaut la peine de dire ici que tout le monde n'a pas besoin de dockerization, et pas toujours. L'ancrage est justifié dans les cas où l'application est "fragmentée", divisée en petites parties, chacune responsable de sa propre tâche, dite "architecture de microservice".

En plus de fournir l'environnement, nous devons également fournir un déploiement compétent de l'application, qui comprend toutes sortes de transformations de code, l'installation de bibliothèques et de packages associés à l'application, l'exécution de tests, des 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 en ce moment sont Jenkins (le logiciel pour CI écrit en Java peut sembler un peu compliqué au début), Travis CI (écrit en Ruby, subjectivement, est un peu plus simple que Jenkins , cependant, certaines connaissances en zones de configuration de déploiement), Gitlab CI (écrit en Ruby and Go ).

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

Commençons par les bases: Backend (backend) - du côté serveur. Le choix de la langue, un ensemble de fonctions de base et une structure prédéfinie (cadre) sont ici principalement déterminés par les préférences personnelles, mais néanmoins, il convient de le mentionner (l'opinion de l'auteur sur les langues est assez subjective, mais avec une prétention à une description impartiale):

  • Python est un langage assez convivial pour un utilisateur inexpérimenté, pardonne certaines erreurs, mais il peut aussi être assez strict avec le développeur pour qu'il ne fasse rien de mal. PL déjà assez mature et significatif, apparu en 1991.
  • Go est un langage de Google, il est également assez convivial et pratique, il est assez facile de compiler et d'obtenir un fichier exécutable sur n'importe quelle plate-forme. Cela peut être simple et agréable, ou cela peut être difficile et sérieux. Frais et jeune, est apparu relativement récemment, en 2009.
  • Rust - un peu plus âgé que le précédent collègue, sorti en 2006, est encore assez jeune par rapport à ses frères. Il s'adresse 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 qui est apparu en 1995, l'un des langages les plus couramment utilisés dans le développement d'applications d'entreprise à l'heure actuelle. Avec ses concepts de base et le réglage intensif de l'environnement d'exécution, il peut devenir assez compliqué pour un débutant.
  • ASP.net est une plate-forme de développement d'applications publiée par Microsoft. Pour écrire la fonctionnalité, le langage C # (prononcé C Sharp) est principalement utilisé, apparu en 2000. Sa complexité est comparable au niveau entre Java et Rust.
  • PHP - utilisé à l'origine pour le prétraitement HTML, à l'heure actuelle, bien qu'il conserve une position de leader absolu sur le marché des langues, il existe une tendance à la baisse de son utilisation. Il présente un seuil d'entrée bas, une facilité d'écriture de code, mais en même temps, lors du développement d'applications suffisamment grandes, la fonctionnalité du langage peut ne pas être suffisante.

Eh bien, la dernière partie de notre application - la plus tangible pour l'utilisateur - Frontend (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 cadres (et pas tellement), pour créer des interfaces utilisateur. En conséquence, les trois plus populaires sont:

  • ReactJS n'est pas un framework, mais une bibliothèque. En fait, le cadre ne diffère du titre fier 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 une sorte de cadre. Pour un débutant, cela peut être compliqué, en raison de certains principes de base et d'une configuration assez agressive de l'environnement d'assemblage. Cependant, pour un démarrage rapide, vous pouvez utiliser le package "create-react-app".
  • VueJS est un framework pour construire des interfaces personnalisées. De cette trinité, il prend à juste titre le titre de framework le plus convivial, pour un développement dans Vue le seuil d'entrée est inférieur à celui des autres frères cités. De plus, parmi eux, il est le plus jeune.
  • Angulaire - considéré comme le plus complexe des frameworks donnés, le seul nécessite TypeScript (un add-on pour le langage Javascript). Souvent utilisé pour créer de grandes applications d'entreprise.

En résumant ce qui précède, nous pouvons conclure que maintenant le déploiement de l'application est fondamentalement différent de la façon dont ce processus s'est déroulé. Cependant, personne ne prend la peine d'effectuer le «déploiement» à l'ancienne. Mais vaut-il le peu de temps gagné au départ - un nombre énorme de râteaux sur lesquels le développeur qui a choisi cette voie doit marcher? Je crois que la réponse est non. Après avoir passé un peu plus de temps à vous familiariser avec ces outils (et vous n'en avez pas besoin de plus, car vous devez savoir si vous en avez besoin dans le projet en cours ou non), vous pouvez le jouer, réduisant considérablement, par exemple, les cas d'erreurs fantomatiques qui dépendent de l'environnement et se manifestant uniquement sur le serveur de production, analyse nocturne, ce qui a conduit au blocage du serveur et pourquoi il ne démarre pas, et bien plus encore.

Source: https://habr.com/ru/post/fr446642/


All Articles