Mark Stratmann
About Me Background Image

À propos de moi

Je suis un nerd en informatique et je le suis depuis très, très longtemps.

Expérience récente

Plateforme d’archivage des courriels

CTO et développeur full-stack senior

Responsable d’une plateforme complète d’archivage des courriels et de conformité de niveau entreprise, au service de plusieurs clients mondiaux. La plateforme traite des millions de courriels par jour, à la fois sur l’infrastructure infonuagique AWS et en déploiements sur site.

Technologies clés : TypeScript, Node.js, Go, Java 21, Spring Boot 3.5, React, Next.js, MongoDB, MySQL, Kafka, Kubernetes, Helm, Ansible ELK, Prometheus, Grafana, AWS, Docker, Cypress, Redis, Prisma, SAML 2.0, OAuth2

Infrastructure et DevOps

Déploiements Kubernetes: Créé 50+ configurations de chart Helm pour tous les services de la plateforme. Met en œuvre des politiques d’autoscaling, des budgets de perturbation de pods, et des politiques réseau pour une communication service-à-service sécurisée.

Infrastructure AWS: Mis en place des pipelines de déploiement automatisés à l’aide de modèles CloudFormation et de playbooks Ansible dans plusieurs régions AWS. Gère les passerelles VPN, les rôles IAM, les groupes de sécurité et la configuration DNS Route53.

CI/CD: Mis en œuvre Azure Pipelines pour les tests automatisés et les builds de conteneurs. Inclut l’exécution de tests en parallèle avec Jest et Mocha, les rapports de couverture de code et des pipelines de déploiement multi-étapes.

Surveillance: Intégré la collecte de métriques Prometheus, des tableaux de bord Grafana et la pile ELK pour l’agrégation des journaux. Mis en place des vérifications de l’état des services et des politiques d’alerte.

Environnements de développement Docker: Conçu des configurations docker-compose complètes pour le développement local, incluant :

  • Ensembles de réplicas MongoDB avec vérifications de santé mongosh
  • Bases de données MySQL/Percona avec des paramètres de collation personnalisés
  • Clusters Kafka/Zookeeper avec initialisation des sujets
  • Serveurs MinIO (compatibles S3) avec création de buckets
  • Architectures multi-services avec orchestration des dépendances
  • Outils de développement : kubectl proxy, mongo-express, kafdrop, clients MySQL

Images de conteneurs Docker: Construit et optimisé des images de conteneurs au moyen de builds multi-étapes pour :

  • Services Node.js: Images basées sur Alpine avec compilation TypeScript, node-prune pour l’optimisation de la taille, et exécuteurs distroless pour une empreinte d’exécution minimale
  • Services Go: Images basées sur devcontainer avec dépendances librdkafka pour la connectivité Kafka
  • Images de base Ubuntu: Images personnalisées préconfigurées avec Node.js, Java JDK, AWS CLI et des outils de développement

Conteneur de base Ubuntu: Construit et maintenu une image de base Ubuntu 22.04 avec Node.js, Java JDK 24, AWS CLI, ZooKeeper, etcd, Kafka et des outils de développement pour des environnements de build cohérents.

Conteneur CloudShell: Construit des conteneurs de base et d’outils Azure Cloud Shell avec PowerShell 7 et divers SDK Azure pour des flux de travail de gestion infonuagique Microsoft.

Conteneurs de développement VS Code: Configuré des environnements de conteneurs de développement pour plusieurs services avec prise en charge du développement à distance, passthrough SSH et gestion des extensions.

Base de données et gestion des données

MongoDB: Magasin de documents avec ensembles de réplicas pour une haute disponibilité. Met en œuvre des sauvegardes automatisées et des procédures de reprise après sinistre avec mongodump/mongorestore.

MySQL/Percona: Base de données relationnelle pour les données structurées, incluant des flux de travail de sauvegarde et de restauration Percona avec myloader/mydumper pour une migration de données efficace.

CouchDB: Magasin de documents en cluster pour le stockage de données distribuées avec des déploiements multi-nœuds.

Migration de bases de données: Développé des outils de migration de données entre des clusters MySQL et MongoDB, prenant en charge des transferts de données à grande échelle avec des tests d’intégration sur des jeux de données de type production.

Environnement de développement Claude Code (ralph-agent)

Projet personnel - Environnement de développement IA

Créé un environnement de développement basé sur Docker, optimisé pour des tâches d’agent IA de longue durée avec Claude Code. Comprend une configuration d’utilisateur non root avec passthrough SSH et Git, la gestion automatique des versions de Node.js via NVM, et la compatibilité avec VS Code Remote Development.

Technologies clés : Docker, Ubuntu 24.04, Node.js, VS Code Remote

Résumé

Vaste expérience dans la création de plateformes SaaS d’entreprise évolutives et multi-locataires, avec une expertise sur l’ensemble de la pile technologique. Capacité démontrée à concevoir des microservices, à mettre en œuvre des pipelines CI/CD robustes et à gérer des déploiements complexes d’infrastructure infonuagique. Solide expérience des systèmes d’authentification, des architectures orientées événements et des frameworks frontend modernes, avec un accent sur des bases de code maintenables et bien testées.

Sommaire technologique

TechnologyPurpose
TypeScriptLangage principal pour les API (Fastify, Express), le frontend (Next.js, React), la bibliothèque de types partagée (@cryoserver/types)
Node.jsRuntime backend pour 10+ microservices
GoService SMTP pour le transfert de courriel haute performance
ReactFramework UI pour les tableaux de bord destinés aux clients et l’administration interne
Next.jsFramework React pour les interfaces destinées aux clients
MongoDBMagasin de documents principal pour les données utilisateur et de configuration
MySQL/PerconaBase de données relationnelle pour les données structurées, utilisée avec Prisma ORM
CouchDBMagasin de documents en cluster pour les données distribuées
RedisMise en cache des sessions
Kafka/KafkaJSMessagerie orientée événements entre microservices
KubernetesOrchestration de conteneurs pour les déploiements en production
HelmGestionnaire de paquets pour 50+ configurations de chart Kubernetes
AnsibleProvisionnement d’infrastructure et gestion de configuration (AWS, Azure)
DockerConteneurisation pour tous les services avec builds multi-étapes
AWS SDKIntégration avec S3, IAM, Cognito et d’autres services AWS
OAuth2/JWTAuthentification et autorisation des API
CypressTests end-to-end et de composants pour les applications frontend
PrismaORM de base de données typé pour les migrations MySQL
ZodValidation à l’exécution pour les types TypeScript
MUI (Material UI)Bibliothèque de composants UI pour les applications Next.js
PuppeteerGénération de PDF
Node-RD KafkaClient Kafka pour les services Node.js
SolrService d’indexation et de requêtes de recherche
Prometheus/GrafanaCollecte et visualisation de métriques
ELK StackElasticsearch, Logstash, Kibana pour la journalisation centralisée
Azure PipelinesCI/CD pour les builds et déploiements automatisés
Playwright/MCPAutomatisation de navigateur pour des tests UI pilotés par IA
llama.cppInférence LLM locale pour des outils CLI expérimentaux
Shibboleth SPModule Apache pour la fédération SAML 2.0
ZooKeeperService de coordination pour les clusters Kafka et Solr
MinIOStockage compatible S3 pour le développement local
MavenOutil de build de projet Java avec tests Surefire
TurboRepoOutil monorepo pour gérer plusieurs applications Next.js