Philosophie d'infrastructure

Bonjour, je suis un jeune développeur qui à la base est infographiste/webdesigner et qui par la force des choses est devenu développeur. Je développe actuellement sur Ruby/RoR.

Je compte me lancé prochainement en tant qu’indépendant complémentaire et j’aimerais savoir qu’elle philosophie était la meilleur concernant l’infrastructure et particulièrement l’hébergement.

Je travaille actuellement avec DigitalOcean pour l’hébergement de mes sites et je suis très content de leurs services mais dans le futur je risque d’avoir les projets qui s’enchaine et je ne sais pas trop comment gérer mon infrastructure ma question est la suivante :

Vaut-il mieux avoir une grosse machine qui héberge plusieurs site ou plutôt une petite machine par client ?

Si je fais fausse route concernant mon hébergement ou que vous avez un commentaire concernant ma vision des choses n’hésitez pas !

2 « J'aime »

Je ne connais pas l’architecture que tu utilises actuellement (OS/Base de données), si tu es soumis à licence ou si tu as d’autres contraintes.

Je dirais, d’après l’expérience de déploiement que j’ai pu avoir (mais c’est dans le domaine des applis webs) que dès que tu partages une même infra pour deux clients, les ennuis arrivent. (problème de coupure, d’évolution non synchronisée, de demande spécifique …)

Donc si tu le peux, je partirais sur une machine virtuelle par client (voir plusieurs histoire d’avoir une machine de test et une de production). Si tu utilise des technos non soumises à licence, cela te coûte de l’espace disque … et la gestion des VM en plus du reste. Mais après, vu que chacun des sites est indépendant, tu y gagnes en tranquillité …

2 « J'aime »

Merci pour ta réponse c’est le genre de réponse que j’espérais.

Ça dépend de pas mal de choses:

  • Quel est le traffic estimé par le site
  • Est ce que les requêtes sont voué à faire beaucoup de chose ou alors c’est du site vitrine

Je pense que pour l’hébergement, une solution PAAS (Platform As A Service) peut-être adapté (genre heroku)
En cas de site vitrine et/ou fréquentation moyenne basse sans grosse manipulation de données.
Ça te permettra d’avoir une même interface pour gérer les différents sites.
Pas d’admin sys à faire (ou très peu). Et si le client veut rajouter des dev, ils peuvent être inclus dans chacun des sites indépendamment.

A noter qu’en cas de grosse monté en charge, heroku coute assez vite cher.

Sinon, si tu veux controller la machine, de multiple VM sont ce qu’il y a de mieux je pense. et/ou de multiple petit serveur.
Dans tous les cas éviter la situation ou tu as juste de multiple site sur le même serveur hors machine virtuel.
Tu risque de te taper des conflicts entre les bibliothèques de tes différents projets et ça impactera de manière globale la perf/stabilité de tout les sites.

L’un des avantages de passez par de multiple VM, c’est que pour migrer sur un serveur dédié par la suite est bcp plus simple. Bah oui, tu aura déjà tout de près.

1 « J'aime »

Au prix ou sont les VM aujourd’hui j’ai du mal à voir quelle serait l’avantage d’héberger plusieurs appli sur la même VM. En fait je ne vois que des inconvénients : stabilité, sécurité, versionning des dépendances, et tout simplement isolation de 2 contextes différents.
Une VM avec 2Go de RAM et 1coeur coute moins de 3€ / mois aujourd’hui…

Quelqu’un voit un argument en faveur de l’hébergement de plusieurs appli sur une même VM ?

2 « J'aime »

Merci pour vos réponses, j’aurais une autre question qui vous semble peut-être bête (désolé d’avance ) mais comment faites vous pour choisir la config de la machine par rapport à l’importance/trafic du site ?

Il y a t’il un ordre de grandeur à respecter ? du style XXX visiteurs/mois = XX GB de ram + XX GB transfère + …

Je parle ici de site vitrine sans backend ou d’application lourde derrière, car je me retrouve avec différentes offres chez l’hébergeur et je ne sais quelle choisir.

Désolé si mes questions vous semblent ridicules mais ce n’est pas facile quand on n’est pas à la base développeur mais plutôt autodidacte.

Vu que cela est fortement dépendant de ton site, du contenu que tu proposes, je te dirais bien de prendre une “petite” solution et de surveiller la monter en charge ^^

Ma réponse est assez normande … .mais tes besoins sont fortement dépendant du contexte.

Tu peux toujours essayer de déterminer ta bande passante moyenne et max en calculant le poids moyen d’une de tes pages et en estimant le nombre de connexion simultanée en moyenne et au maximum. Cela te donnera toujours un chiffre de départ.

Pour la suite, je te conseille de faire un peu de monitoring, histoire de voir tes vraies consommations (ce qui te permettra d’adapter tes VM au besoin).

++

1 « J'aime »

Bonjour,

Depuis quelques temps, on entend parler des conteneurs Docker ( https://www.docker.com ). Grosso-modo, ça fonctionne comme une VM, sauf que les ressources peuvent être partagées entre les conteneurs au lieu d’être affectées définitivement entre les VM (information à vérifier).

Ce n’est pas mon métier principal, donc j’ignore pas mal de choses sur ces systèmes, mais dans ton cas, ça pourrait peut-être t’intéresser.

Sinon, je partirai sur des VM, je trouve ça assez simple à mettre en œuvre et à gérer. Par contre, les calculs, je ne les connais malheureusement pas.

Docker est plus un OS builder, il ne te dispensera pas d’avoir une VM par client/projet.

Au contraire, docker (et plus généralement les conteneurs légers basés sur LXC dans le cas de Linux) est un très bon moyen de mutualiser de l’infrastructure en partageant le strict minimum. Tu gardes le meilleur des deux mondes: une seule VM (machine “physique”) à gérer, un conteneur totalement isolé par projet dans lequel tu peux avoir des technologies complètement différente. La seule chose partagée est le noyau et certaines bibliothèques critiques.

Mais dans ton cas cela semble vraiment inadapté: si tu as essentiellement des sites vitrines sans backend, pourquoi avoir une VM/conteneur par site? À quoi cela te sert-il d’avoir un serveur si tu sers des données statiques ? Autant héberger tes sites sur un truc genre amazon S3. Et si tu as vraiment besoin d’un serveur, le mieux c’est encore de partir sur une solution PaaS (cf. https://www.clever-cloud.com/ pour un hébergeur français) qui gérera pour toi l’infrastructure.

1 « J'aime »

Plutôt d’accord avec le dernier commentaire.
Si c’est pour de la vitrine, une solution PaaS serait ce qu’il y aura de plus adapté avec les assets (js/css/images) hébergé sur un CDN (ou S3 mais c’est pas forcement fait pour du statique)

Je suis d’accord avec @nekogami et @arnaud_oqube, prends vers une solution Paas.

VM, Docker, ou Amazon Web Service, ça demande d’avoir une bonne expérience système.

Il faut administrer le serveur, c’est long et compliqué. Je ne vois pas l’intérêt pour toi, ta valeur ajoutée est sur la création du site, pas sur la maitrise de l’hébergement. Quel intérêt de perdre du temps sur tâche sans valeur ajoutée: Docker, Virtualisation ou PaaS, tes clients y verront une différence ??

Tu a des sites légers, donc quand ça te coutera cher en PaaS, tu aura assez de clients pour te payer un admin système et utiliser Amazon Web Service.

Sinon Amazon Web Service Beanstalk, ça permet d’héberger du Rails sans administrer le serveur à priori. Personnellement j’utilise Beanstalk pour héberger des applis Java, d’où le “à priori”.
Je pense qu’il te faudrait cependant un petit coup de main pour le démarrage car il faut créer un réseau virtuel. Mais une fois démarré, c’est très simple à utiliser au quotidien je trouve et assez peu cher. Peut-être 60 dollars par appli car il faut rajouter la BDD (mais celle-ci est mutualisable).
Globalement, je suis également complètement pour une solution PaaS vs un ou des serveurs gérés à la main.

Bonjour à tous,

Je me permets de relancer ce sujet avec une question qui est liée :
Existe t-il un outil correct en ligne, type SAAS, qui permettent de renseigner ou piloter tous ses hébergements ?

En fait, on commence à avoir un bon nombre de VM important pour tout un tas d’application et je souhaiterais pouvoir visualiser facilement notre “cartographie” d’hébergement :

  • Quel(s) site(s) est installé sur quelle VM ?
  • Quelles sont les configurations de chacune de ces VM ?
  • Quelles sont les dernières opérations de maintenance qui ont été effectuées ?
  • Etc.

Je cherche pas forcément quelque chose qui se connecte directement à une API d’un hébergeur. Aujourd’hui on gère ça dans des Google Docs, mais j’aimerais avoir quelque chose de plus agréable à utiliser avec de la visualisation + efficace, etc.

Et après quelques recherches, je n’ai trouvé que des choses très complexe à installer directement sur un serveur mais ce n’est pas ce que je cherche.

Si ça n’existe pas, je pense qu’on développera surement un petit outil en interne.

Merci d’avance de vos retours :)

Bonne journée

Arthur

Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s