Description
ØMQ ou zeromq est une une boite à outils réseau extrêmement légère, flexible et performante permettant à des acteurs distribués d'échanger un grand nombre de messages en utilisant des mécanismes de transport variés (in-process, inter-process, TCP, multicast). A la base conçue et optimisée pour le backend d'un système de trading en ligne, cette bibliothèque est aujourd'hui une solution générique et multi-langage et elle est utilisée par un large spectre d'applications: ipyparallel utilise zeromq pour la communication entre ses composants, les notebooks Jupyter l'utilisent pour s'entretenir avec les différents kernels, et de nombreux (micro)services web l'utilisent pour l'échange de messages et du RPC au sein de leur backend, comme entre autres chez Spotify (python, Zeromq, protobuf et gevent). A l'institut ChemTech (Haute Ecole d'Ingénierie et d'Architecture de Fribourg), on utilise cette technologie pour la communication en temps réel entre microservices qui monitorent, analysent, optimisent et contrôlent une halle de production chimique. Cette présentation propose de vous introduire aux patterns d'utilisation pythoniques de zeromq qui ont beaucoup évolués depuis Python 3.4 et l'arrivée de asyncio, aux possibilités de cette bibliothèque en terme d'architectures de communication et de sécurité, et de faire un état des lieux des forces, faiblesses et alternatives.