Estamos iniciando um novo projeto e implementando a instanciação de nossas empresas de uma nuvem openstack (consulte http://www.openstack.org/ ). O projeto é um conjunto de ferramentas de segurança para nossa corporação. Atualmente, executamos muitas centenas de servidores dedicados para ferramentas de segurança e os estamos movendo para a instanciação do openstack de nossas empresas.
Outros projetos em minha empresa atualmente usam o erlang em vários aplicativos de servidor distribuído, e outro ponto de perguntas e respostas destacam que o erlang é usado em vários serviços populares de nuvem. Estou tentando convencer outras pessoas a considerar onde isso pode ser aplicável em nosso projeto.
Quais são os pontos fortes de erlang para a programação em nuvem? Onde estão as áreas em que é particularmente apropriado usar erlang?
fonte
Respostas:
Além do fato de o Erlang ter sido desenvolvido especificamente para ser executado em situações simultâneas / paralelizadas / distribuídas, as duas principais técnicas empregadas para tornar isso possível são:
Sem efeitos colaterais:
Isso significa que, quando você fornece a uma função um dado para executar, ela não afeta, exceto em casos muito rigorosos, qualquer outra coisa no sistema / processo em execução. Isso significa que se você executar uma função 300 vezes ao mesmo tempo simultaneamente, nenhuma dessas 300 execuções da função afetará nenhuma das outras.
A técnica de implementação para garantir que nenhum efeito colateral seja chamado de "imutabilidade", que significa aproximadamente, não pode ser alterada (alterada). Isso significa que, assim que você cria uma variável, o valor dessa variável não pode ser modificado. Erlang implementa esse comportamento com "atribuição única", portanto, depois de atribuir um valor a uma variável, você não poderá atribuir um valor a ela novamente.
Isso garante que nenhum código possa alterar acidentalmente o valor de X, causando uma condição de corrida; portanto, é inerentemente seguro para threads e o uso simultâneo se torna trivial. Esse é um comportamento muito incomum entre linguagens de software e a maior maneira pela qual Erlang consegue ser tão adequado para execução simultânea.
O modelo do ator:
Essa é uma maneira específica de modelagem que demonstrou tornar a implementação e o gerenciamento do processamento simultâneo muito simples para os desenvolvedores. Direto da wikipedia (http://en.wikipedia.org/wiki/Actor_model):
fonte
Erlang é particularmente forte na computação simultânea / paralela. De fato, ele foi projetado originalmente para esse fim. Ele não tem nada a ver com nuvem, exceto que, muitas vezes, aplicativos pesados de cálculo paralelizam e implantam em instâncias de "nuvem" para facilitar o aumento / redução da capacidade sob demanda.
O resto é apenas marketing.
fonte
Um aspecto da nuvem diferente das implantações de hardware tradicionais é a facilidade com a qual você pode criar novas instâncias quando necessário. A capacidade de monitorar outros nós e processos em outros nós torna relativamente simples a criação de sistemas altamente dinâmicos que podem adicionar ou remover vms e gerenciá-los conforme necessário.
Isso é particularmente verdade se você estiver construindo seu sistema usando a estrutura OTP (Open Telecom PLatform) da erlang, que fornece estrutura e mecanismos (árvores de supervisor) para dar suporte à construção de coisas bastante sofisticadas com muito menos efrot do que você imagina. Erlang lida com todos os bits complicados para que você não precise.
fonte