Tuesday, January 22, 2013

Falácias da Computação Distribuída

Atualmente, nosso maior desafio enquanto desenvolvedores de software não é Java, JEE, .Net., JavaScript, HTML5, JBoss Seam, NoSql etc.
   Desenvolver software capaz de realizar transações ACID(atômicas, consistentes, isoladas e duráveis) em ambientes com dezenas de acessos simultâneos já permite que alguns problemas complexos da computação sejam para nós percebidos.
   E isto torna-se muito mais impactante em programas executados em vários servidores de aplicação em cluster.
   Ou seja, nosso maior desafio é a computação distribuída associada ao grande número de acessos simultâneos.
   Encontrei este artigo que descreve as "Falácias da Computação Distribuída". As autorias destas falácias são atribuídas à mentes como Peter Deutsch e James Goslin.
 
Falácias da computação distribuída:
    1. A rede é confiável
    2. A latência é zero
    3. A banda é infinita
    4. A rede é segura
    5. A topologia é imutável
    6. Existe apenas um administrador
    7. Não há custo para transporte de dados
    8. A rede é homogênea

    No texto do artigo, estão descritas algumas das consequências destes pensamentos que muitas vezes, por impulso, tomamos como verdade. Seguindo tais falsas verdades, acabamos construindo aplicações inseguras, com baixo desempenho e que não garantem a integridade da informação.
   Eu gostaria de reforçar os itens 2, 3 e 7. Quando nossa mente nos trás um falso sentimento de que as conexões têm latência zero, banda infinita e que não há custo para transporte de dados esquecemos de nos preocupar com o o alto consumo de recursos que nossos códigos podem gerar.
   Decisões arquiteturais de projetos devem levar em consideração os trade-offs impostos pelo mundo da computação distribuída em relação às regras de negócio envolvidas. É por isso que não existe e nunca existirá uma solução arquitetural única para qualquer sistema de informação.
   O nosso papel como programadores é descobrir como combinar soluções para minimizar os efeitos destas limitações de forma que as exigências das regras de negócio sejam satisfeitas com o resultado mais eficiente possível. Tenho redescoberto JEE à cada dia. E ela tem se mostrado uma tecnologia fantástica para atingir tal objetivo.

No comments:

Post a Comment