Une infrastructure que vous maîtrisez déjà
Pour la plupart, vous avez déjà touché à des machines physiques et à des réseaux avant de vous lancer tête baissée dans une IaaS. Mais attention, surtout si vous êtes dans le métier de l’administration réseau, il vous faudra obligatoirement de très fortes compétences en programmation pour utiliser l’infrastructure mise à disposition.
Vous disposez de :
- machines virtuelles (à la demande)
- espaces de stockage
- liens réseaux
Mais en quoi est-ce que cette infrastructure est cloud ? Elle tient dans une seule expression : “A la demande“. Vous serez libre de faire évoluer votre infrastructure comme vous le souhaitez.
Des contraintes que vous ne maîtrisez pas
Il faut savoir que par exemple sur Amazon, une machine virtuelle n’est pas fiable. Comment ça ? Elle peut être rebootée à n’importe quel moment, ou elle peut même se retrouver indisponible (“plantée”). Là où sur un réseau interne vous faites tout pour ne pas que vos machines tombent en panne, dans le cloud il faudra en permanence prévoir cette hypothèse. Même si les hébergeurs garantissent la continuité du service, vous n’êtes pas à l’abri d’une catastrophe dans le datacenter. Le coup de grâce ? Non, parce que vous aurez prévu cette éventualité pour que votre application “déménage” sur un autre datacenter.
L’idée principale de se lancer dans le cloud, c’est de pouvoir subvenir à des besoins croissants. Une application cloud bien menée ne peut pas “tomber” face à une attaque de Deny Of Service (en théorie). Sauf que le Deny Of Service pourrait être renommé en… Deny de compte bancaire ! Plus votre application demandera de ressources, plus elle vous coûtera cher.
Sur un réseau d’entreprise, surdimensionner un serveur a des incidences relativement minimes. Dans le cloud, cela n’en aura aucune hormis sur… votre compte en banque. Une application cloud doit être justement dimensionnée et non surdimensionnée.
Une conception cloud
Porter une application dans le cloud ne se fait pas d’un claquement de doigts. Il faut pouvoir la découper en divers modules plus ou moins indépendants pour maîtriser au mieux les différentes parties. Un service d’import de données n’aura pas la même utilisation que l’interface utilisateur.
A noter aussi l’importance d’utiliser au mieux des éléments déjà “cloud” (stockage, bases de données, files de messages) qui peuvent servir de “tampon” ou même de points d’entrée sur l’application.
Attention aussi à bien penser aux nombre de machines. Une application Cloud doit pouvoir travailler sur plusieurs machines à la fois, et sur une infrastructure dynamique. C’est-à-dire avec des machines qui vont s’éteindre et d’autres qui vont se créer.
Toute cette dynamique nécessite de longues heures de réflexions sur la conception. Sinon, autant louer un serveur chez OVH ou tout autre hébergeur. Si vous utilisez le cloud qu’avec des instances fixes, vous allez perdre de l’argent, du temps et vous faire des frayeurs.
Pensez à votre carte bleue
Rien n’est plus simple que la création des machines virtuelles. Rien n’est plus simple aussi que de les oublier pendant des journées voire des semaines. Et il est dommage d’attendre la facturation de fin de mois pour comprendre que l’on a laissé de coté des machines qui ne font rien.
Pensez-y aussi lorsque vous allez définir la taille minimale de votre infrastructure. Il vaut mieux mettre un petit peu plus petit, puisque de toute façon si toutes les règles sont bien définies, votre infrastructure s’adaptera à la demande.
Stocker des données, c’est simple et pas cher. Les transférer, c’est une toute autre affaire. Les transferts réseaux sont facturés et peuvent apporter de très mauvaises surprises.
Cette partie fondamentale sera décrite dans un autre article plus tard.
Utilisez les API
Tout, absolument tout doit être automatisé. D’un seul clic il faut pouvoir créer et déployer tout le nécessaire sur un compte que vous venez de créer. Pourquoi ? Cela signifie que :
- Vous avez gardé des traces des méthodes/outils de déploiement
- Vous savez ce que vous faites
- Le scénario est reproductible
- Tout est automatisable
Pensez que votre application elle-même devrait être capable de se déployer en cas de mise à jour ou de plantage.
Les outils graphiques fournis par les éditeurs ne font pas plus de choses que les API. Le moindre clic peut déraper, vous pouvez supprimer des données ou des machines accidentellement. Avec un petit bout de programme ou un script, vous êtes absolument sûr de maîtriser ce qui va être fait.
Faites parler votre application
Si vous passez votre temps à vous connecter en SSH à vos machines, c’est que vous avez un problème. Il existe des tas de techniques pour avoir des remontées d’informations (logs que l’on va mettre sur un espace de stockage, loggly, emails). En aucun cas vous ne devez aller chercher des informations sur l’état de santé de votre application. Elle doit vous informer en temps réel de ce qu’elle fait. Elle doit être capable elle-même de savoir dans quel environnement elle se trouve (répartition sur plusieurs machines, quels modules fonctionnent etc…)