Le cloud Azure s'appuie sur le langage P

Par:
fredericmazue

mar, 23/05/2017 - 15:45

En 2012, Microsoft a présenté le langage P, un langage maison destiné au développement d'application asynchone. En 2016, Microsoft en a ouvert le code sur GitHub.

Pour mémoire, le langage P est dédié à la programmation asynchrone pilotée par événements. Microsoft a utilisé le langage P pour coder la pile du pilote USB pour Windows 8 et Windows Phone et souligne être parvenue à un résultat meilleur que ce qui avait été fait précédemment sans P.

P peut trouver des applications dans les applications réseaux, embarquées ou distribuées.

Un programme P modélise des machines à états qui communiquent entre elles par messages. Chaque machine à états a sa queue d'entrée, ses états de transitions, ses gestionnaires d'évènements et un espace local pour le stockage de variables. Les machines à états du programme tournent de manière concurrente. Chacune exécute une boucle d'évènements qui retire les messages de sa queue d'entrée et les traite. Le traitement peut consister en la modification de variables dans l'espace local, l'envoi de messages à d'autres machines, ou la création de nouvelles machines. L'envoi d'un message d'une machine vers une autre est non bloquant, le message étant simplement placé dans la queue de la machine destinataire.

Microsoft vient de communiquer sur le langage P dans un billet. en soulignant que ce langage est particulièrement adapté aux applications distribuées, asynchrones et tolérantes aux pannes. Donc adapté au développement d'infrastructures et services le cloud. Ainsi Microsoft utilise largement P sur Azure.

P transforme le développement d'infrastructure cloud dans Azure. Azure, tout comme les autres fournisseurs cloud, fait face au défi des Heisenbugs causés par des conflits inattendus (race condition), ainsi que par des bugs logiciels ou des pannes matérielles. Ces problèmes résultent en des interruptions de services, un souci majeur pour les fournisseurs cloud et leurs clients. P et P# sont utilisés pour détecter et corriger des heisenbugs dans des sercice déjà déployés et pour concevoir et valider de nouveaux services avant leurs déploiements. P permet aux ingénieurs de modéliser des interfaces asynchrones parmi les composants d'un grand service Azure. Il permet aux ingénieurs de découvrir et résoudre des problèmes sur leurs ordinateurs de bureau , alors que cela pourrait prendre des mois ou mêmes des années pour que ces problèmes se manifestent sur un service déployé, explique Microsoft.