RYO: qui veut aller loin, ménage sa monture

Le socle sur lequel nous construisons des solutions de qualité

Engineering

Genèse

En démarrant notre activité en Octobre 2016, nous nous sommes imposés un point d'honneur: construire des projets de qualité.

Mais la qualité prend du temps et coûte cher. Plutôt que de se transformer en agence premium - et ne travailler qu'avec de grandes entreprises - nous nous sommes donnés comme objectif de répondre à une première question: comment faire de la qualité accessible ?

Il n'est pas simple de trouver réponse à une telle question. C'est un processus, une démarche de "normalisation" dans le temps qui se peaufine avec le retour d'expérience et qui produit à l'arrivée un guide humain, business et technique.

Nous avons choisi d'appeler ce guide: RYO.

DRY + YAGNI

A Sillaps, notre mission est d'utiliser la technologie comme levier d'accomplissement pour les individus et organisations avec lesquels nous travaillons.

L'object technique de RYO est la construction d'un socle logiciel constitué de briques qu'on peut assimiler à des LEGOS®. Créer de telles briques, c'est se donner les moyens de pouvoir les composer simplement pour arriver à un plus grand ensemble répondant à un objectif métier bien défini.

Ainsi, pour tout nouveau projet à construire, il ne s'agira pas de partir de zéro à chaque fois mais de se baser sur des éléments et routines existantes.

Le premier pilier sur lequel se repose RYO ( ou tout autre démarche similaire ), c'est le principe du DRY (Do not Repeat Yourself ): Ne pas se répéter, c'est réutiliser et améliorer un existant. Avec le temps, cet existant répond à un périmètre de plus en plus large, les produits se construisent plus rapidement avec moins de ressources et donc un budget (nettement) moindre.

Mais voilà, créer des composants réutilisables peut très rapidement se transformer en paranoïa: trop de réutilisabilité tue la réutilisabilité. A vouloir trop en faire, on finit par consommer des ressources importantes qui au final ne sont pas bénéfiques pour notre objectif premier: faire de la qualité accessible.

Entre en jeux le second pilier technique de RYO: YAGNI (You Aren't Gonna Need It), ou toujours opter pour la solution la plus simple pour résoudre un problème.

RYO: les principaux choix

Le tout API (API-first)

RYO nous permet de démarrer tous nos projets en créant d'abord une API. Le but de cet article n'est pas de présenter les nombreux avantages d'une telle approche mais de revenir sur nos principales motiviations :

  1. Transparence ;
  2. Construire des services plutôt que des applications ;
  3. Composer, composer, composer les services entre eux ;
  4. Permettre à nos clients et partenaires d'étendre à tout moment les solutions sans dépendre de nous ;
  5. Ouvrir la voie naturelle à créer une application mobile, web ou IoT ;
  6. Ne pas s'enfermer dans une technologie spécifique mais rester flexible en fonction du contexte et du problème à résoudre ;
  7. et bénéficier des fonctionnaliés déjà présentes dans un API-Gateway.

GraphQL

GraphQL part du besoin de Facebook de trouver un moyen mieux adapté pour requêter la très large quantité de données du réseau social. Le moins qu'on puisse dire c'est que le résultat de cette quête de performance et flexbilité est à la hauteur des attentes.
GraphQL reprend l'approche SQL : utiliser un langage concis permettant de sélectionner ce que l’on souhaite, et de préciser les objets et attributs attendus en réponse.

GraphQL est avant tout une spécification. En 2016, aucune implémentation Java stable n'étant disponible sur le marché, nous avons créé notre version RYO et après une année à deployer plusieurs projets en production, GraphQL est et restera un solide composant de notre architecture.

Kotlin

  • En 2016, notre choix de principal language de développement s'est porté sur Kotlin après un réel coup de coeur ( qui s'est confirmé tout au long de l'année 2017 ). Kotlin est assurément la meilleure chose qui soit arrivée à l'écosystème Java depuis Spring. C'est une vraie oeuvre d'art binaire élégamment pensée pour être simple et améliorer la productivité.
  • Kotlin est le language de référence dans la création des APIs ainsi que les applications Android et parfois web.

Spring Boot

RYO est fortement dépendant de Spring Boot qui nous aide à construire plus simplement nos (micro)services. Notre but n'étant pas de réinventer la roue, nous nous reposons sur des solutions open-source robustes lorsque celà est nécessaire.

PostgreSQL

En terme de données, notre choix se porte le plus souvent sur PostgreSQL que nous considérons comme le SGBD libre le plus robuste et flexible du marché. Nous gardons toutefois un oeil très curieux sur l'évolution de CockroachDB que nous pensons être très prometteur.

DGraph

Stocker les données dans un format relationnel n'est pas toujours l'approche la plus optimale. Considérer la création d'un graphe de données peut changer de façon considérable l'impact d'un produit. Dgraph est notre moteur de graphes de référence.

ReactJS

Après avoir évalué (et réévalué) AngularJS, VueJS et ReactJS notre choix s'est arrêté ReactJS pour construire toutes nos interfaces utilisateurs. En effet, nous avons jugé que ReactJS nous permettait de mieux atteindre nos objectifs de créer des briques fonctionnelles réutilisables.

Portabilité applicative

Le marché que nous ciblons n'est pas toujours ouvert à l'hébergement des applications dans le cloud. Même si nous mettons en avant notre rôle de conseil auprès de nos clients, notre objectif n'est pas de forcer l'adoption du cloud.
Nous construisons toutes nos applications avec une contrainte importante: une application peut être hébergée dans le cloud puis portée dans un serveur dédié chez le client et vice-versa.

Nous avons donc construit RYO pour nous permettre de faire exactement celà en choisissant des outils et technologies qui nous permettent de bénéficier des avantages du cloud sans en être tributaire.

Docker + Kubernetes

Sans Docker, il nous serait difficile de respecter notre contrat de construire des applications portables. Le socle RYO nous permet de créer des solutions qui sont compatibles avec un déploiement dans des conteneurs.

Docker nous permet de packager et deployer nos solutions avec le moins de contraintes systèmes possibles.

Notre environnement de production cloud est construit par dessus Kubernetes, une autre merveille de technologie.

Un premier aboutissement

RYO nous permet aujourd'hui de construire des applications de qualité dans des délais réduits tout en respectant toutes les contraintes de qualité et d'architecture que nous nous sommes imposés.

En une année, nous avons stabilisé le framework tout en travaillant sur une dizaine de projets tous en production à ce jour. Chaque nouveau contexte rencontré est une occasion de faire évoluer RYO vers un "grand plan" que nous présenterons vers la fin 2018.

Notre feuille de route est bien chargée et nous sommes impatients d'accompagner encore plus de clients dans l'accomplissement de leurs projets.

Le facteur Temps

On peut simplifier le coût de réalisation d'un projet avec la formule:
Coût = Ressource * Temps

RYO nous permet de faire beaucoup de choses avec peu de ressources humaines. Toutes nos ressources techniques sont mutualisées pour réduire les coûts à travers une automatisation de tout ce qui est automatisable. Reste alors le facteur temps.

Estimer les tâches d'un projet est toujours une composante très particulière qui relève plus souvent du subjectif que d'une science exacte ou de données objectives.

Pour arriver à une base de calcul objective, nous recourons à un outil de tracking d'activité.

Notre culture de travail n'est pas basée sur un rendement quantitatif, loin de là. Recourir à cet outil n'a qu'un seul objetif: mieux comprendre le temps que nous passons dans un projet et sortir avec une base d'estimation la plus réelle et objective possible. Plutôt que d'avoir un collaborateur qui va logger "une journée" de travail, nous nous dotons d'un mécanisme plus granulaire.


En se dotant d'une part d'un socle technique robuste et en comprenant mieux d'autre part la répartition du temps par projet, nous sommes très confiants d'avancer dans notre mission de construire des produits de qualité et de mieux accompagner nos partenaires.

Les projets informatiques viennent toujours avec leurs lots de surprises mais dans ce long voyage que nous démarrons, nous sommes certains de disposer d'ores et déjà d'une bonne monture facile à ménager.

Mais encore...

Vous aimez ce que vous avez lu ? N'hésitez pas à nous contacter pour continuer la discussion ou assister à nos ateliers techniques.