Skip to content
A Bekkour
Québec, Canada · Télétravail ou relocalisation · Disponible maintenant

Al Mokhtar Bekkour

Ingénieur Rails & Go senior

Je construis et fais évoluer des SaaS multilocataires.

Sept ans à livrer du SaaS et du fintech en production avec Rails, et Go pour les parties critiques en performance. En ce moment je suis responsable du backend — facturation, planification, génération de documents — d'une plateforme multilocataire servant plus de 1 000 entrepreneurs, et de l'AWS qui la fait tourner.

7+
ans, senior
40 %
Requêtes Postgres plus rapides
1 000+
locataires sur une plateforme
Des milliers de jobs par mois
constat.almokhtar.dev
Tableau de bord Constat avec l'enregistreur d'écran intégré
En cours Constat

/ projets

Projets

Projets personnels
SaaS B2B En cours

Constat

Un outil de capture de bugs B2B : un lien enregistre l'écran, la console et le réseau du client pour que le support rejoue le repro exact au lieu de lui demander d'expliquer. Une extension navigateur et un enregistreur TypeScript à l'avant, un backend Rails 8, et un service Go qui diffuse les téléversements par WebSockets.

Rails 8GoHotwireWebSockets
Systèmes distribués En cours

Railyard

Une plateforme de déploiement en un clic pour des apps Rails sur AWS — un orchestrateur Rails pilotant une flotte d'agents Go via gRPC. Routage par serveur, builds Docker, journaux de déploiement en direct.

RailsGogRPCDocker
Infra analytique

Tally

Une plateforme d'analytique produit auto-hébergée — suivi d'événements, tunnels, rétention, détection d'anomalies et un tableau de bord en direct, avec des SDK sans dépendance pour Ruby, JavaScript, Python et Node. Rails 8, PostgreSQL, Solid Queue, Hotwire.

Rails 8PostgreSQLHotwire
SaaS construction

Material Estimations

Estimation pour la toiture et la construction — annoter les mesures sur un canevas de plans, calculer les coûts avec pertes, main-d'œuvre et TPS/TVQ canadiennes, exporter des rapports prêts à imprimer. Mon secteur exact chez C-CUBE, construit en solo. Vue 3, TypeScript, Pinia.

Vue 3TypeScriptVite
iOS · Web iOS en ligne · web en cours

Recall

Un outil d'étude de livres audio hors-ligne, publié en solo sur l'App Store. Surlignez un passage en pleine lecture, annotez-le, puis révisez tout un livre depuis une seule bibliothèque — avec une vraie lecture des chapitres M4B et tout gardé sur l'appareil. Sans compte, sans serveur ; traduit en 10 langues. Une version web est maintenant en préparation.

SwiftSwiftUIsur l'appareil

/ expérience

Expérience

7+ ans, 5 postes
2021 — Juin 2026

C-CUBE

Ingénieur logiciel senior

Ingénieur principal sur un SaaS multilocataire pour plus de 1 000 entrepreneurs en toiture — je suis responsable du backend pour la facturation, la planification et la génération de documents. J'ai réduit le temps médian des requêtes de 40 % par l'indexation et la réécriture des requêtes, construit les jobs Sidekiq + AWS SQS qui traitent des milliers de générations de PDF, synchros d'e-mails et événements de facturation par mois, et introduit Go pour l'outillage CLI qui gère les opérations de données par locataire, les backfills et les migrations. Je gère l'AWS (EC2/RDS/S3), le CI/CD et la stack Prometheus/Grafana.

RailsGoPostgreSQLAWS
2020 — 2021

Rounded

Ingénieur logiciel senior

Fonctionnalités de comptabilité et de conformité fiscale pour un SaaS fintech servant plus de 10 000 travailleurs autonomes australiens. Intégration de FreshBooks et Stripe pour une synchro des transactions en temps réel avec des exigences strictes d'exactitude financière, et automatisation de la facturation et du calcul des taxes — réduisant la saisie comptable manuelle des utilisateurs d'environ 60 %.

RailsReactStripe
2019 — 2020

HiFive Group

Ingénieur logiciel senior

ProCRM construit de zéro — un CRM pour des opérations de centres d'appels multinationaux entre Tanger et Londres. Schéma PostgreSQL conçu pour des millions d'enregistrements clients sous forte charge d'écriture, et les API REST et tableaux de bord en temps réel utilisés par la direction pour les KPI inter-bureaux.

RailsVuePostgreSQL
2018 — 2019

AgriVillage

Ingénieur logiciel

Fonctionnalités de place de marché pour une plateforme d'agritourisme en France — réservations, paiements Stripe, gestion des annonces. Requêtes et cache optimisés pour garder les temps de réponse bas sous charge.

RailsNuxtStripe
2017 — 2018

Com en Scène

Ingénieur logiciel

Plus de 15 sites clients livrés et déploiements CMS maintenus en production pour un portefeuille varié. C'est là que j'ai appris à respecter l'échéance de quelqu'un d'autre.

PHPSymfonyDrupal

App Academy (web full-stack) · OFPPT (informatique)

/ stack

Stack

Backend
Ruby on RailsGoSidekiqRESTGraphQL
Données
PostgreSQL — optimisation, indexation, multilocataireRedisMySQL
Cloud & DevOps
AWS — EC2RDSS3SQSLambdaDockerKubernetesGitHub Actions
Observabilité
PrometheusGrafanaLokiOpenTelemetry
Paiements & intégrations
StripeQuickBooksChargebeeFreshBooksNylasIntercom
Frontend
ReactEmberVueNuxtHotwire

/ Ma façon de travailler

La plupart des pannes que j'ai gérées n'avaient rien d'intéressant — un index manquant, ou un webhook qui passe deux fois à la reprise. Je construis pour les deux avant qu'elles arrivent.

/ Ma façon de voir

Ennuyeux, volontairement

Je préfère livrer quelque chose d'ennuyeux qui marche plutôt que quelque chose d'astucieux que je dois surveiller. Une nouvelle techno doit faire ses preuves — j'ai entretenu assez de l'enthousiasme des autres.

Le code legacy n'est pas l'ennemi. Il fait tourner l'entreprise, et il marche en général pour des raisons qu'on ne voit pas en le lisant une fois. Je le lis avant de le changer, et je change le moins possible.

Le but : un système que la personne suivante comprend sans moi dans la pièce.

Moins de pièces mobiles que le problème ne semble en demander.

/ Ce qui a cassé

Ce qui a cassé, ce que j'ai changé

Une synchro partenaire a passé le même événement deux fois.

À la reprise, l'intégration financière rejouait un webhook — le genre de chose qui fausse discrètement la réconciliation jusqu'à ce que les chiffres cessent de concorder.

FixClés d'idempotence, handlers rejouables, contrôles de réconciliation. Maintenant une panne ne fait que retarder la synchro au lieu de corrompre les données.

Des requêtes correctes à quelques locataires rampaient à mille.

Mauvais index, et des formes de requête dont le vrai coût n'apparaissait qu'une fois les données de chaque locataire derrière le filtre.

FixIndex et requêtes repris — environ 40 % en moins sur le temps médian. Pas astucieux, juste nécessaire.

Les backfills tournaient en scripts Rake et ne montaient pas en charge.

Les opérations de données par locataire et les migrations étaient des scripts Rake ponctuels — bien sur un portable, pénibles sur des données de taille production.

FixDéplacés vers de l'outillage CLI en Go. Le temps d'exécution des gros jobs a assez baissé pour qu'on cesse d'organiser l'entreprise autour.

/ Approche

Tout posséder de bout en bout — du schéma aux tableaux de bord

Je suis à l'aise pour posséder une fonctionnalité depuis la base de données où elle vit jusqu'à l'AWS qui la fait tourner. Ça se fait en général en trois passes.

01

Le schéma et les requêtes d'abord

Concevoir le Postgres pour le motif d'accès et le filtre multilocataire, et l'indexer avant que ça devienne un problème. C'est de là que vient le gain de 40 % chez C-CUBE — pas de l'astuce, juste façonner les données pour la façon dont elles sont réellement lues.

02

Jobs et intégrations

Le travail asynchrone passe sur Sidekiq + SQS — des milliers de générations de PDF, synchros et événements de facturation par mois. Les intégrations financières sont construites idempotentes et réconciliées dès le départ, pour qu'une reprise ou une panne partenaire ne corrompe jamais les chiffres.

03

L'infra et les yeux dessus

Ça tourne sur l'AWS que je gère — EC2, RDS, S3 — livré via GitHub Actions, surveillé via Prometheus et Grafana. Pour que, quand ça bouge, quelqu'un puisse vraiment le voir.

Du schéma aux tableaux de bord — une personne qui peut posséder toute la colonne.

/ Études de cas

Comment je raisonne

Construit pour moi

De petites choses que j'utilise chaque jour, alors je les ai bien faites.