Au revoir les Cron Jobs éparpillés : le planificateur de tâches centralisé de Heartbeat

2025-08-01
Au revoir les Cron Jobs éparpillés : le planificateur de tâches centralisé de Heartbeat

Heartbeat utilisait auparavant plusieurs scripts Cron pour gérer les tâches planifiées, ce qui entraînait des coûts de maintenance élevés et des erreurs fréquentes. Cet article décrit comment ils ont construit un planificateur de tâches centralisé et basé sur une base de données, utilisant une seule table de base de données `ScheduledTasks` et un seul travail Cron pour gérer toutes les tâches planifiées. En tirant parti d'AWS SQS pour le traitement asynchrone, le système garantit l'exécution fiable des tâches, des mécanismes de nouvelle tentative et une surveillance robuste. Cette approche résout les problèmes tels que le chaos dans la gestion des tâches, la difficulté de gérer les erreurs et simplifie l'ajout de nouvelles tâches planifiées.

Lire plus
Développement planification des tâches

Développement piloté par les types : comment les types simplifient les problèmes de programmation complexes

2024-12-19
Développement piloté par les types : comment les types simplifient les problèmes de programmation complexes

Cet article explore le concept de « développement piloté par les types », où l’auteur, s’appuyant sur son expérience avec le vaste projet Heartbeat en Typescript (plus de 300 000 lignes), montre comment le système de types de Typescript simplifie les problèmes de programmation complexes. L’idée principale est qu’en tirant pleinement parti du système de types, en permettant aux types de circuler librement dans toutes les couches de l’application, en commençant les nouvelles fonctionnalités par des définitions de types, en rendant les états illégaux impossibles à représenter, en analysant au lieu de valider les données et en maintenant l’honnêteté et la spécificité du code, les bogues sont considérablement réduits et l’efficacité du développement est améliorée. L’auteur partage également des techniques pour utiliser les fonctions pures comme ponts de types et le système de types comme outil d’introspection, tout en reconnaissant la nécessité occasionnelle de contourner les contraintes du système de types.

Lire plus