Colisweb
Zoom sur l'équipe Tech de Colisweb
Colisweb, commissionnaire de transport, crée des solutions logistiques autour du dernier km
Fondée en 2013, Colisweb prend en charge la responsabilité des livraisons pour les groupes de grande distribution, en délégant les livraisons à des sociétés de transport partenaires.
Sa spécialité: couvrir toute la France et tous types de colis (du flacon de parfum pour Marionnaud à la livraison d’une tonne et demie de matériau pour installer une cuisine Leroy Merlin en passant par le smartphone ou le four à micro-ondes).
Le petit plus: sa politique de livraison dernier kilomètre (zone périurbaine) pour désengorger la ville et être ainsi plus respectueux de l’environnement.
Arrivée du colisweber:
Km 1: Présentation de l’équipe et de l’organisation générale de l’entreprise.
Km 2: un point administratif relatif RH.
Km 3: l’assistante de site leur présente le trombinoscope des autres pôles et de l’ensemble de la boîte via un kit d’accueil commun.
L’objectif pour les nouveaux dev est que dès leur premier jour, si possible, ils puissent faire un premier commit sur un repo et dans l’idéal le déclenchement d’une première mise en production (ou dans la semaine). Cela leur permet de voir de bout en bout toute la chaîne de production et d’être ainsi rassurés.
Un mois après l’arrivée, un bilan d'étonnement est réalisé afin de rendre compte des difficultés rencontrées, des éléments appréciés et des éventuelles pistes d’améliorations.
Organisation des brigades:
Le pôle produit comprend une vingtaine de personnes en comptant l’ensemble des personnes qui travaillent autour du logiciel.
Sont inclus entre autres: un manager équipe produit (relation utilisateurs, test, design UX, UI); deux managers pour l’équipe dev. Les technos utilisées sont Ruby on Rails et Scala pour l'essentiel en back, il y a deux dev front-end qui travaillent en react, react native, ReScript pour les pages web et l'application mobile. Deux personnes sont également chargées de la R&D (algorithmes, recherche) et une supervise la partie Ops (infrastructure, CI/CD).
Implantation de la stack:
Au niveau production, ils travaillent avec EKS (le Kubernetes d’Amazon) depuis quatre ans. Cela permet que l'infrastructure soit “as code”, c'est-à-dire que toute l'infrastructure soit recréable et recréée régulièrement à partir de l’intégration continue sur GitLab.
Nouvel environnement pour les deux nouveaux testeurs: créé avec terraform. Sur la partie déploiement, ils sont sur du déploiement continu. Ils utilisent GitLAB CI et Helm pour les déploiements sur Kubernetes.
Ils sont en architecture micro-services avec une quinzaine de services Scala en plus du service historique fait en Ruby. Ils ont chacun leur propre repository sur Git et leur pipeline attitré ce qui permet de les déployer effectivement indépendamment.
Quand ils font la mise en prod, c’est uniquement sur un seul des microservices afin de ne pas tout redéployer à chaque fois.
Les dev travaillent avec IntelliJ pour développer en Scala, les front sont sur VS code et les devs ruby sont sur RubyMine.
Pour l’hébergement, assez classiquement ils sont chez AWS.
Conteneurisation et organisation:
Pour les différentes tâches et leur découpage ils utilisent notion. Leur méthodologie est une méthodo maison inspirée d’un mix scrum/Kanban.
Kanban est de fait particulièrement indiquée pour les solutions métiers: on crée une carte qui correspond à un besoin métier et qui sera ensuite découpée en des cartes plus tech qui correspondront aux tâches de développement, chaque tâche faite par une seule personne en général.
Ils fonctionnent en flux tiré, il n’y a pas vraiment de sprint. En fait, il n’y a pas d'engagement sur une période de quelques semaines mais plutôt un objectif à l'échelle du trimestre. Des recommandations sont établies entre le CTO et le PM pour la roadmap:
⅓ du temps sera consacré en général aux sujets qui vont demander des évolution majeures ou logicielles.
⅓ du temps sera plutôt réservé pour des évolutions techniques (qualité, dette technique pour finaliser les POC etc…)
Un dernier ⅓ servira aux autres pôles demandes clients et aux réajustements, si quelque chose ne fonctionne pas sur le terrain.
Traçabilité du code:
La revue de code est systématique, elle est relue par au moins une personne avant d’être mergée à la branche principale et de partir en production. Cela comporte un double objectif: lever les défauts sur la qualité du code ou sur la compréhension du besoin et cela permet aussi la formation des équipes.
Ce n'est en effet pas automatiquement le senior qui relit le junior. C’est dans un sens réciproque et quand le junior relit un plus expérimenté que lui, il va alors pouvoir engranger de bonnes pratiques.
Tous les tests sont également automatisés et ce à plusieurs niveaux: que ce soit au niveau des tests unitaires, des tests d’intégration ou des tests de bout en bout.
A noter: un temps d'investissement égal est imparti pour développer une fonctionnalité comme pour développer les tests automatisés. C’est pour cela que les mises en production sont aussi rapides.
Avitaillement et tech vision:
Changement métier: en 2022 on a basculé de 10% à 60% des livraisons organisées en tournées à l'échelle de l’agglo. Tout le Pôle opérationnel va paramétrer les magasins, la taille des camions, le coût d’achat à l'équipage… en tout une bonne quinzaine de paramètres à prendre en compte.
Le logiciel va calculer la manière la plus efficace de livrer ou de commander par rapport aux équipages disponibles. Une attention particulière est portée sur :
- La qualité des solutions pour générer une empreinte carbone la plus faible possible et le coût d’achat le plus faible possible
- La prise en compte des cas particuliers. Comme par exemple, esquiver le péage en Suisse, si des livreurs sont proches du centre ville on évite qu’ils repartent pour ensuite revenir de plus loin. Les résultats sont très précis par rapport aux attentes.
- La livraison sur des créneaux de deux heures: contrainte très forte lorsque les tournées de livraisons sont générées afin que ces dernières respectent les délais de livraison.
Le départ entrepôts maintenant (plus que départ magasins) pour prendre des parts de marché: rupture de charge, transfert de responsabilité. Scan qui permettent de faire le lien. Mais il y a donc plus de points à prendre en considération
Les nouvelles fonctionnalités impliquent de nouveaux paramétrages, et donc nous avons toujours observé qu’il était plus compliqué d’adapter des logiciels déjà existants sur le marché que de développer en interne from scratch.
L’enjeu à moyen terme est de basculer de Scala 2 vers Scala 3 pour la montée de version. Scala steward permet de faire automatiquement les montées de version des biblio.
Un autre chantier de taille sera, l'année prochaine, de passer à l’international (un autre pays va ouvrir en Europe). Différentes problématiques vont ainsi émerger autour notamment de la traduction, de la répartition et de l’usage du logiciel entre plusieurs tenants…
La distribution Colis Web:
Scala, Réact front, Ruby pour le back.
Vous cherchez à faire de la programmation fonctionnelle, cela tombe bien: les Dev viennent spécialement chez Colisweb et sur ce marché de niche pour ce type de programmation. La particularité ici au niveau de l’équipe, c’est qu’il n’y a pas d’engagement sur des délais courts: l’entraide est donc extrêmement forte entre dev et c’est ce qui permet de maximiser in fine la valeur ajoutée du logiciel et de Colisweb dans son ensemble.
- Vues416