Accueil Nos publications Blog [Devoxx 2016] Traefik, un reverse-proxy pour des architectures modernes

[Devoxx 2016] Traefik, un reverse-proxy pour des architectures modernes

Traefik LogoInitialement axé sur le Java, le Devoxx est aujourd’hui l’un des événements les plus diversifiés en matière de contenu. De ce fait, on trouve des conférences sur toutes les technologies du moment, et c’est ainsi que je me suis retrouvé à la session Traefik, a modern reverse-proxy, donnée par Emile Vauge pour présenter un outil Open-Source qu’il a créé : Traefik.

Le marché ayant déjà éprouvé plusieurs autres solutions de reverse-proxy, on est en droit de se demander pourquoi il a créé cette nouvelle solution. Emile Vaule explique ce qui l’a poussé à créer Traefik, ainsi que les avantages que sa solution présente.

Pourquoi Traefik ?

Qu’apporte Traefik comme avantage par rapport aux autres reverse-proxy déjà existants ? Tout d’abord, il convient de se placer dans une problématique bien particulière : les micro-services !

Dans un monde de micro-services, nous avons beaucoup d’applications à déployer et à gérer. Afin de réaliser facilement le déploiement et la maintenance de nos applications, nous packageons nos applications dans des containers comme docker ou rkt, eux-mêmes gérés par des orchestrators, comme Kubernetes ou Apache Mesos.

Entre elles, nos applications utilisent des solutions de services discovery pour s’enregistrer et ainsi signaler leur présence aux autres applications. En effet, nos applications ne cessent de démarrer et de s’arrêter. Il faut donc que ces applications se signalent afin qu’elles puissent être interrogées.

Mais quand une application est appelée à travers un reverse-proxy, que se passe-t-il ? Eh bien, il est logique que tout arrêt/démarrage d’une application entraîne une modification dans la configuration du reverse-proxy. Toutefois, pour les solutions existantes comme haproxy, un rechargement de configuration à chaud entraine un fork du processus.

Et bien-sûr, il s’agit encore d’une problématique de containers !

Let's Encrypt

En effet, en procédant de la sorte, il devient alors impossible de containerisé un haproxy ! Pour plus de détails sur le sujet, vous pouvez consulter la conférence de Quentin Adam qui explique en détails les différences entre containers et machines virtuelles. Et nous aurons tous retenu que ce n’est pas la même chose !

Comment ça, il est impossible de containeriser un reverse-proxy ?

Jusqu’à présent, si vous souhaitiez containeriser un haproxy, il était nécessaire d’effectuer un nouveau démarrage de son container à chaque arrêt ou démarrage d’une application devant être déclarée dans la configuration.
Avec Traefik ce n’est plus le cas. Vous pouvez désormais déployer votre proxy via une image docker !

Ce qu’apporte Traefik ?

Pour bien comprendre Traefik, il faut partir des bases. Le but de Traefik est d’être facile à containerisé afin de s’intégrer parfaitement au sein d’une architecture micro-services. Écrit en Go, il apporte ainsi son lot de features, et pas des moindres ! Ce qui est annoncé laisse songeur :

  • Un simple binaire
  • Une API Rest
  • Support de plusieurs backends : Docker, Swarm, Mesos / Marathon, Consul, Etcd, Zookeeper…
  • Possibilité de monitorer la santé des backends via un health check
  • Rechargement à chaud de la configuration sans avoir besoin de redémarrer le process
  • Load-balancing : Weight Round Robin, Dynamic Round Robin
  • Des circuits breakers sur les backends
  • Une Interface Web en AnguarlarJS
  • Le support de HTTP/2

Durant la démonstration, nous avons pu découvrir en direct les promesses qu’apporte cette solution, et c’est assez bluffant. Ainsi, avec un docker-compose, nous scalons notre application et la réaction de Traefik est immédiate : nous pouvons voir plusieurs serveurs s’enregistrés par Traefik et les requêtes être desservies en Round Robin !

Voici quelques sreenshots pour découvrir l’interface web de Traefik :



Et en termes de sécurité ?

Let's EncryptEt voilà, alors que l’on pensait la présentation terminée, on passait à la sécurité et à la gestion des certificats de sécurité. C’est la dernière fonctionnalité présentée, et elle est impressionnante. Nous découvrons que Traefik est capable de gérer tout seul son certificat SSL avec un renouvellement automatique du certificat une semaine avant son expiration ! Et tout cela grâce à Let’s Encrypt, une autorité de certifications gratuite et ouverte.

Pour finir, nous avons eu droit à une démonstration de la feature sur un sous-domaine de traefik.io. La première fois, cela met un peu de temps. En effet, Traefik est en train de récupérer le certificat sur Let’s Encrypt et cela ralentit la première requête. Cependant, la deuxième requête a été immédiate !

Au cours des questions, certains points ont été soulevés, comme celui de la performance. Pour le moment, Traefik est un peu plus lent que Nginx car, pour un environnement donné, il ne parvient à traiter que 85% du trafic. Mais n’oublions pas, au vu de l’âge du projet et de l’engouement suscité, que cela reste une solution à envisager sérieusement !

Les premières releases ont beau toujours être en beta, les résultats sont déjà au rendez-vous.

Pour l’avenir, Traefik s’annonce comme un concurrent sérieux à Haproxy ou Nginx. Avec l’aide de Zenika, Emile Vaule vient de monter sa start-up, Containous, pour promouvoir sa solution et apporter du support aux entreprises. Voici un produit dont l’évolution est à surveiller très attentivement !

© SOAT
Toute reproduction interdite sans autorisation de la société SOAT