Analyse service WEB - bahuwart/Projet-admin-2 GitHub Wiki


Besoins techniques

Le client est une entreprise qui fait la vente de jouets en bois, créés artisanalement, à des revendeurs tel que des magasins de jouets. Pour la partie web, le client aurait besoins de trois sites différents:

  • Une vitrine publique qui sert à présenter les produits. Celui-ci possèderait l'URL "www.woodytoys.be" et serait un site statique fait en HTML et CSS
  • Un site de vente en ligne utilisé par les revendeurs. Celui-ci possèderait l'URL "b2b.woodytoys.be" et serait un site dynamique fait en PHP et avec MySQl
  • Un site de gestion interne (ERP) qui sera lui aussi fait à l'aide de PHP et de MySQl

Le client aimerait que la base de donnée soit la même pour les deux site construit à l'aide de MySQl. Concernant les codes sources, ceux-ci sont déjà préexistant et le client demande que nous les utilisions lors de la conceptions du prototype qui ne servira qu'a tester l'accès à la base de données et les contrôles d'accès aux sites web.

Pour pouvoir réaliser cela il va falloir mettre en place plusieurs éléments:

  • Une base de donné à l'aide de MySQl comme demandé par le client
  • Un serveur web qui servira à héberger les sites web de l'entreprise
  • Mettre en place les sites demandé à laide des codes sources

Choix des solutions logicielles

N'ayant pas énormément de connaissances en ce qui concerne les serveurs et les logiciels qui pourraient être utiles afin d'héberger des site, j'ai fait appelle à l'outil d'intelligence artificielle OpenAI pour qu'elle m'aide dans mes recherches. Je lui ai donc posé la question suivante: "Pour l'un de mes projets, je dois réaliser l'infrastructure web d'une entreprise. Cette entreprise a besoins de trois sites différents et d'une base de donnée qui sera utilisé pour deux des trois sites. Quel logiciels de service web et de service de base de données me conseils tu d'utiliser afin de réaliser à bien mon projet ?" OpenAi m'a alors conseillé de me diriger soit vers Apache soit vers NGINX en ce qui concerne le serveur web, et au niveau de la base de donnée il m'a été conseillé de me renseigner sur MySQL ou sur PostgreSQL. Suite à cette réponse, j'ai directement été faire des recherches plus approfondies.

Serveur web:

  • Apache est un logiciel de serveur web open-source (donc gratuit) qui est l'un des plus utilisé. Ce logiciel est sujet à de nombreuses mises à jour régulières, ce qui lui permette d'être toujours sur le devant de la scène. Connus pour sa modularité et sa facilité d'utilisation, il permet de pouvoir ajouter des fonctionnalités supplémentaires. Etant fortement utilisé, sa documentation est donc très complète et il n'est donc pas difficile de trouver des exemples d'utilisation.

  • NGINX est lui aussi un logiciel de serveur web (ainsi qu'un proxy inverse) open-source fortement utilisé. Ce logiciel, contrairement à Apache, est plus utilisé pour gérer des performance plus élevées et une plus grande quantité de trafic (ce qui ne nous est pas utile pour notre projet de B2B). Ce logiciel peut tourner sur plusieurs OS, ce qui le rend fortement accessible. Très peut connu à l'époque, il a été traduit en anglais (logiciel d'origine russe) afin que celui-ci puisse être utile de tous.

  • Apache Tomcat, tout comme les deux autres logiciels présenté précédemment, est un logiciel open source qui est une alternative Java à PHP, ce qui ne nous arrange pas pour notre projet car celui-ci doit utiliser du PHP pour le site B2B. Le fait que ce logiciel ne soit que très peu utilisé (moins d'1% des sites web l'utilise) nous fait penser que ce ne serait pas une bonne solution pour le choix de notre serveur web.

  • Caddy est un nouveau framework qui commence à monter dans l'échelle des serveurs web open source. Il est considéré comme un serveur web de type NGINX mais en plus simplifié. L'HTTPS est activé par défaut, il n'a aucune dépendance, il peut tourner sur plusieurs OS dont Linux et Windows et est multiplateforme. Un des problème de ce serveur web concernant notre projet est qu'il utilise le langage de programmation "Golang", qui est un langage compilé inspiré de C et Pascal.

Au vue des quatre serveurs web présentés, deux ressortent du lot et pourraient être utilisés pour notre projet : Apache et NGINX.

Tableau de comparaison des deux logiciels

Caractéristique Apache NGINX
Support Windows et Linux Principalement Linux, peu compatible avec Windows
Architecture logiciel Basé sur les thread et les processus Basé sur les évènements
Documentation Très complète, facile d'accès et traduite en français (ce qui facilite le travail) Document assez complète traduite en anglais
Utilisation Conçu pour les serveurs web Conçu pour les serveurs web et proxy
Gestion des contenus Gère les contenus statiques et dynamiques Ne peut pas traiter les contenus dynamique de manière native
Performances Logiciel sûr et fiable pour les entreprise. Assez performant et rapide pour les sites web à faible trafic Logiciel léger et rapide pour des sites web à gros trafic. Capable de gérer des connexions simultanées grâce à sont architecture événementielle asynchrone

Serveur de base de données:

  • Comme dit plus haut, OpenAI nous conseil de soit travailler avec MySQl ou alors avec PostgreSQL. Si l'on suit les demandes de notre client, qui disent que nous devons utiliser MySQl pour la base de données, je pense que le choix du logiciel est déjà pris. MySQl est un logiciel open-source très souvent utilisé pour des applications web. C'est un logiciel rapide, fiable et facile à utiliser. Un autre point positif est qu'il est compatible avec plusieurs langages de programmation dont PHP (langage dans lequel devra être réalisé deux de nos sites web) et peut être utilisé sur plusieurs OS différents.

Choix et description de la solution

Au vue des informations trouvées au sujet des différents logiciels que nous pourrions utilisé pour notre projet, nous avons décidé que nous partirions sur Apache en ce qui concernait le serveur web et sur MySQl pour la base de données. Pourquoi avoir choisi Apache ? Les deux logiciels web présentés plus haut sont très similaires l'un de l'autre, mais il y a quelques points qui nous on fait pencher plus vers Apache. Premièrement, le fait que ce logiciel soit utilisé depuis plus longtemps nous rassure beaucoup et nous montre sa fiabilité. Ensuite, NGINX est plus utilisé pour gérer des grosse performance, ce qui ne nous est pas utile vu que notre site de vente ne sera consulté que par des revendeurs. Pour finir, sa document extrêmement complète nous sera fortement utile et le fait que sa communauté soit importante nous permettra de trouver plus facilement des solution à nos problèmes.

Le choix du logiciel de base de données quant à lui à déjà été décidé comme susmentionné. Nous utiliserons donc MySQL.

Sources


GONZALEZ Shayann 2TL2