Estamos no final de 2010 e fazendo um pequeno balanço do ano vejo que o tema Cloud Computing tem despertado mais e mais atenção. Recorri ao Google Trends e comprovei que o numero de referencias ao assunto vem crescendo signficativamente.
Assim, resolvi escrever um texto com minha percepção do porque estamos falando tanto de computação em nuvem.
A computação evolui em movimentos pendulares, da mais completa centralização a total descentralização, e fazendo o caminho de volta quando os extremos são alcançados.
Nos anos 60 e 70 o paradigma era a computação centralizada. Foi a época de ouro dos mainframes. No inicio dos anos 80 vimos o movimento do downsizing e a descentralização, com a proliferação de redes locais e servidores. Parecia realmente uma grande idéia, até que nos descobrimos envolvidos por inúmeras ilhas tecnológicas, com custosas atividades de gerenciamento de redes e aplicações heterogêneas.
A falta de controle deste ambiente está levando a altas taxas de crescimento da capacidade computacional.
A maioria das organizações de médio a grande porte utiliza centenas ou mesmo milhares de servidores, de diversas tecnologias e fabricantes. Existem máquinas Windows em suas diversas versões, inúmeros matizes de Unix (Solaris, AIX e HP-UX), um número cada vez maior de máquinas rodando Linux e mesmo outros ambientes operacionais como mainframes. Estudos têm mostrado que a maioria das empresas que estão implementando aplicações corporativas, como ERP, as baseiam no mínimo em duas plataformas diferentes.
Este complexo e heterogêneo parque computacional é responsável por uma parcela significativa (pelo menos de 50%-60%) do orçamento de TI das empresas e infelizmente não é aproveitado em todo seu potencial. O cenário tecnológico para os próximos anos mostra que as empresas de médio a grande porte continuarão enfrentando grande complexidade e diversidade de ambientes, e todas estas plataformas deverão estar se comunicando umas com as outras. Em resumo, a maioria das empresas vai continuar operando com múltiplos ambientes e gerenciar com eficiência esta complexa infraestrutura é bastante complicado e caro.
A utilização dos servidores é bastante variada. Existem muitas máquinas dedicadas a atividades de suporte à própria infraestrutura, como servidores de correio eletrônico, servidores de impressão, servidores de rede, firewalls e assim por diante. De maneira geral seus níveis de utilização são bastante baixos, com médias de apenas de 5% a 10%, com períodos de pico de 30% a 40%. Os servidores de aplicação (e existem muitos dedicados a apoiar as aplicações em atividades de teste, não usados em produção) tendem a serem utilizados um pouco mais, com períodos de pico chegando a mais de 70%, embora sua utilização média também se situe em patamares baixos, de 15% a 20%.
É fácil explicar este baixo nível de utilização. Vamos imaginar um servidor dedicado à infraestrutura, como um servidor de impressão (print server). Imaginemos que das 168 horas disponíveis em cada semana (sete dias x 24 horas), este servidor é usado tipicamente umas 12 horas por dia útil da semana, ou doze x cinco, 60 horas, que equivale a apenas cerca de 40% do tempo total. Detalhando a utilização do seu processador, observamos que este servidor tem uma carga típica de intensa operação de I/O (“I/O bound”) e devido às suas características operacionais apenas em uma pequena porção de tempo tanto o processador como os dispositivos de I/O estarão operando ao mesmo tempo (as razões são várias, como paginação excessiva, baixo nível de multiprogramação e assim por diante). Em conseqüência, em grande parte deste período de utilização, o processador não está ocupado, havendo uma significativa ociosidade dos ciclos de CPU.
Além disso, a distribuição da carga de trabalho não é homogênea. De maneira geral um pequeno número de servidores concentra a maior parte da carga, com inúmeros outros sendo subutilizados. A lei de Pareto (também conhecida pela regra dos 80-20, diz que 80% de determinado resultado é explicado somente por 20% das causas que o provocam. Por exemplo: 80% da carga de trabalho computacional de uma empresa está concentrada em somente 20% dos seus servidores) aplica-se bem à distribuição da carga entre servidores. Em conseqüência, um pequeno número de servidores, geralmente os de mais alta capacidade computacional, encontram-se muitas vezes sob demanda excessiva, com centenas de outros quase não sendo utilizados.
Um complicador adicional: no ambiente de empresas cada vez mais interconectadas, a imprevisibilidade da demanda exige que os sistemas tenham condições de adaptar-se instantaneamente a flutuações significativas. Esta imprevisibilidade é potencializada pelas novas aplicações da Internet, como Web 2.0.
O cenário futuro, com advento de tecnologias que permitam uma computação cada vez mais onipresente (dispositivos equipados com chips trocando informações em tempo real) nos indicam um imenso volume de dados a serem manuseados e processados. Um exemplo pode ser os milhões e milhões de chips RFID (Radio Frequency ID), etiquetas eletrônicas embutidas em latas de cerveja ou pacotes de sucrilho, que permitirão rastrear em tempo real todo o ciclo de negócios, da fabricação à residência do consumidor.
O uso de inteligência (software) embarcada deve se acelerar nos próximos anos, com uso intensivo de tecnologia em alguns setores que são grandes desafios para a sociedade, como congestionamentos de trânsito nas grandes cidades, melhoria da eficiência das redes elétricas, conservação de água potável, distribuição de alimentos e serviços de saúde.
Temos portanto, um imenso potencial para usar a tecnologia de forma extremamente positiva, criando provavelmente uma nova revolução industrial.
Esta nova revolução industrial será baseada em software. Hoje, nossa civilização depende de software para funcionar. Software é “conhecimento engarrafado” e a própria “encarnação” digital dos processos de negócio. O software já está embarcado na maioria dos produtos que usamos hoje. Nada mais natural que busquemos conectar esta “inteligência” dispersa pelos produtos ou “coisas”, com os sistemas de gerenciam processos de negócio, otimizando as infra-estruturas físicas, sejam estas prédios, estradas, processos de logística e assim por diante.
O conceito da Internet das coisas, que podemos considerar como o próximo passo da evolução no uso da Internet tem o potencial de modificar profundamente nossa sociedade e a nossa economia. A Internet das coisas vai combinar a universalidade da Internet, que já é a principal infra-estrutura de comunicação do planeta com inteligência ou software embarcado em sensores e atuadores, modificando a maneira de como o mundo físico vai operar.
Mas, tratar este imenso volume de novas informações em tempo real vai demandar uma imensa capacidade computacional impossível de ser prevista em suas flutuações de demanda. Claramente é necessário um novo paradigma computacional, que ajuste, sob demanda, a capacidade computacional às demandas de carga de trabalho.
Portanto, dispor de ambientes dinâmicos, auto-ajustáveis, de alta disponibilidade e escalabilidade, com custos de propriedade adequados torna-se o grande desafio dos gestores de tecnologia das organizações e governos. Portanto, estamos falando de cloud computing!