Comment fonctionne une application web ? 2/2

Dans le premier article, nous avons découvert le fonctionnement d’une application web. En synthèse :

  • un navigateur web qui permet aux utilisateurs de n’importe quel type d’ordinateur de se connecter à un serveur web. Les navigateurs web comprennent les langages HTML, CSS et JavaScript.
  • Un serveur web qui répond aux navigateurs web au travers du protocole HTTP. C’est ce protocole qui permet à des ordinateurs très différents de communiquer entre eux. Le serveur web fournit des fichiers destinés au navigateur web (donc en HTML, CSS ou JavaScript) grâce à 2 types de sites web : les sites statiques et les sites dynamiques. Dans le premier cas, les fichiers sont statiques, c’est-à-dire directement stockés sur le disque dur du serveur. Dans le second cas, les fichiers sont générés par un programme dédié. Ce programme peut être écrit dans n’importe quel langage exécutable sur le serveur. Par exemple, certains des plus courants : PHP, Java, C#, Python, etc…
  • une base de données qui permet de stocker durablement les données du site web. Nous allons détailler ce point aujourd’hui.

Si vous n’avez pas lu le précédent article, je vous recommande vivement de débuter par là : Comment fonctionne une application web ? Je présuppose ici que vous l’avez déjà lu.

La base de données

La base de données est très importante, car elle permet de conserver durablement toutes les données des utilisateurs de notre site web et aussi de modifier dynamiquement du contenu pour un affichage immédiat. Voici quelques exemples rendu possible, ou beaucoup plus simples, avec les bases de données :

  • Modifier le prix de certains des articles vendus sur un site e-commerce. Sans base de données et site dynamique, il faut trouver toutes les pages où ce prix est affiché pour le modifier à la main.
  • Chercher dans le catalogue de produit d’un site e-commerce, ou dans une série d’articles publiés sur un blog. Sans base de données, vous devez mettre en place vous-même la recherche dans ce qui vous sert de catalogue ou de base d’article. De plus, sans un site web dynamique, cette fonctionnalité est tout simplement impossible à proposer.
  • Générer un nouveau mot de passe quand je l’ai oublié. Sans base de données, c’est très compliqué à mettre en place dans des conditions satisfaisantes pour l’utilisateur. Par conditions satisfaisantes, j’entends de supporter que plusieurs utilisateurs génèrent un nouveau mot de passe en même temps sans problème : pas de mot de passe écrit en double ou triple, et chacun garde le sien. 🙂

Les bases de données permettent ou facilitent beaucoup d’autres choses, et comme vu dans le dernier exemple, elles fournissent un certain niveau de sécurité et de durabilité. La durabilité, c’est le fait que quand une donnée est enregistrée, et l’utilisateur informé que son achat a bien eu lieu par exemple, cette information est bien conservée de manière durable dans le système, c’est préférable, non ? 😉

Les bases de données servent avant tout à gérer les données pour les différentes applications en ayant besoin, ainsi votre site web dynamique n’est pas forcément le seul à y accéder. Par exemple, l’outil de gestion des stocks peut y être connecté également afin de mettre à jour les stocks en temps réel. Là encore, c’est un service très utile.

 

Pour travailler sur une base de données, vous aurez à apprendre le SQL : Structured Query Language. Bonne nouvelle, il n’y a qu’un seul langage et il a été standardisé, à l’heure actuelle, toutes les bases de données comprennent le même SQL standard. Mauvaise nouvelle, il ne fonctionne pas du tout selon les mêmes principes que les précédents langages 😞. Ici, point d’algorithmique ni de mise en forme, vous n’aurez à raisonner selon la théorie des ensembles. Au final, c’est tout à fait compréhensible, car la base de données gère de grands ensembles de données et vous permet de les manipuler et de faire des recherches dans de bonnes conditions.

Les bases de données sont complexes et nécessitent un apprentissage spécifique. Je vous recommande vivement de terminer par cela si vous créez un site web tout seul OU de travailler sur un site avec d’autres personnes qui vont gérer les parties plus délicates, comme la création des tables, la mise à jour des données, les recherches complexes. Vous pourrez déjà apprendre à faire des recherches simples, et ça, c’est beaucoup plus facile 🙂.

Créer votre première application web ?

Maintenant que nous avons vu comment fonctionne une application web, avec ses 3 parties et les langages associés, vous vous demandez certainement comment en faire une vous-même.

Personnellement, comme de nombreux développeurs, j’ai débuté mon apprentissage par l’algorithmique et je l’ai mis en pratique sur le langage Turbo Pascal. C’est seulement ensuite, après avoir appris d’autres langages (C, C++ et Java) et découvert les bases de données, et le SQL, que je me suis mis développement web. J’avais donc une bonne connaissance du développement logiciel et des bases dans plusieurs langages. J’ai débuté en stage par le Perl / HTTP / HTML, je ne me suis pas tout de suite frotté au JavaScript et au CSS, ce n’est venu qu’ensuite. J’ai également changé de langage côté serveur pour PHP puis Java.

Certains rares collègues ont eu un chemin différent : ils connaissaient la partie client, principalement le langage HTML, et ils ont découvert le CSS, puis se sont initiés à la programmation avec le JavaScript. Ensuite ils ont progressé vers le développement côté serveur en apprenant le PHP et le SQL.

Que retenir de ces expériences ? Progressez pas à pas, débutez l’apprentissage par un bout (côté serveur ou côté client), de préférence le plus facile pour vous, et travaillez sur des projets où d’autres personnes vous aident sur les parties que vous ne connaissez pas ! Le code d’une application web est trop mélangé pour que vous puissiez réellement ignorer les autres parties, vous devrez accepter de ne pas tout comprendre tout de suite.

Surtout, entourez-vous de personnes qui peuvent vous conseiller. C’est notamment utile pour vous aider à franchir les barrières psychologiques que vous allez rencontrer. En particulier, un réflexe naturel peut vous inciter à attendre d’être devenu un expert sur chaque langage avant de débuter le suivant. Cela n’est pas du tout nécessaire, un coach ou un mentor vous aidera à identifier le bon moment pour avancer et ajouter des cordes à votre arc. La bonne nouvelle, c’est que dans le milieu du développement logiciel, l’état d’esprit est globalement très bon et orienté sur le partage. Vous devriez donc facilement trouver quelqu’un disposé à vous aider ponctuellement.

Les outils et bonnes pratiques

Pour finir, attention de ne pas partir trop vite dans votre prochain développement ! En effet, vous connaissez maintenant le fonctionnement d’une application web. Cependant, pour réussir tout développement logiciel, il vous faut aussi connaître les outils et techniques suivantes :

  • l’algorithmique, qui est la base de tout langage de programmation. C’est sans conteste le plus important de cette liste. Ne faites pas l’impasse sur ce point sans quoi vous rencontrerez de nombreuses difficultés dans la maîtrise de vos projets. J’ai trop souvent rencontré des développeurs ayant réuni tous les éléments utiles à la mise en place de la fonctionnalité, mais incapables de finir le travail à cause d’un petit problème d’algorithmique. Bon, je ne vais pas trop me plaindre, car l’avantage pour nous, qui maîtrisons l’algorithmique, c’est que nous passons pour des demi-dieux capables de tout solutionner ! Sincèrement, la condition de demi-dieu n’est pas si agréable, et je préfère celle de simple mortel : apprenez et maîtrisez l’algorithmique ! S’il vous plaît ! C’est probablement l’investissement le plus lucratif de toute votre vie ! L’algorithmique est maintenant partout, dans les langages de programmation bien sûr, mais également dans des logiciels vous offrant des capacités d’automatisation, comme la domotique par exemple.
  • Un environnement de développement (JetBrain, Eclipse, …), pour être un minimum efficace dans votre travail quotidien. Cela peut vous drastiquement augmenter votre productivité et vous faire gagner de nombreuses heures de travail, je pense qu’il faut rapidement apprendre à utiliser votre environnement de développement. Je vous recommande les outils de JetBrain, j’utilise IntelliJ depuis 2008, je le trouve bien plus stable et efficace qu’Eclipse. Vous pouvez utiliser la version communautaire qui est gratuite et qui permet déjà de faire beaucoup de choses. Lorsque vous aurez le niveau pour utiliser la version Ultimate, vous aurez un travail avec et la licence sera très probablement prise en charge par votre société. 😉.
  • Un outil de gestion de version (GIT, SVN …), pour être sûr de garder la trace de tous les changements importants dans votre code et être capable de revenir en arrière si besoin. Il nous arrive à tous de faire des erreurs, et parfois nous réalisons que le code supprimé la semaine dernière contenait une partie très utile là maintenant. Avec un outil de gestion de version, aucun problème, vous allez retrouver la partie intéressante. Je vous recommande GIT, bien meilleur qu’SVN et qui est maintenant utilisé de partout (d’ailleurs, méfiez-vous d’un travail qui vous propose SVN comme outil de gestion de version).
  • des tests automatisés, pour vous aider à garantir ce que vous réalisez, et accessoirement aller plus vite 🙂. Car oui, comment être sûr que vous avancez dans votre développement sans avoir créé de nouveaux problèmes sur des parties qui fonctionnaient ? Testez-vous tout à la main à chaque fois ? Êtes-vous sûr de ne rien oublier ? Combien de temps passez-vous à faire cela ? À terme, les tests vous permettent de gagner du temps. Mis en place de manière intelligente, ils vous permettent même de gagner du temps tout de suite !
  • Des outils de déploiement, pour fiabiliser les livraisons des nouvelles versions du site, et même, si besoin, être capable de revenir rapidement à la version précédente. C’est un point important. Néanmoins, mettez-le en place progressivement, au fur et à mesure que votre projet avance.

Ces méthodes & outils ont été inventés pour faciliter la vie du développeur et augmenter la productivité, oui, même les tests !!!! Au plus vous les intégrez vite dans vos habitudes, au plus vous serez sereins et efficaces dans votre travail de tous les jours. Cela vous évitera de nombreux problèmes dans la réalisation de votre projet, et vous fera gagner du temps.

Et vous, avez-vous déjà créé votre première application web ? Avez-vous utilisé les outils et bonnes pratiques évoquées ici ? Lequel préférez-vous ?

Crédits photo : Startup Stock Photos

Partager l'article
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.