Building Efficient Distributed Systems: A Domain-Specific Language Based Approach
Développement de systèmes distribués efficaces: une approche fondée sur les langages métiers
Résumé
In recent years, many distributed systems have evolved to cope with the convergence of their domain and computer networks. As an example, Internet telephony has drastically change the face of the telecommunications domain in the last decade by introducing many new services based on Web services and databases. Distributed systems that provide advanced services must be efficient to be able to treat a large number of users and must be robust to face various attacks targeting the service itself or the underlying platform. However, building efficient and robust distributed systems requires an intimate knowledge of the relevant protocols and a substantial understanding of low-level system and network programming, which can be a challenge for many programmers. Nevertheless, the development process of distributed systems still remains rudimentary and requires a high level of low-level expertise. In this thesis, we show that domain-specific languages (DSLs) can successfully reduce the level of expertise required to build efficient and robust distributed systems, making service programming in the reach of average developers. We present three contributions in this area. Our first contribution targets the creation of telephony services based on the SIP protocol. We have defined a domain-specific virtual machine for SIP and a DSL named SPL, providing the programmer with high-level notations and abstractions dedicated to telephony service development. The robustness of SPL has been a key factor in expediting service deployment. A variety of services have been written in SPL, demonstrating the usability and ease of programming of the language. Our second contribution is Zebu, a DSL-based approach for the development of network application protocol-handling layers. We have demonstrated, through various experiments, that this approach is a reliable alternative to manual development in the context of protocol-handling layers. Zebu generated code has good performance and has a significantly lower memory footprint than comparable existing manually encoded solutions, while guaranteeing the robustness and performance properties. The third contribution of this thesis is z2z, a generative approach to gateway construction that enables communication between devices that use incompatible protocols. Z2z includes a compiler that checks essential correctness properties, and a runtime system that hides low-level details from the gateway programmer. We have used z2z to automatically generate gateways between various incompatible protocols. The generated gateways run with a low runtime memory footprint, with essentially no runtime overhead.
Au cours des dernières années, de nombreux systèmes distribués ont évolué pour faire face à la convergence de leur domaine et des réseaux informatiques. À titre d'exemple, la téléphonie sur Internet a révolutionné le domaine des télécommunications par l'introduction de nombreux nouveaux services basés sur des services Web et bases de données. Les systèmes distribués qui fournissent des services avancés doivent être efficaces pour être en mesure de traiter un grand nombre d'utilisateurs et doivent être robustes pour faire face à diverses attaques ciblant le service lui-même ou la plate-forme sous-jacente. Cependant, le développement de systèmes distribués efficace et robuste exige une connaissance approfondie des protocoles utilisés et une certaine maîtrise de la programmation réseau et système bas niveau, ce qui peut être un défi pour de nombreux développeurs. Néanmoins, le processus de développement des systèmes distribués demeure rudimentaire et requiert un haut niveau d'expertise bas niveau. Dans cette thèse, nous montrons que les langages métiers (DSL) peuvent réduire avec succès le niveau d'expertise nécessaire pour construire des systèmes distribués efficace et robuste, ce qui rend la programmation de service à portée de développeurs moyens. Nous présentons trois contributions dans ce domaine. Notre première contribution vise la création de services de téléphonie basés sur le protocole SIP. Nous avons défini une machine virtuelle spécifique au domaine SIP et un DSL nommé SPL, offrant au programmeur des notations de haut niveau et des abstractions dédiées pour le développement de services de téléphonie. La robustesse de SPL a été un facteur clé dans l'accélération du déploiement de service. Une variété de services ont été écrits en SPL, ce qui démontre l'utilité et la facilité de programmation du langage. Notre deuxième contribution est Zébu, une approche basée sur les DSL pour le développement des couches de traitement protocolaires des applications réseau. Nous avons démontré, à travers diverses expériences, que cette approche est une alternative fiable pour le développement manuel des couches de traitement protocolaires. Le code généré par Zébu a de bonnes performances et a une empreinte mémoire nettement inférieur à des solutions existantes codées manuellement, tout en garantissant les propriétés de robustesse et de performance. La troisième contribution de cette thèse est z2z, une approche générative à la construction de passerelles qui permet la communication entre des appareils qui utilisent des protocoles incompatibles. Z2z inclus un compilateur qui vérifie des propriétés de correction et un support d'exécution qui masque les détails bas niveau au développeur de la passerelle. Nous avons utilisé z2z pour générer automatiquement des passerelles entre différents protocoles incompatibles. Les passerelles générées fonctionnent avec une faible empreinte mémoire et pratiquement sans aucun surcoût à l'exécution.
Loading...