Tutuuuum

Cet article, pourvut d'un titre bien étrange je le concois, vous présentera la jeune, mais tres prometteuse plate forme Tutum.co. :-)

Pour information je ne suis pas payé par Tutum.co pour faire cet article.
Je l'écris car ils essaient vraiment de fournir une plate forme fonctionnelle et adapté à un besoin grandissant.

Presentation

Tutum est une jeune startup installé à New-York composé de 7 employés qui ont sortis la première version en Janvier 2014.

Leur plate forme vous permettra de déployer très rapidement (moins de 10 seconds) n'importe quelle image Docker sur leur serveurs.
Ils ont des sereurs allant de 256Mo de RAM et 0.25 CPU EC2 Compute Units, jusqu'à 4Go de RAM et 4 CPU EC2 Compute Units.
Le tout tourne sur des disque SSD.

Dashboard

Ils ont construit une page vous permettant de:

  • déployer
  • arréter
  • augmenter ou réduire le nombre d'instance d'un container

le tout avec une simplicitée enfantine.

Il vous sera possible d'activer l'option Crash recovery qui en cas de coupure, relancera le container.

Mais surtout, ce qui me paît énormément, c'est leur cursseur permettant de régler le nombre d'instance d'un container.
Vous le déplacez comme il vous conviendra, puis cliquez le bouton Apply, et vous verrez en temps réel les nouveaux serveurs s'ajouter ou s'arrêter.

L'autre point fort c'est leur écran Monitoring.
Vous pourrez surveiller le niveau de charge de vos containers et estimer si oui ou non vous devrizer ajouter ou retirer une ou des instances de votre container.

Un autre point fort de Tutum c'est leur Jumpstarts.
Ce sont simplement des containers que vous pouvez utiliser pour vos applications.

Par exemple, pour brewformulas.org, je vais utiliser leur image tutum/postgresql.

Biensur vous pourrez aussi importer des images publique et privée.

Deploiement de brewformulas.org

Aller, c'est partis, déployons brewformulas.org chez Tutum.

Lorsque vous vous inscrierez, Tutum vous offre les 4 premiers dollars.
Ca peux paraitre faible, mais croyez moi, c'est vraiment suffisant pour faire nos essaies :-)

La première chose est l'ordre dans lequel nous allons déployer nos containers.
Comme nous devons lier les containers des base de données au containers applicatifs, il faut donc commencer par les bases de données.
Comme dit précédement, nous allons utiliser, tant que possible, les containers Jumpstarts de Tutum.
(Des gens ont pris le temps de les faires, autant les utilisers :-))

Donc il nous faut une base PostgreSQL et une Redis.

Les base de données

Une fois connecté, sur le dashboard de Tutum, cliquez le gros boutton Launch new application.
Vous êtes déjà sur l'onglet Jumpstarts, vous n'avez qu'a selectionner le container tutum/postgresql en cliquant sur le bouton Select.

Le champs Application Name est très important car il sera utilisé pour génerer les variables d'environnement que nous verrons plustard.
Donc laissez le tel quel.

Image Tag ne contient que latest, donc rien a changer ici.

Container size est par défault le moins cher, c'est a dire le plan XS à $4 (pour le moment, j'ai vue un document qui parlait de $2). Au mieux vous pouvez séléctionner le plan S mais ce n'est pas obligatoire.

Number of containers vous permet de déjà définir le nombre d'instance de votre container, mais ici nous allons le laisser sur 1.

Pour le reste des options, nous allons les laisser tel quel pour le moment.
Cliquez sur Launch.

Vous devriez optenir une instance PostgreSQL.
En cliquant sur son nom (qui devrait être postgresql), vous tomberez sur la page de détails de l'instance.
Puis en cliquand sur Logs vous pourrez voire un message avec le mot de passe du compte postgres.

Ensuite, même opération pour Redis avec le jumpstarts tutum/redis.

Les images brewformulas.org

Worker

Bon les choses sérieuses commencent :-)

Commencons par l'image des workers.
Depuis le dashboard de Tutum, cliquez le gros boutton Launch new application, puis séléctionnez l'onglet Private images puis Add image.

Là vous aller devoir remplir les 3 champs:

  • Image Name avec quay.io/<votre_nom_d_utilisateur>/brewformulas.org
  • Username avec votre nom d'utilisateur
  • Password avec votre mot de passe

Puis cliquez sur le bouton Add image.

Si tout se passe bien vous devriez pouvoir cliquer sur un bouton Select pour votre image.

Nous revoicis sur l'écran de paramètrage Application configuration.

Il vous faut changer le champ Application Name avec, par exemple, brewformulas-org-worker.

Image Tag vous devez sélectionner le tague worker.

Container size je vous conseil minimum un serveur S.

Number of containers peux rester sur 1.

Là surtout il faut cliquer sur le bouton Next: environment variables.

Dans cet écran nous allons lier les containers des bases de données avec notre instance de brewformulas.org!

Dans le champs Link Applications, en cliquant dessus, un menu déroulant apparait. Sélectionnez les 2 bases de données.
Pour le champs API roles sélectionnez Full access.

Vous devriez obtenir ceci:

Comme nous le voyez un ensemble de variables d'environnement sont importée.
Elle permettent de faire les liens entre les containers.

Mais comme nous le voyez il en manque quelqu'unes.
Il faut donc les ajouters à la main.

Pour rappelle, voici l'extrait du fichier database.yml de mon application:

Ici il nous manque donc les variables:

  • POSTGRESQL_USER
  • POSTGRESQL_PASSWORD
  • POSTGRESQL_TEMPLATE

POSTGRESQL_USER doit contenir postgres avec l'image de chez Tutum.

POSTGRESQL_PASSWORD doit contenir le mot de passe que vous aurez copier depuis les logs de l'instance de PostgreSQL.

POSTGRESQL_TEMPLATE doit contenir template0 afin d'éviter tout soucis d'encodage.

Pour Redis, il nous faut le mot de passe dans le variable d'environnement REDIS_PASSWORD.
C'est comme ca que j'ai nommé la variable dans le fichier config/appconfig.defaults.yml.

Ensuite cliquez sur le bouton Launch.

Web

Finalement, il nous reste plus que l'image web pour en finir.

Même opération que l'image worker sauf que ce coup-ci vous garderez le Application configuration tel qu'il sera.

Une fois que vous aurez cliqué le bouton Launch, et que vous irez dans le détail de l'instance brewformulas-org vous devriez voire ceci:

Vous voyez la ligne http://brewformulas-org-zedtux.web.tutum.io/ ?
Il s'agit de l'adresse du répartiteur de charge pour votre application.
Oui! Tutum vous offre le répartiteur de charge!
Donc un serveur de moins.

Voilà, votre application tourne chez Tutum.co ! :-)

Vous pouvez à tout moments augmenter ou réduire le nombre d'instances en 3 cliques.

Et après?

Maintenant que tout ce beau petit monde fonctionne, vous pourrez suivre avec newrelic les performances de votre application.

Vous allez pouvoir augmenter le nombre d'instance de votre container en utilisant simplement le curseur et le boutton Apply.

Conclusion

Pour conclure je dirais que Tutum.co ont fait un excellent travail!
Ils offrent le même service qu'Amazon AWS (et pour cause, ils utilisents des Amazon EC2 derrière), mais avec une simplicitée incroyable!