Mostrando postagens com marcador Dilson Pessanha. Mostrar todas as postagens
Mostrando postagens com marcador Dilson Pessanha. Mostrar todas as postagens

domingo, 28 de setembro de 2008

Espaço de Tuplas

Um espaço de tuplas tem como função criar uma abstração de memória compartilhada sobre um sistema distribuído. Por propiciar modelos de programação muito simples e com baixo acoplamento entre os elementos do sistema, espaços de tuplas têm sido empregados na construção de sistemas distribuídos complexos. O espaço de tuplas JavaSpaces é um dos mais populares espaços de tuplas para a linguagem Java. Ele tem como características relevantes a conformidade a objetos, a persistência e o emprego de transações. As atuais implementações de JavaSpaces apresentam restrições como: complexidade de configuração, limitação de alcance e não serem abertas. Por “complexidade de configuração” entende-se ter que usar boa parte da infra-estrutura Jini (feita para facilitar o desenvolvimento e administração de sistemas distribuídos) e o Remote Method Invocation (mecanismo de chamadas remotas padrão no ambiente Java), mesmo quando eles seriam dispensáveis. Por "limitação de alcance", entende-se não poder usar as implementações sobre redes amplas, como a Internet. Por “não ser aberto” entende-se que: ou o código fonte não está disponível ou o código fonte e o aplicativo são distribuídos por licenças de software proprietárias ou o uso do software requer algum componente proprietário. Um projeto de espaço de tuplas em conformidade com a especificação JavaSpaces.

Técnicas de Escabilidade

Escalabilidade pode ser definida como a habilidade de garantir a qualidade de serviço desejada à medida que a demanda de uso aumenta. Uma solução pode ser considerada escalável se continuar respondendo dentro de limites estabelecidos apesar de um aumento na sua carga.Para compreender o que e escalabilidade, primeiro e preciso entender a capacidade de um sistema, que pode ser definido como a quantidade de processos, ou usuários, que o sistema consegue suportar e ainda assim manter a qualidade do serviço. Se um sistema esta no máximo de sua capacidade e não consegue responder dentro de um limite estabelecido, podemos afirmar que esse sistema ultrapassou o seu limite de escalabilidade. Para escalar um sistema que atingiu a sua capacidade máxima, será preciso adicionar mais hardware. Esse hardware adicional pode ser adicionado verticalmente ou horizontalmente.E importante lembrar que, ao definir a arquitetura de uma solução, será preciso considerar como o sistema ira se comportar no caso do ambiente precisar ser escalado.
Escalabilidade VerticalE alcançada ao aumentar a capacidade em um hardware, entende-se por capacidade a adição de mais processadores, memória ou discos a maquina atual.Escalar de forma vertical dificilmente ira ter algum impacto na sua arquitetura.Apesar disso, não e possível garantir a disponibilidade da aplicação, uma vez que um único hardware representa um ponto único de falha, conhecido como SPOF (Single Point of Failure).Geralmente a escalabilidade vertical é mais barata e demanda um menor esforço de manutenção que a escalabilidade horizontal.
Escalabilidade HorizontalE possível alcançar a escalabilidade horizontal ao adicionar mais maquinas ao ambiente atual, aumentando assim a capacidade do sistema como um todo.Para distribuir a carga de maneira otimizada para cada servidor , você devera usar as técnicas de balanceamento de carga (Load Balancing) e de montagem de clusters.A arquitetura definida para a aplicação deve ser projetada tendo em mente que ela devera funcionar sem problemas em um ambiente que pode escalar horizontalmente.Ao escalar de forma horizontal você consegue garantir a flexibilidade, disponibilidade e confiabilidade para o ambiente e para a aplicação.Em contra partida você aumenta a complexidade e o gerenciamento da estrutura física da aplicação, alem de ser uma solução mais cara que a escalabilidade vertical.
Escalabilidade DiagonalPara implementar uma solução que seja confiável, resiliente, performática, escalável e de alta disponibilidade, que usa de forma inteligente todo o poder disponibilizado pelo hardware, se faz necessário aplicar em conjunto as técnicas de escalabilidade horizontal e vertical, conhecida como escalabilidade diagonal.
ConclusãoEscalabilidade significa adicionar hardware para manter e melhorar a performance de uma solução.Entretanto, apenas adicionar mais hardware pode não representar ganho de performance por parte da aplicação.Antes de escalar o ambiente, e importante validar se todos os gargalos da aplicação foram devidamente eliminados, se o código esta otimizado e o ambiente devidamente configurado e otimizado.Caso estas boas práticas não sejam executadas, escalar o ambiente apenas vai empurrar o problema mais pra frente. Por outro lado, quando a solução está devidamente otimizada, então escalar o ambiente se torna o próximo passo lógico para uma maior capacidade e performance para a solução.