Introduction
L'auteur, avec plus de dix ans d'expérience dans la construction d'infrastructures de données, constate un écart entre l'élégance conceptuelle des langages de programmation et des bases de données, et la réalité de leur développement et de leur exploitation. Les systèmes sont souvent fragiles, difficiles à modifier et faciles à casser.
Contexte Technique
Les ingénieurs en infrastructure développent une paranoïa face aux changements, consacrant plus d'efforts à tester et déployer des modifications qu'à les réaliser. Les outils et les modèles actuels obligent à choisir entre des outils puissants et des outils polyvalents, ce qui semble être une fausse dichotomie. Les modèles sont essentiels car ils permettent aux ordinateurs de représenter le monde de manière simplifiée, facilitant ainsi la création de programmes.
Les modèles forment une hiérarchie partiellement ordonnée, avec des modèles de plus haut niveau qui offrent une réduction de la complexité mais également une perte de contrôle sur la façon dont les programmes sont « abaissés » en termes de niveau inférieur. Les outils travaillent en fonction d'un modèle spécifique et n'ont de prise que sur les concepts de ce modèle.
Analyse et Implications
La fragmentation des systèmes logiciels modernes, assemblés à partir de composants tels que des bases de données, des caches, des files d'attente, des services et des interfaces utilisateur, peut rendre le processus de développement fastidieux et frustrant. L'interopérabilité entre ces composants peut causer des problèmes de cohérence et de fiabilité.
Les modèles scellés, qui offrent une abstraction qui ne fuit pas souvent ses détails internes, sont idéaux car ils permettent de travailler dans un modèle aligné sur le domaine et de laisser les outils gérer les aspects fastidieux. Cependant, lorsqu'un système ne correspond pas à un seul modèle, les développeurs doivent souvent « descendre » à des niveaux inférieurs, perdant ainsi les avantages de la modélisation.
Perspective
Il est nécessaire de trouver un modèle qui puisse briser le compromis entre les outils puissants et les outils polyvalents. Le lancement de Cambra vise à développer un nouveau système de programmation qui repense la pile logicielle traditionnelle sur la base d'un nouveau modèle, visant à rendre le développement de logiciels plus cohérent et plus facile à gérer.
Les prochaines étapes consisteront à explorer les limites de ce nouveau modèle, à évaluer son impact potentiel sur le marché et la sécurité, et à surveiller les avancées dans le domaine de la composition logicielle pour identifier les opportunités de collaboration et d'amélioration.