quarta-feira, 9 de dezembro de 2015

Aplicações das tecnologias - Virtualização

Bom, antes de tudo para quem não lembra o que é virtualização, e quais tipos existem, aí vai uma ajudinha: virtualização é, em poucas palavras,  a criação de um ambiente virtual que simula o real, e a partir desse conceito nasce os tipos de virtualização de servidores, desktop e de sistemas operacionais. Agora que já relembramos, vamos voltar ao objetivo dessa postagem: as aplicações da virtualização.

Consolidação de Servidores


A consolidação de servidores consiste em usar diversas máquinas virtuais em uma máquina física. Isso garante o isolamento dos servidores e apresenta vantagens, como: aumentar a taxa de utilização de servidores, reduzir os custos operacionais, criar ambientes mais flexíveis e reduzir custos de administração. Além disso, a consolidação permite ocupar menos espaço físico com servidores, o que propicia menos gasto com eletricidade e com manutenção de máquinas.

Essa aplicação pode ser encontrada em centrais ou filiais de empresas que consolidam seus servidores a um único computador, diminuindo custos e fornecendo várias funções para os usuários. Também pode ser usada para ajudar a centralizar a gestão de departamentos, permitindo que cada departamento possa manter o controle do seu sistema.


Desenvolvimento de Software
 
 

Uso da virtualização em ambientes de desenvolvimento e teste de software é normalmente realizado pelas mesmas razões da consolidação de servidores padrão - o desejo de obter maior utilização de hardware e reduzir custos operacionais. No entanto, o uso de ambientes virtuais para desenvolver e testar softwares tem dois objetivos que diferem da consolidação de servidores.

O primeiro é fornecer ambientes distintos, com sistemas operacionais diferentes ou de diferentes versões, para que se possa testar o software e verificar o seu comportamento em outros ambientes. O segundo é criar ambientes isolados no qual uma falha do software que está sendo desenvolvido não comprometa o sistema operacional da máquina hospedeira. Se o software em desenvolvimento vier a comprometer o sistema da máquina virtual, este pode ser recuperado copiando os arquivos de outra máquina, ou recuperando os arquivos da máquina comprometida do último backup.

Treinamento e Ensino

A virtualização pode ajudar em muitos níveis de treinamento e ensino. Aplicando esse método o estudante é isolado da máquina física, ou seja, ele tem acesso a uma instância de uma máquina virtual, que pode ser facilmente recuperada de uma falha após o seu uso. Além de facilitar a aplicação de aulas práticas e laboratórios multidisciplinares, já que é possível criar máquinas virtuais com sistemas operacionais e aplicações específicas a depender do tipo da aula.

As vantagens são basicamente as mesmas, redução dos custos de manutenção, aumento da flexibilidade e aumento da segurança.

Bom, essas são algumas das muitas aplicações da virtualização. Espero que tenham gostado! Até a próxima. :)


Referências: 

 
Virtualização: VMWare e Xen, por
Diogo Menezes Ferrazani Mattos - http://www.gta.ufrj.br/grad/08_1/virtual/artigo.pdf

Implementacao e Desempenho da Virtualização no DCOMP/UFS, por Anderson de  Paula Cassimiro - http://pt.slideshare.net/edmoreno/implementacao-e-desempenho-da-virtualizacao-no-dcomp-ufs
 
Professional Microsoft® Virtual Server 2005, por Ben Armstrong - https://eketab2.files.wordpress.com/2007/09/professionalmicrosoftvirtualserver2005.pdf

terça-feira, 8 de dezembro de 2015

Aplicações das tecnologias - Clusters

Já vimos em posts anteriores as vantagens, desvantagens e razões para o uso de clusters. Nesta postagem vamos abordar as principais situações em que esses supercomputadores são utilizados atualmente.

Projetos de grande porte

Clusters têm sido comumente usados ​​como ambientes de execução para diversos projetos de grande porte tais como modelagem meteorológica, simulações de acidentes de automóvel, ciências da vida, fluidodinâmica computacional, simulações nucleares, processamento de imagem, eletromagnetismo, mineração de dados, aerodinâmica e astrofísica. Estas aplicações são consideradas impossíveis de serem executas sem o uso de supercomputadores.

A necessidade de grandes recursos, tais como o tempo e poder de processamento, memória e comunicação distingue estes projetos de outros aplicativos. Por exemplo, a execução de aplicações científicas utilizadas na previsão de situações de risco de vida, tais como terremotos ou furacões, requer um enorme poder computacional e recursos de armazenamento.

Internet

No âmbito da Internet, existem diversos serviços que utilizam clusters. Dentre eles estão servidores web e proxy, servidores de banco de dados, motores de busca, tecnologias de segurança, e-mails, grandes portais e sites de e-commerce.

Na área comercial, estes servidores podem ser consolidados para criar o que chamamos de servidor corporativo. Este pode ser otimizado e gerenciado para aumentar sua eficiência e capacidade de resposta, dependendo da carga de trabalho, através de várias técnicas de balanceamento de carga. Muitos computadores comuns podem ser agrupados com armazenamento e aplicações para escalabilidade, alta disponibilidade e desempenho. As principais empresas que constroem estes sistemas são Compaq, Hewlett-Packard, IBM, Microsoft e Sun.

Mineraçao de dados

Clusters são também importantes ferramentas na mineração de dados, pois este procedimento requer o processamento de uma massiva quantidade de dados. A velocidade de processamento é de suma importância para os interesses comerciais, pois isso pode significar uma vantagem competitiva. Além disso, alguns conjuntos de dados já são distribuídos em toda a mídia, como a Internet, e o uso de clusters também pode diminuir o tempo necessário para o recolhimento dos dados.

Ray Tracing

Utilização do Ray Tracing no Autodesk
Por último mas não menos importante, temos o uso de clusters na renderização de imagens tridimensionais, inclusive no famoso método, chamado “ray tracing”. Essa é uma tarefa exigente, computacionalmente falando, que pode consumir horas ou mesmo dias de tempo de processamento.

Há uma série de razões pelas quais o uso de processamento paralelo (clusters) é benéfico para esse método, uma delas é a redução do tempo para renderizar imagens. Além disso, imagens que precisam de mais memória do que um processador individual tem disponível, pode ter tarefas divididas entre um número processadores, permitindo o processamento de imagens complexas. As principais questões incluem a tarefa difícil de segmentar os postos de trabalho entre os nós de processamento e minimizar os custos de comunicação.

Por enquanto, isto é tudo. No próximo post falaremos mais sobre as aplicações da virtualização. Gostou? Deixa seu comentário abaixo. :)

Referências:

"A Review of Applications of Cluster Computing", por Lucas Hope and Edmund Lam - http://www.buyya.com/csc433/ClusterApps.pdf

"Cluster Computing Tools, Applications, and Australian Initiatives for Low Cost Supercomputing", por Hai Jin, Rajkumar Buyya e Mark Baker - http://www.cloudbus.org/papers/IEAustMonitor.pdf

sexta-feira, 4 de dezembro de 2015

Aplicações das tecnologias - Computação em nuvem

Hoje começaremos uma série de posts falando sobre as principais aplicações das tecnologias abordas neste blog (Computação em nuvem, virtualização e clusters), começando hoje pela computação em nuvem, muito conhecida e usada, mesmo que indiretamente, pela grande maioria dos usuários da internet.

Armazenamento de dados


Uma das suas principais aplicações é o armazenamento de dados. Principalmente por meio das redes sociais, os usuários armazenam fotos, vídeos, documentos e outros tipos de informações para serem compartilhados, acessados e modificados por eles em qualquer lugar do globo.

Esta tecnologia também é utilizada de sua forma mais "direta", funcionando como um "disco rígido (HD) online". Nele, o usuário salva as suas informações como se fosse uma pasta do computador, colocando os arquivos e informações desejadas e acessando-os futuramente. Certos serviços de armazenamento também disponibilizam a modificação dessas informações diretamente, sem a necessidade de baixar a informação para o dispositivo.

Mas ele não se limita somente a guardar dados desejados na nuvem: também pode ser utilizado para backups de dados pessoais e críticos, garantindo que a chance deles serem perdidos seja praticamente nula. Grande parte dos serviços populares hoje, como Dropbox, OneDrive e Google Drive possuem uma boa segurança no ponto de vista dos seus servidores, porém não encriptam os arquivos que estão sendo enviados para o servidor. Neste caso, existem alternativas como Tresorit e Wuala que permitem uma encriptação tão grande que apenas o usuário tem acesso, nem mesmo a empresa podendo acessar ou recuperar a senha futuramente.

É possível acessar os seus dados em qualquer dispositivo, contanto que ele possua conexão com a internet.


eCommerce


Escalabilidade é o ponto-chave para o eCommerce: é ela que permite fazer um grande diferencial na economia, praticidade e eficiência de um eCommerce que trabalha com cloud computing. Em horário de pouco fluxo de clientes, o processamento pode ser reduzido dinamicamente, o que resulta em custos menores em horários com fluxo menor. O mesmo acontece em momento de pico e promoções (como Black Friday e natal), onde o fluxo de clientes aumenta fortemente e o poder de processamento acompanha este fluxo.

Isso evita uma série de problemas que haveria em meios tradicionais de servidores fixos em lojas, tais como: indisponibilidade do sistema com o fluxo de muitos usuários, alto consumo de processamento em momentos de pouco fluxo de clientes, lentidão em locais distantes da empresa de eCommerce (uma vez que o site pode ser acessado rapidamente em vários locais).

O único empecilho no Brasil é quanto a segurança, uma vez que as empresas brasileiras de computação na nuvem ainda possui algumas falhas nesse quesito, algo não problemático em relação as empresas internacionais.

O eCommerce cresceu drasticamente na última década, faturando mais de 12 bilhões de reais.


CRM (Costumer Relationship Managment)


O CRM, também chamado de Gestão do Relacionamento com o Cliente, é uma estratégia de negócio importante para as companhias, no qual se baseia em auxiliar e lhe fornecer o que ele procura da melhor e mais eficiente maneira. Como lida diretamente com clientes e lucros, muitas empresas procuram os melhores softwares para auxiliá-los neste processo.

Uma das principais vantagens desta estratégia aplicada à computação na nuvem é sua praticidade: pode ser utilizado em qualquer lugar, necessitando apenas de acesso a internet e um dispositivo para acessá-lo. Sua praticidade também facilita o acesso dos dados aos outros funcionários, podendo inclusive colaborarem simultaneamente no processo. Além disso, as ferramentas na nuvem sempre estão atualizadas, dispensando custos com manutenção e pausas nos servidores para modificar partes do sistema.

Principais processos do CRM.


Teste e Desenvolvimento


Um dos grandes destaques desta tecnologia neste meio é a facilidade de acesso ao produto em desenvolvimento. Instalação de aplicativos pesados, dedicados e exclusivos de sistemas operacionais são dispensados com a aplicação desta tenologia. Através da computação na nuvem, é possível acessar o produto em desenvolvimento em qualquer lugar, por meio de qualquer dispositivo. Isso significa que um funcionário pode começar a desenvolver um aplicativo, por exemplo, na empresa onde trabalha, continuar o desenvolvimento em casa e finalizá-lo enquanto está viajando.

Pelo fato da virtualização ser largamente aplicada para que a computação na nuvem no meio de testes e desenvolvimento, é possível obter e modificar com facilidade os ambientes de testes que o projeto passará. Com isso também é garantido que, se o software funcionar corretamente no ambiente da nuvem, funcionará também no ambiente real, já que é apenas uma simulação de um computador real.

Além disso tudo, os custos também são bastante reduzidos, uma vez que a escalabilidade (mesma utilizada no eCommerce) está presente e utiliza apenas o processamento necessário para realizar o desenvolvimento e testes das aplicações.

Cada vez mais empresas estão migrando seu desenvolvimento de projetos para a nuvem.

Referências

"Loaded and locked: 3 seriously secure cloud storage services", por Sarah Jacobsson Purewal - http://www.pcworld.com/article/2105100/loaded-and-locked-3-seriously-secure-cloud-storage-services.html

"Por que unir CRM e computação em nuvem?", por Ana Beatriz Ferreira - http://futurum.com.br/manufatura/por-que-unir-crm-e-computacao-em-nuvem

"Top 10 Common Uses for the Cloud for 2012", por Rackspace Blogger - http://blog.rackspace.com/top-10-common-uses-for-the-cloud-for-2012/

"Top 7 most common uses of cloud computing", por Maamar Ferkoun - http://www.thoughtsoncloud.com/2014/02/top-7-most-common-uses-of-cloud-computing/

"As vantagens de ter um e-commerce hospedado em nuvem", por André Tellini - http://www.tiespecialistas.com.br/2013/07/as-vantagens-de-ter-um-e-commerce-hospedado-em-nuvem/

"Develop and test applications faster in the cloud", por Microsoft Corporation - http://www.microsoft.com/en-us/server-cloud/solutions/cloud-development-test-environments.aspx

quinta-feira, 12 de novembro de 2015

Tipos de Cluster: parte 2 - MOSIX, OpenSSI e Kerrighed

Olá! Como já falado no post "anteanterior" e o anterior. Clusters são nada mais que computadores conectados entre si para que juntos formem um "supercomputador", com capacidade de processamento igual a soma da capacidade dos PCs que o formam. Existem muitas maneiras de se criar Clusters , porém as mais comum são usando o MOSIX, o OpenSSI e o Kerrighed. Nesse post falaremos sobre elas!

MOSIX
MOSIX (Multicomputer Operating System for Unix - Sistema Operacional de Multicomputador para UNIX) é um gerenciador de Cluters desenvolvido para sistemas operacionais de base Unix. É ideal para sistemas de Clusters, ao qual seja necessário a implementação de Cluster dos tipos: balanceamento de carga e de alto desempenho.
Esse tipo de Cluster faz uso de algoritmos que implementam a Migração Preemptiva de Processos e Balanceamento Dinâmico de Carga, que basicamente possibilitam, no Cluster, a migração de tarefas de um nó que já esteja sobrecarregado, ou ainda, que não ache que "dará conta do serviço", para outro que nó ainda mais poderoso e/ou desocupado tudo isso de forma transparente.

OpenSSI
OpenSSI é um solução Cluster baseado no MOSIX, e assim como ele, é destinado a Sistemas operacionais de base no UNIX. Sua diferenciação se dá na implementação da tecnologia SSI (Single System Image), que consiste basicamente de dar a ilusão ao usuário de que todo o Cluster é somente uma máquina. Nela, todos os recursos de todos os nós se relacionam, fazendo assim, o usuário "enxergar" como se todos fossem pertencentes a somente um único computador.
O OpenSSI, embora tenha recurso para implementação dos Clusters de balanceamento de carga, sua principal finalidade são os Clusters de tipo de alto desempenho e de alta disponibilidade.

Kerrighed 
O Kerrighed também usa a tecnologia SSI, e como os outros dois, é feito para sistemas de base Unix. A sua grande diferença, em relação aos dois acima, é a aplicação do conceito de DSM (Distributed Shared Memory - memória compartilhada, tradução não literal) onde a memória de todos os nós se somam e funcionam como uma só. O que em alguns casos pode parecer muito vantajoso


Referências
"Mosix - Instalação e configuração de um Cluster de balanceamento de carga", por rodrigo8819 - http://www.vivaolinux.com.br/artigo/Mosix-Instalacao-e-configuracao-de-um-Cluster-de-balanceamento-de-carga

"Cluster: conceito e características", por InfoWester - http://www.infowester.com/Cluster.php

"Aula 5 – Clusters", por Guilherme Galante - http://www.inf.unioeste.br/~guilherme/tsc/aula5

"Migração de Processos: Panorama de Soluções Populares e Avanços Recentes ", por Márcio Parise Boufleur, Rodolfo Leffa de Oliveira, Andrea Schwertner Charão - http://www-usr.inf.ufsm.br/~rodox/publicacoes/mig_resumo.pdf

"Montando um Cluster com Kerrighed", por João F. M. Figueiredo - http://www.joaomatosf.com/blog/index.php?option=com_content&view=article&id=57:montando-um-Cluster-com-kerrighed&catid=43:projetosdiversos&Itemid=60

segunda-feira, 26 de outubro de 2015

Tipos de cluster: parte 1 - Beowulf


Como já dito no último post, a função dos clusters é aumentar a capacidade de processamento através da divisão de tarefas entre vários processadores.  Isso pode dar a impressão de que clusters em geral são muito caros, viáveis apenas a grandes centros de pesquisa e empresas. Desde a criação dos clusters Beowulf, isso deixou de ser verdade, como é possível perceber a seguir.

O que é:

Criado em 1994, no CESDIS (Center of Excellence in Space Data and Information Sciences), uma contratante da NASA, por Don Becker e Thomas Sterling, o primeiro cluster Beowulf foi construído com 16 processadores Intel DX4, conectados por ethernet de 10MBit/s. Seu nome é uma referência ao poema épico inglês Beowulf, em que o protagonista teria a força de trinta homens.

O Borg, cluster Beowulf de 52 nós usado pelo grupo de pulsares da Universidade McGill

Pelos processadores usados no primeiro Beowulf – Intel DX4, também conhecido como i486, uma linha comercial comum na época – é possível perceber que o custo é relativamente baixo em relação à performance. Graças a esse custo-benefício, esse tipo de cluster é frequentemente usado em laboratórios de universidades, para a pesquisa científica.  

Neste tipo de cluster, um computador mestre, denominado front-end, controla os demais, chamados de back-end, geralmente através de redes Ethernet. Frequentemente é usada alguma variação de Linux, como o MOSIX, por questões de preço, independência e estabilidade, enquanto a comunicação entre os nós é feita por bibliotecas como a PVM (Parallel Virtual Machine) ou a MPI (Message Passing Interface).

Vantagens e desvantagens:

Graças à simples possibilidade de acrescentar novos componentes, os sistemas Beowulf são escaláveis, isto é, podem acompanhar a evolução das necessidades do usuário.

Beowulf de 8 nós

Além disso, a manutenção é relativamente simples, já que, no evento da falha de um dos nós, a solução é simplesmente substituir o nó, e o sistema utilizado é open source – permitindo a livre adaptação de suas características. Isso, junto a um custo muito baixo, por fazer uso de um sistema gratuito e de componentes baratos e de fácil obtenção, torna o Beowulf um tipo de cluster bastante acessível.

Por outro lado, apresenta latência superior e largura de banda inferior a outras arquiteturas, exigindo algoritmos que sejam tolerantes a isto. Como este problema existe porque o hardware de rede usado geralmente não foi criado com este intuito em específico, existe a possibilidade de atenuá-lo usando outras opções mais focadas a esse uso, mas isso implica em custos mais altos.

Entre os próximos posts, falaremos sobre outros tipos de cluster.


Referências:


"About Beowulf", pelo Pickett Group da UC Davis - http://yclept.ucdavis.edu/Beowulf/aboutbeowulf.html

"Clusters Beowulf", por Hugo Emanuel Gonçalves Teixeira, Maria João Almeida de Sá Barros e Paulo Jorge Marques Coelho - http://www.cesarkallas.net/arquivos/apostilas/redes/beowulf_clusters.pdf

"Uma Abordagem para Alta Demanda de Processamento Utilizando Cluster de Beowulf", por Líliam Barroso Leal e Francisco Xavier de Vasconcelos Filho - http://www.pop-pi.rnp.br/system/uploads/article/archive/1/Lilian_ClusterdeBeowulf_2011.pdf

"Cluster: conceito e características", por Info Wester - http://www.infowester.com/cluster.php