Nous démarrons un nouveau projet et mettons en œuvre l'instanciation de notre entreprise d'un cloud openstack (voir http://www.openstack.org/ ). Le projet est un outil de sécurité pour notre société. Nous exécutons actuellement plusieurs centaines de serveurs dédiés pour les outils de sécurité et les déplaçons vers l'instanciation openstack de nos sociétés.
D'autres projets dans mon entreprise utilisent actuellement erlang dans plusieurs applications de serveur distribué, et d'autres questions / réponses soulignent que erlang est utilisé dans plusieurs services cloud populaires. J'essaie de convaincre les autres de considérer où cela pourrait s'appliquer à notre projet.
Quelles sont les forces d'Erlang pour la programmation cloud? Où sont les zones où il est particulièrement approprié d'utiliser erlang?
la source
Réponses:
Outre le fait qu'Erlang a été spécifiquement développé pour être exécuté dans des situations simultanées / parallélisées / distribuées, les deux principales techniques qu'il emploie pour rendre cela possible sont:
Pas d'effets secondaires:
Cela signifie que lorsque vous donnez à une fonction une donnée à exécuter, cela n'affectera pas, sauf dans des cas très stricts, tout le reste du système / processus en cours d'exécution. Cela signifie que si vous exécutez une fonction 300 fois en même temps, aucune de ces 300 exécutions de la fonction n'affectera les autres.
La technique de mise en œuvre pour garantir l'absence d'effets secondaires est appelée «immuabilité», ce qui signifie grosso modo qu'elle ne peut pas être modifiée (modifiée). Cela signifie que dès que vous créez une variable, la valeur de cette variable ne peut pas être modifiée. Erlang implémente ce comportement avec une "affectation unique", donc après avoir attribué une valeur à une variable, vous ne pouvez plus lui attribuer de valeur.
Cela garantit qu'aucun code ne peut accidentellement modifier la valeur de X provoquant une condition de concurrence critique, il est donc intrinsèquement thread-safe et l'utilisation simultanée devient triviale. C'est un comportement très rare parmi les langages logiciels et le plus grand moyen par lequel Erlang parvient à être aussi bien adapté à une exécution simultanée.
Le modèle d'acteur:
Il s'agit d'une méthode particulière de modélisation qui a montré que la mise en œuvre et la gestion du traitement simultané étaient très simples pour les développeurs. Directement à partir de wikipedia (http://en.wikipedia.org/wiki/Actor_model):
la source
Erlang est particulièrement performant en informatique concurrente / parallélisée. En fait, il a été conçu à l'origine dans ce but précis. Il n'a rien d'inhérent au cloud, sauf que, souvent, des applications lourdes de calcul sont parallélisées et déployées dans des instances "cloud" pour faciliter l'augmentation / la réduction de la capacité à la demande.
Le reste n'est que du marketing.
la source
Un aspect du cloud différent des déploiements matériels traditionnels est la facilité avec laquelle vous pouvez faire tourner de nouvelles instances en cas de besoin. La capacité de surveiller d'autres nœuds et processus sur d'autres nœuds, rend relativement simple la construction de systèmes hautement dynamiques qui peuvent ajouter ou supprimer des vms et les gérer selon les besoins.
Cela est particulièrement vrai si vous construisez votre système à l'aide du cadre OTP (Open Telecom PLatform) d'erlang, qui fournit à la fois la structure et les mécanismes (arborescences de superviseur) pour prendre en charge la construction de trucs assez sophistiqués avec beaucoup moins d'effrot que vous ne l'imaginez. Erlang gère tous les bits délicats afin que vous n'ayez pas à le faire.
la source