Antigamente, na época dos nossos queridos lentiums 233-MMX, todos nós podiamos trabalhar com dados confidencias com toda a segurança que somente o cérebro humano pode oferecer, afinal de contas para acessar informações dentro de um arquivo protegido por senha ou a pessoa sabia efetivamente a senha, ou se contentava em tentar quebra a senha com ataques de força-bruta por alguns longos anos (deixando o micro ligado 24h por dia, 7 dias por semana).
Pois bem esta segurança acabou. A velocidade dos processadores e das redes atuais, assim como a vasta disponibilidade de sistemas de clusterização permite hoje em dia que uma senha forte seja quebrada em alguns dias (para uma única pessoa dedicada e com material disponível), e em alguns casos em horas ou minutos. Tudo depende do parque computacional que será utilizado.
OK… OK… este é um fim menos nobre, mas eu não consigo pensar em outra coisa a não ser quebra de segurança. Os grids e clusters são utilizados hoje em dia para processamentos com custo computacional alto e de demanda urgente, como cálculos científicos, renderização de imagens e algumas aplicações comerciais também já começam a fazer uso destes gigantes modernos do processamento, a saber, essencialmente (mas não restrito a) processamento em servidores Web (como o Google faz, por exemplo).
Mas afinal… o que são clusters e grids?
Clusters são:
a) a unidade de armazenamento utilizado por seu HD (ele é dividido em setores e trilhas, de dentro da intersecção de cada setor/trilha existem vários clusters)… mas isso não interessa agora.
b) um conjunto de computadores interligados em rede coordenados por um sistema capaz de dividir tarefas “pesadas” entre as diversas máquinas que a compoem de modo a tirar o máximo proveito do processamento paralelo disponibilizado.
Um grid é a mesma coisa praticamente, no final das contas a grande diferença entre um grid e um cluster fixa-se essencialmente no fato de que em um cluster existe um computador “chefe”. É ele quem delega os jobs de processamento para os demais computadores da rede e, quando algum computador finaliza um job é ele quem fica sabendo e delega novas tarefas de execução. Existem diversos tipos de cluster, alguns procuram balancear as tarefas que são enviadas para cada máquina de acordo com a capacidade de processamento individual de cada uma: por exemplo, um lentium 100 receberia menos jobs que um Pentium IV 2.8GHz.
Um grid seria como um cluster cooperativo, um computador com pico de processamento poderia utilizar a capacidade de processamento computacional de outro computador quando este último estivesse ocioso e vice-versa.
Existem diversos projetos no mundo todo sobre a criação de parques computacionais comunitários: “você me empresta seu computador pra eu processar essa pequena rotina de 2 milhões de registros com complexos cálculos matemáticos e em troca eu permito que você faça o mesmo com o meu quando precisar”.
hum… o maior exemplo que eu posso citar aqui é o projeto SETI@home (Search for Extra Terrestrial Inteligence at Home), um projeto que usa o seu computador para cálculos matemáticos para pesquisa de vida inteligente fora da terra enquanto ele está ocioso (ele oferece uma protetor de tela). Eu instalei em casa mas não gostei, às vezes enquanto eu estava jogando ou trabalhando o protetor de tela se acionava sozinho, sem respeitar o tempo padrão estipulado no sistema operacional. Pra quem quiser colaborar é uma dica.
Espero que a “matéria” seja do agrado de todos.
Entenda mais sobre o assunto:
Clube do Hardware - Computação em Cluster
InfoWester - Cluster: Principais conceitos
Wikipedia - Cluster
Computação em Grid Brasil: Princípios de Grid Computing
Wikipedia - Computação em Grade
Abraço a todos…