Cursos 24 Horas

Cursos 24 Horas - Cursos Online

quinta-feira, 15 de agosto de 2013

MP3 o que é e como surgiu

MP3 (MPEG Audio Layer-3) é um formato eletrônico que permite ouvir músicas em computadores, com ótima qualidade. Assim como o LP, o K7 e o CD, o MP3 vem se fortalecendo como um popular meio de distribuição de canções. Mas porquê? A questão chave para entender todo o sucesso do MP3 se baseia no fato de que, antes dele ser desenvolvido, uma música no computador era armazenada no formato WAV, que é o formato padrão para arquivo de som em PCs, chegando a ocupar dezenas de megabytes em disco. Na média, um minuto de música corresponde a 10 MB para uma gravação de som de 16 bits estéreo com 44.1 KHz, o que resulta numa grande complicação a distribuição de músicas por computadores, principalmente pela internet. Com o surgimento do MP3 essa história mudou, pois o formato permite armazenar músicas no computador sem ocupar muito espaço e sem tirar a qualidade sonora das canções. Geralmente, 1 minuto de música, corresponde a cerca de 1 MB em MP3.
Sendo assim, não demorou muito para o formato se popularizar e conseqüentemente, deixar as gravadoras preocupadas com seus lucros. O MP3 alcançou um sucesso tão grande que quando as gravadoras se deram conta, o formato já estava presente em milhões de computadores em todo o mundo.

Como surgiu e o funcionamento do MP3

Em 1987, o IIS (Institut Integrierte Schaltungen), na Alemanha, juntamente com a Universidade de Erlangen, começou a trabalhar numa codificação perceptual de áudio para Digital Audio Broadcasting (Transmissão Digital de Áudio). Todo o trabalho resultou num algoritmo de compressão de áudio chamado MPEG Audio Layer-3, que tempos depois ficou conhecido como MP3.
Um dos objetivos da criação deste formato era conseguir reproduzir som com qualidade de CD com uma taxa de compressão razoável. Para gravar um CD, a taxa de gravação (bit rate) é de cerca de 1,4 Megabit por segundo. Em MPEG Audio Layer 1 e 2 (MP1 e MP2), as taxas são de 348 KB/s e 256-192 KB/s respectivamente. O MP3 conseguiu abaixar essa taxa para 128 e 112 KB/s. E mesmo com essa taxa mais baixa, a qualidade sonora foi mantida quase que totalmente. Isto foi possível graças às técnicas de codificação perceptual, que não é uma simples compressão de dados, mas sim, um método que consiste em somente utilizar as freqüências sonoras que são captadas pelo ouvido humano. Uma vez que um padrão de freqüência tenha sido definido para a audição humana, as demais freqüências (que não são captadas pelo homem) podem ser descartadas, já que não há razão para gastar espaço ao armazenar esses dados.
Neste ponto você deve ter percebido que as músicas originais (tanto em CD como nas gravadoras) são diferentes das canções convertidas para o formato MP3, já que trazem "excesso de informação". Falando de grosso modo, o que o MP3 faz é simplesmente "aparar" as músicas, deixando só o que é útil.

MP3 × Gravadoras

Com toda essa sofisticação e com toda a acessibilidade proporcionada pela internet, nada mais natural que o MP3 fizesse um grande sucesso, principalmente após o lançamento de softwares que funcionam como "tocadores" de MP3, como o pioneiro Winamp. Mas, até aí, nada havia sido feito pelas gravadoras, até que a empresa Diamond Multimidia lançou um aparelho (MP3Player) que permitia ao usuário ouvir seus MP3s onde quisesse, como num walkman: tratava-se do Rio. O aparelho despertou a fúrias das gravadoras que logo entrou com processos contra a companhia, sob a alegação de pirataria. Mas após muitas apelações (e uma quantia de dinheiro), a Justiça determinou que o Rio não era um aparelho de gravação digital de áudio, mas apenas um meio de execução de MP3. Após isso, o mercado viu (e vê) o lançamento de vários aparelhos compatíveis com essa tecnologia.

A Era Napster

O americano Shawn Fanning, desenvolveu um software que permitia aos internautas compartilharem MP3 pela internet: o Napster. O programa tornou muito fácil a tarefa de encontrar e baixar MP3 pela rede, pois possibilitou a formação de um enorme acervo de música digital. Isso porque o Napster usava um método totalmente diferente. Não armazenava nada em seus servidores, apenas um índice, que era necessário para a busca de canções. Uma vez que alguém tenha encontrado a música desejada, o download passava a ser feito a partir dos computadores de usuários do serviço que tenham a música armazenada em seu PC. Ou seja, cada computador cadastrado no serviço era ao mesmo tempo cliente e servidor.
Como o Napster proporcionou uma facilidade enorme para encontrar MP3, o serviço logo virou uma verdadeira "febre". A Indústria Fonográfica começou então, uma série de disputas judiciais contra o Napster. Inclusive a banda Metallica, com ações lideradas pelo baterista do grupo, Lars Ulrich, entrou com processos contra o serviço, assim como o cantor de rap Dr. Dre. Após muitas batalhas as gravadoras acabaram vencendo o Napster, que teve que tirar de seu índice todas as canções protegidas por direitos autorais (ou seja, quase todas as músicas), o que praticamente, tirou o serviço de funcionamento.
Mesmo com o Napster fora de jogo, outros sucessores apareceram e permitiram que a troca de músicas entre internautas continuasse.

Programas

Há vários programas bons para executar MP3, tanto para gravar, ouvir, ou fazer seu álbum no computador. Um dos mais usados, é o Winamp, que possui versões gratuitas e pode ser baixado em www.winamp.com. O programa é compatível com vários formatos e tem vários recursos. Um deles é a possibilidade de colocar skins ou peles (efeitos visuais no programa), que podem ser baixado em vários sites. O programa é leve e bastante intuitivo. Possui um gerenciador de listas de MP3 muito prático e que facilita a organização e a execução de faixas.
Para os usuários do sistema operacional Linux, existe um programa muito semelhante ao Winamp (inclusive nos recursos) que acompanha várias distribuições: trata-se do XMMS, cujo site é www.xmms.org.
Outros programas como os players de vídeo Windows Media Player (em versões atuais), o Real Player e o Quick Time, também executam MP3.

Gravação de MP3

O método de gravação de MP3 mais usado é o que consiste em colocar um CD de música no computador e, através de um programa ripper, como o FreeRIP (que pode ser baixado em www.mgshareware.com), converter as faixas do CD para arquivos MP3. Geralmente isso é feito da seguinte forma: o programa passa os dados digitais da canção no formato CD-DA (o formato do CD) e os armazenam num diretório temporário. Depois, esses dados são convertidos para o formato WAV e, em seguida, são comprimidos em MP3.
A qualidade sonora resultante depende do software usado, do hardware da máquina e da configuração escolhida. Pela taxa padrão de gravação de MP3 (128 Kbits por segundo), cada minuto de música corresponde à cerca de 1 MB em disco. Mas essa taxa pode ser alterada, conforme a disponibilidade de recursos dos softwares de gravação (ripper). Por exemplo, você pode aumentar essa taxa para 192 Kbits por segundo, o que aumenta a qualidade sonora, mas conseqüentemente, ocupa mais espaço.

Arquivos PDF

Cada vez mais tem-se usado arquivos dos mais diversos tipos "convertidos" para o formato PDF (Portable Document Format). Graças à internet, tornou-se possível e necessário realizar a distribuição e a troca de documentos eletrônicos entre indivíduos e empresas e, nesse ponto, a tecnologia PDF é a mais predominante. Este artigo mostrará um pouco da história deste formato, o porquê de ter se tornado tão popular e como é possível converter arquivos de vários tipos para o formato PDF.

Como surgiu o formato PDF

O PDF surgiu graças aos esforços de um dos fundadores da empresa Adobe Systems, John Warnock. A idéia inicial era criar uma tecnologia que permitisse a visualização de arquivos em qualquer computador, independente de plataforma, e que pudesse ser impresso em qualquer impressora.
A tecnologia PDF acabou sendo lançada com base na tecnologia PostScript. A primeira versão do PDF foi disponibilizada oficialmente em 1993, sendo composto por dois programas: o Acrobat e o Reader. O primeiro permite a criação de arquivos PDFs a partir de outro arquivo, enquanto que o segundo é um visualizador de arquivos em PDF e é distribuído gratuitamente (a primeira versão do Reader era paga).

Como funciona a tecnologia PDF

O PDF é um tipo de arquivo que representa na tela do computador páginas de documentos eletrônicos. É possível converter para PDF vários tipos de arquivos, desde os baseados em texto até documentos com tabelas, gráficos, imagens, etc. Para isso, o PDF gera arquivos usando os princípios essenciais da tecnologia PostScript, que é uma espécie de linguagem usada para constituir páginas para os mais diversos fins.
Em geral, é possível transformar para PDF qualquer arquivo que possa ser impresso. É neste ponto que geralmente há confusão. Boa parte dos programas que convertem arquivos para o formato PDF funcionam da seguinte forma: você instala o software em seu computador e ele será listado como uma impressora. Então, quando você quiser converter um arquivo para PDF, deve abrí-lo através do programa que o manipula, ir nas funções de impressão e lá selecionar o programa. Em seguida, basta clicar no botão Imprimir e o arquivo vai ser impresso no formato PDF.

Repare que o programa se instalou como se fosse uma impressora. A partir daí, em todo programa em que é possível imprimir, basta selecionar a impressora de PDF (ao invés de uma impressora de verdade) que ele converterá o arquivo em questão para esse formato. Em nosso exemplo, vamos utilizar o programa Paint.NET e imprimir para PDF uma tofografia. Para isso, a imagem foi carregada no programa e, em seguida, foi acionado o recurso de impressão em Arquivo / Imprimir. O Paint.NET utiliza o assistente de impressão do Windows, que pergunta qual impressora escolher:

O que permite ao PDF trabalhar com diversos formatos de arquivos não é bem uma compatibilidade com os programas relacionados, mas sim trabalhar com o formato que é enviado às impressoras. Quando você manda seu computador imprimir um arquivo, os dados são transmitidos à impressora de uma maneira que esta imprima o arquivo da forma mais fiel possível à versão eletrônica. De grosso modo, é como se seu computador tirasse uma foto do arquivo e enviasse à impressora de uma maneira que ela entende. O que o PDF faz é justamente capturar essa "foto do arquivo" e ao invés de imprimir em papel, imprime em um formato de visualização eletrônica.
Com a evolução da tecnologia PDF, é possível que esta trabalhe de maneira precisa com figuras, links, fontes e até com arquivos de som e vídeo. Tudo depende do programa que gera o arquivo em PDF. O Acrobat Reader, por exemplo, pode trabalhar de maneira integrada a vários programas mais conhecidos, principalmente com a linha Microsoft Office. Trabalhando de maneira conjunta com outros programas, é possível deixar o arquivo PDF gerado mais compacto, como melhor visualização e com maior fidelidade à versão original.
Algo importante a ser citado é que o PDF consegue distinguir fontes para a utilização dos textos. Assim, na conversão, ele não trata necessariamente os textos do arquivo como se fossem uma imagem. Ao invés disso, o PDF reconhece o texto e tenta formatá-lo o mais parecido possível com o arquivo de origem. É por isso que alguns arquivos em PDF saem diferentes do que a versão original. Se você utiliza uma fonte específica no arquivo, ela precisa estar instalada no computador de destino, do contrário a fonte do texto pode ser diferente. Para lidar com isso, é possível incorporar fontes e outros recursos ao arquivo PDF antes de sua geração. Basta explorar as funcionalidades do programa que você usa.
Atualmente, existem outros meios de se criar um arquivo PDF, mas o método que funciona como impressora é o mais comum. Vale frisar que os arquivos em PDF podem ser gerados e lidos em qualquer plataforma (Linux, Mac, Windows, etc).
Quando um arquivo é convertido em PDF, todo seu conteúdo é disponibilizado como se fosse uma imagem. Assim, o formato não permite que os textos sejam alterados, figuras sejam tiradas ou até mesmo que o arquivo seja impresso (este último requer a habilitação deste recurso no programa gerador). É até possível fazer edição de arquivos em PDF com ajuda dos programas geradores de PDF, mas de maneira muito limitada (desde que o arquivo não tenha recursos de proteção). É essa uma das razões da popularidade deste formato: é possível distribuir documentos mantendo a integridade dos arquivos, incluindo formatação, padrão de fontes, etc. Devido a isso, o formato PDF também é muito usado para a distribuição de livros eletrônicos.
O formato PDF é tão seguro que até mesmo é difícil corrompê-lo. Além disso, no ato da conversão de um arquivo em PDF, este é compactado. Assim, arquivos com 1 MB de tamanho podem ter 100 ou 200 KB. Por não se tratar de um formato "pesado", a distribuição de arquivos em PDF pela Internet já se tornou comum. Empresas que necessitam disponibilizar suas demonstrações financeiras, por exemplo, costumam fazer isso usando o formato PDF.

Finalizando

A tecnologia PDF se tornou um padrão para a distribuição de documentos, principalmente por permitir a integridade dos arquivos e uma compactação eficiente. Outro ponto de grande influência é o fato de que as pessoas trabalham com os mais diferentes tipos de programas. A variedade é tão grande que é impossível uma pessoa ter todos os softwares instalados em seu computador. Imagine a seguinte situação: um indivíduo usa um programa de edição de textos desenvolvido pela empresa em que trabalha e precisa enviar um relatório para uma determinada pessoa. Essa pessoa porém, usa apenas o OpenOffice.org para Linux, que não lê arquivos do programa da tal companhia. Para resolver o problema e entregar o relatório, basta convertê-lo para PDF e enviar ao destinatário, que certamente terá um programa para visualizar PDFs.
Graças a todas essas vantagens, o formato PDF está cada vez mais popular. Tanto, que hoje é possível até mesmo integrar arquivos de som e vídeo a documentos em PDF. Em um momento em que a disseminação de vírus e outras pragas digitais é cada vez maior, o PDF é a escolha certa para a troca de documentos, afinal até nisso ele possui vantagem: é praticamente impossível adicionar vírus ou programas maliciosos em arquivos PDF.

terça-feira, 13 de agosto de 2013

O que é Big Data?

Você já parou para pensar na quantidade e variedade de dados que geramos e armazenamos a cada dia? Bancos, companhias aéreas, operadoras de telefonia, serviço de busca on-line e redes de varejistas são apenas alguns dos inúmeros exemplos de empresas que convivem diariamente com grandes volumes de informação. A questão é que apenas ter dados não basta: é importante conseguir e saber usá-los. É aí que o conceito de Big Data entra em cena.
Neste texto, você verá o que é Big Data, entenderá o porquê de este nome estar cada vez mais presente no vocabulário dos ambientes de Tecnologia da Informação e compreenderá os motivos que levam o conceito a contribuir para o cotidiano de empresas, governos e demais instituições.

O conceito de Big Data

A princípio, podemos definir o conceito de Big Data como sendo conjuntos de dados extremamente grandes e que, por este motivo, necessitam de ferramentas especialmente preparadas para lidar com grandes volumes, de forma que toda e qualquer informação nestes meios possa ser encontrada, analisada e aproveitada em tempo hábil.
Big Data
Não é difícil entender este cenário: trocamos milhões de e-mails por dia; milhares de transações bancárias acontecem no mundo a cada segundo; soluções sofisticadas gerenciam a cadeia de suprimentos de várias fábricas neste exato momento; operadoras registram a todo instante chamadas e tráfego de dados do crescente número de linhas celulares no mundo todo; sistemas de ERP coordenam os setores de inúmeras companhias; enfim, exemplos não faltam - se te perguntarem, você certamente será capaz de apontar outros sem fazer esforço.
Informação é poder, logo, se uma empresa souber como utilizar os dados que tem em mãos, poderá saber como melhorar um produto, como criar uma estratégia de marketing mais eficiente, como cortar gastos, como produzir mais, como evitar o desperdício de recursos, como superar um concorrente, como disponibilizar um serviço a um cliente de maneira satisfatória e assim por diante.
Perceba, estamos falando de fatores que podem inclusive ser decisivos para o futuro de uma companhia. Mas, Big Data é um nome relativamente recente (ou, ao menos, começou a aparecer na mídia recentemente). Isso significa que somente nos últimos anos é que as empresas descobriram a necessidade de fazer melhor uso de seus grandes bancos de dados?
Pode ter certeza que não. Há tempos que os departamentos de TI contemplam aplicações de Data Mining, Business Intelligence e CRM (Customer Relationship Management), por exemplo, para tratar justamente de análise de dados, tomadas de decisões e outros aspectos relacionados ao negócio.
A proposta de uma solução de Big Data é a de oferecer uma abordagem ampla no tratamento do aspecto cada vez mais "caótico" dos dados para tornar as referidas aplicações e todas as outras mais eficientes e precisas. Para tanto, o conceito considera não somente grandes quantidades de dados, a velocidade de análise e a disponibilização destes, como também a relação com e entre os volumes.
O Facebook é um exemplo de empresa que se beneficia de Big Data
O Facebook é um exemplo de empresa que se beneficia de Big Data: as bases de dados do serviço aumentam todo dia
e são utilizadas para determinar relações, preferências e comportamentos dos usuários

Por que Big Data é tão importante?

Lidamos com dados desde os primórdios da humanidade. Acontece que, nos tempos atuais, os avanços computacionais nos permitem guardar, organizar e analisar dados muito mais facilmente e com frequência muito maior.
Este cenário está longe de deixar de ser crescente. Basta imaginar, por exemplo, que vários dispositivos em nossas casas - geladeiras, TVs, lavadoras de roupa, cafeteiras, entre outros - deverão estar conectados à internet em um futuro não muito distante. Esta previsão está dentro do que se conhece como Internet das Coisas.
Se olharmos para o que temos agora, já veremos uma grande mudança em relação às décadas anteriores: tomando como base apenas a internet, pense na quantidade de dados que são gerados diariamente somente nas redes sociais; repare na imensa quantidade de sites na Web; perceba que você é capaz de fazer compras on-line por meio até do seu celular, quando o máximo de informatização que as lojas tinham em um passado não muito distante eram sistemas isolados para gerenciar os seus estabelecimentos físicos.
As tecnologias atuais nos permitiram - e permitem - aumentar exponencialmente a quantidade de informações no mundo e, agora, empresas, governos e outras instituições precisam saber lidar com esta "explosão" de dados. O Big Data se propõe a ajudar nesta tarefa, uma vez que as ferramentas computacionais usadas até então para gestão de dados, por si só, já não podem fazê-lo satisfatoriamente.
A quantidade de dados gerada e armazenada diariamente chegou a tal ponto que, hoje, uma estrutura centralizada de processamento de dados já não faz mais sentido para a maioria absoluta das grandes entidades. O Google, por exemplo, possui vários data centers para dar conta de suas operações, mas trata todos de maneira integrada. Este "particionamento estrutural", é bom destacar, não é uma barreira para o Big Data - em tempos de computação nas nuvens, nada mas trivial.

Os 'Vs' do Big Data: volume, velocidade, variedade, veracidade e valor

No intuito de deixar a ideia de Big Data mais clara, alguns especialistas passaram a resumir o assunto em aspectos que conseguem descrever satisfatoriamente a base do conceito: os cincos 'Vs' - volume, velocidade e variedade, com os fatores veracidade e valor aparecendo posteriormente.
O aspecto do volume (volume) você já conhece. Estamos falando de quantidades de dados realmente grandes, que crescem exponencialmente e que, não raramente, são subutilizados justamente por estarem nestas condições.
Velocidade (velocity) é outro ponto que você já assimilou. Para dar conta de determinados problemas, o tratamento dos dados (obtenção, gravação, atualização, enfim) deve ser feito em tempo hábil - muitas vezes em tempo real. Se o tamanho do banco de dados for um fator limitante, o negócio pode ser prejudicado: imagine, por exemplo, o transtorno que uma operadora de cartão de crédito teria - e causaria - se demorasse horas para aprovar um transação de um cliente pelo fato de o seu sistema de segurança não conseguir analisar rapidamente todos os dados que podem indicar uma fraude.
Variedade (variety) é outro aspecto importante. Os volume de dados que temos hoje são consequência também da diversidade de informações. Temos dados em formato estruturados, isto é, armazenados em bancos como PostgreSQL e Oracle, e dados não estruturados oriundos de inúmeras fontes, como documentos, imagens, áudios, vídeos e assim por diante. É necessário saber tratar a variedade como parte de um todo - um tipo de dado pode ser inútil se não for associado a outros.
O ponto de vista da veracidade (veracity) também pode ser considerado, pois não adianta muita coisa lidar com a combinação "volume + velocidade + variedade" se houver dados não confiáveis. É necessário que haja processos que garantam o máximo possível a consistência dos dados. Voltando ao exemplo da operadora de cartão de crédito, imagine o problema que a empresa teria se o seu sistema bloqueasse uma transação genuína por analisar dados não condizentes com a realidade.
Informação é poder, informação é patrimônio. A combinação "volume + velocidade + variedade + veracidade", além de todo e qualquer outro aspecto que caracteriza uma solução de Big Data, se mostrará inviável se o resultado não trouxer benefícios significativos e que compensem o investimento. Este é o aspecto do valor (value).
É claro que estes cinco aspectos não precisam ser tomados como a definição perfeita. Há quem acredite, por exemplo, que a combinação "volume + velocidade + variedade" seja suficiente para transmitir uma noção aceitável do Big Data. Sob esta óptica, os aspectos da veracidade e do valor seriam desnecessários, porque já estão implícitos no negócio - qualquer entidade séria sabe que precisa de dados consistentes; nenhuma entidade toma decisões e investe se não houver expectativa de retorno.
O destaque para estes dois pontos talvez seja mesmo desnecessário por fazer referência ao que parece óbvio. Por outro lado, a sua consideração pode ser relevante porque reforça os cuidados necessários a estes aspectos: uma empresa pode estar analisando redes sociais para obter uma avaliação da imagem que os clientes têm de seus produtos, mas será que estas informações são confiáveis ao ponto de não ser necessário a adoção de procedimentos mais criteriosos? Será que não se faz necessário um estudo mais profundo para diminuir os riscos de um investimento antes de efetuá-lo?
De qualquer forma, os três primeiros 'Vs' - volume, velocidade e variedade - podem até não oferecer a melhor definição do conceito, mas não estão longe de fazê-lo. Entende-se que Big Data trata apenas de enormes quantidades de dados, todavia, você pode ter um volume não muito grande, mas que ainda se encaixa no contexto por causa dos fatores velocidade e variedade.

Soluções de Big Data

Além de lidar com volumes extremamente grandes de dados dos mais variados tipos, soluções de Big Data também precisam trabalhar com distribuição de processamento e elasticidade, isto é, suportar aplicações com volumes de dados que crescem substancialmente em pouco tempo.
O problema é que os bancos de dados "tradicionais", especialmente aqueles que exploram o modelo relacional, como o MySQL, o PostgreSQL e o Oracle, não se mostram adequados a estes requisitos, já que são menos flexíveis.
Isso acontece porque bancos de dados relacionais normalmente se baseiam em quatro propriedades que tornam a sua adoção segura e eficiente, razão pela qual soluções do tipo são tão populares: Atomicidade, Consistência, Isolamento e Durabilidade. Esta combinação é conhecida como ACID, sigla para o uso destes termos em inglês: Atomicity, Consistency, Isolation e Durability. Vejamos uma breve descrição de cada uma:
  • Atomicidade: toda transação deve ser atômica, isto é, só pode ser considerada efetivada se executada completamente;
  • Consistência: todas as regras aplicadas ao banco de dados devem ser seguidas;
  • Isolamento: nenhuma transação pode interferir em outra que esteja em andamento ao mesmo tempo;
  • Durabilidade: uma vez que a transação esteja concluída, os dados consequentes não podem ser perdidos.
O problema é que este conjunto de propriedades é por demais restritivo para uma solução de Big Data. A elasticidade, por exemplo, pode ser inviabilizada pela atomicidade e pela consistência. É neste ponto que entra em cena o conceito de NoSQL, denominação que muitos atribuem à expressão em inglês "Not only SQL", que em tradução livre significa "Não apenas SQL" (SQL - Structured Query Language - é, em poucas palavras, uma linguagem própria para se trabalhar com bancos de dados relacionais).
O NoSQL faz referência às soluções de bancos de dados que possibilitam armazenamento de diversas formas, não se limitando ao modelo relacional tradicional. Bancos do tipo são mais flexíveis, sendo inclusive compatíveis com um grupo de premissas que "compete" com as propriedades ACID: a BASE (Basically Available, Soft state, Eventually consistency - Basicamente disponível, Estado Leve, Eventualmente consistente).
Não é que bancos de dados relacionais tenham ficado ultrapassados - eles são e continuarão por muito tempo sendo úteis a uma série de aplicações. O que acontece é que, geralmente, quanto maior um banco de dados se torna, mais custoso e trabalhoso ele fica: é preciso otimizar, acrescentar novos servidores, empregar mais especialistas em sua manutenção, enfim.
Via de regra, escalar (torná-lo maior) um bancos de dados NoSQL é mais fácil e menos custoso. Isso é possível porque, além de contar com propriedades mais flexíveis, bancos do tipo já são otimizados para trabalhar com processamento paralelo, distribuição global (vários data centers), aumento imediato de sua capacidade e outros.
Além disso, há mais de uma categoria de banco de dados NoSQL, fazendo com que soluções do tipo possam atender à grande variedade de dados que existe, tanto estrurados, quanto não estruturados: bancos de dados orientados a documentos, bancos de dados chave/valor, bancos de dados de grafos, enfim.
Exemplos de bancos de dado NoSQL são o Cassandra, o MongoDB, o HBase, o CouchDB e o Redis. Mas, quando o assunto é Big Data, apenas um banco de dados do tipo não basta. É necessário também contar com ferramentas que permitam o tratamento dos volumes. Neste ponto, o Hadoop é, de longe, a principal referência.

Exemplos de bancos de dados noSQL: Cassandra, MongoDB, HBase, CouchDB e Redis
Exemplos de bancos de dados noSQL: Cassandra, MongoDB, HBase, CouchDB e Redis

O que é Hadoop?

O Hadoop é uma plataforma open source desenvolvida especialmente para processamento e análise de grandes volumes de dados, sejam eles estruturados ou não estruturados. O projeto é mantido pela Apache Foundation, mas conta com a colaboração de várias empresas, como Yahoo!, Facebook, Google e IBM.
Pode-se dizer que o projeto teve início em meados de 2003, quando o Google criou um modelo de programação que distribui o processamento a ser realizado entre vários computadores para ajudar o seu mecanismo de busca a ficar mais rápido e livre da necessidades de servidores poderosos (e caros). Esta tecnologia recebeu o nome de MapReduce.
Alguns meses depois, o Google apresentou o Google File System (GFS), um *sistema de arquivos especialmente preparado para lidar com processamento distribuído e, como não poderia deixar de ser no caso de uma empresa como esta, grandes volumes de dados (em grandezas de terabytes ou mesmo petabytes).
*Em poucas palavras, o sistema de arquivos é um conjunto de instruções que determina como os dados devem ser guardados, acessados, copiados, alterados, nomeados, eliminados e assim por diante.
Em 2004, uma implementação open source do GFS foi incorporada ao Nutch, um projeto de motor de busca para a Web. O Nutch enfrentava problemas de escala - não conseguia lidar com um volume grande de páginas - e a variação do GFS, que recebeu o nome Nutch Distributed Filesystem (NDFS), se mostrou como uma solução. No ano seguinte, o Nutch já contava também com uma implementação do MapReduce.
Na verdade, o Nutch fazia parte de um projeto maior: uma biblioteca para indexação de páginas chamada Lucene. Os responsáveis por estes trabalhos logo viram que o que tinham em mãos também poderia ser usado em aplicações diferentes das buscas na Web. Esta percepção motivou a criação de outro projeto que engloba características do Nutch e do Lucene: o Hadoop, cuja implementação do sistema de arquivos recebeu o nome de Hadoop Distributed File System (HDFS).
O Hadoop é tido como uma solução adequada para Big Data por vários motivos:
- É um projeto open source, como já informado, fato que permite a sua modificação para fins de customização e o torna suscetível a melhorias constantes graças à sua rede de colaboração. Por causa carcterística, vários projetos derivados ou complementares foram - e ainda são - criados;
- Proporciona economia, já que não exige o pagamento de licenças e suporta hardware convencional, permitindo a criação de projetos com máquinas consideravelmente mais baratas;
- O Hadoop conta, por padrão, com recursos de tolerância a falhas, como replicação de dados;
- O Hadoop é escalável: havendo a necessidade de processamento para suportar uma quantidade maior de dados, é possível acrescentar computadores sem necessidade de realizar reconfigurações complexas no sistema.
É claro que o Hadoop pode ser usado em conjunto com bancos de dados NoSQL. A própria Apache Foundation mantém uma solução do tipo que é uma espécie de subprojeto do Hadoop: o já mencionado banco de dados HBase, que funciona atrelado ao HDFS.

Logotipo do Hadoop
A denominação Hadoop tem uma origem inusitada: este é o nome que o filho de Doug Cutting, principal nome por
trás do projeto, deu ao seu elefante de pelúcia amarelo


O Hadoop, é bom frisar, é a opção de maior destaque, mas não é a única. É possível encontrar outras soluções compatíveis com NoSQL ou que são baseadas em Massively Parallel Processing (MPP), por exemplo.

Finalizando

Não podemos considerar as soluções de Big Data como um arsenal computacional perfeito: sistemas do tipo são complexos, ainda desconhecidos por muitos gestores e profissionais de TI e a sua própria definição ainda é passível de discussão.
O fato é que a ideia de Big Data reflete um cenário real: há, cada vez mais, volumes de dados gigantescos e que, portanto, exigem uma abordagem capaz de aproveitá-los ao máximo. Apenas para dar uma noção deste desafio, a IBM divulgou no final de 2012 que, de acordo com as suas estimativas, 90% dos dados disponíveis no mundo foram gerados apenas nos dois anos anteriores. Diante deste ponto de vista, é um tanto quanto precipitado encarar a expressão "Big Data" como uma mero "termo da moda".

O que é virtualização e para que serve?

A virtualização está presente tanto no desktop de um entusiasta pelo assunto quanto no ambiente de TI de uma infinidade de empresas das mais variadas áreas. Não se trata de "moda" ou mero capricho: graças a este conceito, é possível, entre outros benefícios, economizar com equipamentos e obter resultados de determinadas tarefas computacionais em menor tempo. Neste texto de introdução ao assunto, você saberá o que é máquina virtual, conhecerá as principais técnicas de virtualização existentes e descobrirá as suas principais vantagens.
Links diretos:

O conceito de virtualização

Apesar de ser uma ideia antiga - seu surgimento se deu na década de 1960, se propagando com mais força a partir de 1970 -, a virtualização é extremamente importante para o mundo cada vez mais "digital" de hoje. Podemos definir o conceito como soluções computacionais que permitem a execução de vários sistemas operacionais e seus respectivos softwares a partir de uma única máquina, seja ela um desktop convencional ou um potente servidor.
Sim, é como se você se deparasse com um ou mais computadores distintos dentro de um só. A diferença é que estas máquinas são virtuais: na prática, elas oferecem resultados como qualquer outro computador, mas existem apenas logicamente, não fisicamente.
Cada máquina virtual se traduz em um ambiente computacional completo: praticamente todos os recursos de seu sistema operacional podem ser utilizados, é possível conectá-las em rede, consegue-se instalar aplicativos, enfim.

Virtualização

Uma das razões para o surgimento da virtualização é que, anos atrás, na época em que os mainframes dominavam o cenário tecnológico e não havia computadores pessoais, por exemplo, não existia a praticidade de "adquirir, instalar e usar um software" - este era acompanhado de bibliotecas e outros recursos que o tornavam quase que exclusivos ao o computador para o qual foi desenvolvimento originalmente.
Desta forma, muitas vezes uma organização que implementava um novo sistema se via obrigada a adquirir um equipamento apenas para executá-lo, em vez de simplesmente aproveitar o maquinário existente, deixando toda a operação mais cara no final das contas.
A virtualização conseguiu resolver este problema: pode-se aproveitar um computador já existente para executar dois ou mais sistemas distintos, já que cada um roda dentro de sua própria máquina virtual. Evita-se, assim, gastos com novos equipamentos e aproveita-se os possíveis recursos ociosos do computador.
Nos dias de hoje, a virtualização permite, por exemplo, que uma empresa execute vários serviços a partir de um único servidor ou até mesmo que um usuário doméstico teste um sistema operacional em seu computador antes de efetivamente instalá-lo. Do ponto de vista corporativo, seu uso atual se destina a várias aplicações, como sistemas de ERP, serviços de computação nas nuvens, ferramentas de simulação, entre muitos outros.

Benefícios da virtualização

Você já conhece algumas das vantagens da virtualização, mas a sua utilização oferece vários outros benefícios. Os principais são abordados a seguir:

- Melhor aproveitamento da infraestrutura existente: ao executar vários serviços em um servidor ou conjunto de máquinas, por exemplo, pode-se aproveitar a capacidade de processamento destes equipamentos o mais próximo possível de sua totalidade;

- O parque de máquinas é menor: com o melhor aproveitamento dos recursos já existentes, a necessidade de aquisição de novos equipamentos diminui, assim como os consequentes gastos com instalação, espaço físico, refrigeração, manutenção, consumo de energia, entre outros. Imagine o impacto que esta vantagem pode ter em um data center, por exemplo;

Aproveitamento de capacidade: 
 uma máquina fazendo o papel de três
Aproveitamento de capacidade: uma máquina fazendo o papel de três

- Gerenciamento centralizado: dependendo da solução de virtualização utilizada, fica mais fácil monitorar os serviços em execução, já que o seu gerenciamento é feito de maneira centralizada;

- Implementação mais rápida: dependendo da aplicação, a virtualização pode permitir sua implementação mais rápida, uma vez que a infraestrutura já está instalada;

- Uso de sistemas legados: pode-se manter em uso um sistema legado, isto é, antigo, mas ainda essencial às atividades da companhia, bastando destinar a ele uma máquina virtual compatível com o seu ambiente;

- Diversidade de plataformas: pode-se ter uma grande diversidade de plataformas e, assim, realizar testes de desempenho de determinada aplicação em cada uma delas, por exemplo;

- Ambiente de testes: é possível avaliar um novo sistema ou uma atualização antes de efetivamente implementá-la, diminuindo significativamente os riscos inerentes a procedimentos do tipo;

- Segurança e confiabilidade: como cada máquina virtual funciona de maneira independente das outras, um problema que surgir em uma delas - como uma vulnerabilidade de segurança - não afetará as demais;

- Migração e ampliação mais fácil: mudar o serviço de ambiente de virtualização é uma tarefa que pode ser feita rapidamente, assim como a ampliação da infraestrutura.

Como a virtualização funciona?

Uma solução de virtualização é composta, essencialmente, por dois "protagonistas": o hospedeiro (host) e o hóspede ou convidado (guest). Podemos entender o hospedeiro como sendo o sistema operacional que é executado por uma máquina física. O hóspede, por sua vez, é o sistema virtualizado que deve ser executado pelo hospedeiro. A virtualização ocorre quando estes dois elementos existem.
A forma como hospedeiro e hóspedes trabalham varia conforme a solução. Em um método bastante comum há a figura do VMM (Virtual Machine Monitor - Monitor de Máquina Virtual), que também pode ser chamado de hypervisor: trata-se de uma espécie de plataforma implementada no hospedeiro que recebe os sistemas a serem virtualizados, controlando os seus recursos e mantendo-os "invisíveis" em relação aos outros.
Para que possa fazer o seu trabalho, o VMM tem um tratamento diferenciado: ele pode ser executado no "modo supervisor", enquanto que programas comuns (aplicativos) rodam no "modo usuário".
No "modo supervisor", o software pode requisitar instruções que lidam diretamente com certos recursos hardware, como funcionalidades específicas do processador. No "modo usuário", estes recursos mais críticos não podem ser acessados diretamente, cabendo ao sistema operacional, que trabalha em "modo supervisor", fazer uma espécie de intermediação quando necessário.
O VMM precisa ter acesso privilegiado porque cabe a ele alocar os recursos a serem utilizados por cada máquina virtual sob sua responsabilidade, assim como determinar a ordem pela qual cada solicitação destas será atendida.
O hóspede é executado em "modo usuário", mas como a máquina virtual possui um sistema operacional, qualquer requisição de instrução mais crítica solicitada por este é "interceptada" pelo hypervisor, que se encarrega de fornecê-la.

Virtual Machine Monitor
Virtual Machine Monitor

Virtualização total e paravirtualização

A virtualização por meio de Virtual Machine Monitor é comumemente dividida em duas técnicas: a virtualização total (full virtualization) e a paravirtualização (paravirtualization).
Na virtualização total, o sistema operacional do hóspede trabalha como se de fato houvesse uma máquina física inteiramente à sua disposição. Desta forma, o sistema não precisa sofrer nenhuma adaptação e trabalha como se não houvesse virtualização ali. O problema é que esta abordagem pode ter algumas limitações consideráveis.
Uma delas é o risco de algumas solicitações do hóspede não serem atendidas da maneira esperada. Isso acontece, por exemplo, quando o hypervisor não consegue lidar com determinada instrução privilegiada ou quando um recurso de hardware não pode ser plenamente acessado por não haver drivers (uma espécie de software que "ensina" o sistema operacional a lidar com um dispositivo) na virtualização capazes de garantir sua plena compatibilidade.
A paravirtualização surge como uma solução para problemas do tipo. Nela, o sistema operacional do hóspede roda em uma máquina virtual similar ao hardware físico, mas não equivalente.
Como este método, o hóspede é modificado para recorrer ao hypervisor quando necessitar de qualquer instrução privilegiada e não diretamente ao processador. Assim, o VMM não precisa interceptar estas solicitações e testá-las (tarefa que causa perda de desempenho), como acontece na virtualização total.
Além disso, a paravirtualização diminui expressivamente os problemas com compatibilidade de hardware porque o sistema operacional do hóspede acaba podendo utilizar drivers adequados - na virtualização total, os drives disponíveis são "genéricos", isto é, criados para suportar o máximo possível de dispositivos, mas sem considerar as particularidades de cada componente.
A principal desvantagem da paravirtualização é a necessidade de o sistema operacional ter que sofrer modificações para "saber" que está sendo virtualizado, podendo gerar custos com adaptação e atualização ou limitações referentes à migração para um novo conjunto de hardware, por exemplo.
Na virtualização total, vale relembrar, não há necessidade de alteração do sistema, mas o procedimento fica sujeita aos problemas mencionados no início deste tópico. Assim, a adoção de um modo ou outro depende de análises e testes que possam determinar qual é mais vantajoso para determinado serviço.

Outros métodos de virtualização

O VMM não é a única técnica de virtualização que existe. Para que possa atender às mais variadas necessidades, vários métodos foram (e são) desenvolvidos. Entre os demais, tem-se o Process Virtual Machine, o Operating System Virtual Machine e a virtualização assistida por hardware.

Process Virtual Machine (Máquina Virtual de Processo)

Neste método, a máquina virtual funciona como uma aplicação qualquer rodando dentro do sistema operacional. Um dos exemplos mais populares de máquinas virtuais do tipo é a linguagem de programação Java: nela, quando um programa é compilado, um código específico é gerado para ser executado por uma JVM (Java Virtual Machine - Máquina Virtual Java).
O Virtual Machine Monitor é uma camada de software diretamente ligada ao hardware, por isso, permanece ativo durante todo o tempo em que o computador permanecer ligado. No Process Virtual Machine, a máquina virtual é tratada como um processo, como o seu nome indica. Assim, assim quando a sua execução é concluída, o ambiente da máquina virtual deixa de existir.

Operating System Virtual Machine (Máquina Virtual de Sistema Operacional)

Você já sabe que um único computador pode suportar mais de uma máquina virtual, sem que uma saiba da existência da outra. O problema é que, muitas vezes, esta abordagem pode comprometer o desempenho. Uma das maneiras de lidar com este problema é o uso da técnica Operating System Virtual Machine (Máquina Virtual de Sistema Operacional).
Aqui, a máquina física recebe um sistema operacional, mas há a criação de vários ambientes virtuais sobre este. Cada um destes ambientes tem acesso a determinados recursos, como espaço em disco e quotas de processamento, mas compartilham do mesmo kernel (núcleo, isto é, a parte principal do sistema operacional). Normalmente, um ambiente não sabe da existência do outro.
Máquinas Virtuais de Sistema Operacional são bastante utilizadas, por exemplo, em empresas de hospedagem de sites: cada ambiente é oferecido a um cliente como se fosse um sistema exclusivo, quando, na verdade, o servidor está sendo compartilhado com vários outros usuários.

Hardware na virtualização

Até agora, lidamos com a virtualização como sendo uma variedade de técnicas baseadas em software. Mas o hardware também pode ter participação importante em soluções do tipo.
Empresas como Intel e AMD, as maiores fabricantes de processadores do mundo, desenvolveram (e desenvolvem) tecnologias que possibilitam aos seus chips um trabalho aprimorado em soluções de máquinas virtuais, especialmente no que diz respeito à virtualização total.
No caso da Intel, muitos de seus processadores atuais contam a tecnologia Intel Virtualization Technology (Intel VT), que consiste em um conjunto de instruções aplicadas ao chip especialmente para tratar de tarefas de virtualização. A AMD tem uma tecnologia equivalente (não há compatibilidade de uma com a outra), de nome AMD Virtualization (AMD-V).
Entre os recursos oferecidos por estas tecnologias está a capacidade de facilitar o trabalho de fazer com que o processador funcione como um conjunto de chips, um para cada máquina virtual em uso.

Algumas soluções de virtualização

Como a virtualização pode atender às mais distintas aplicações, há várias soluções do tipo no mercado, assim como diversas empresas especializadas no segundo. Eis algumas das mais conhecidas: VMware, Microsoft, Xen e VirtualBox.

VMware

A VMware é uma empresa de origem norte-americana especializada em virtualização. Seus produtos são bastante conhecidos no mercado e atendem a aplicações dos mais variados tamanho.
Um deles - o produto de entrada, por assim dizer - é o VMware Player, um software gratuito de virtualização que permite ao usuário doméstico criar uma máquina virtual para rodar outros sistemas operacionais no Windows ou no Linux. Assim, pode-se estudar um sistema, fazer testes de softwares, entre outros.

Ubuntu Linux no Windows 7 por meio do VMware Player
Outra solução bastante conhecida da empresa é o VMware Server, que também é gratuito, mas tem a proposta de atender ao segmento de servidores de pequeno e médio porte.
As soluções pagas da empresa, no entanto, são muito mais amplas em recursos, e podem atender desde servidores mais simples até grandes data centers.

Microsoft

A Microsoft também tem presença expressiva no mercado de virtualização, especialmente porque os seus softwares da categoria se integram facilmente aos seus sistemas operacionais - pelo menos na maioria das vezes.
Um deles é o gratuito Virtual PC, que permite ao usuário rodar em um computador com Windows versões antigas da plataforma ou mesmo outros sistemas operacionais, como distribuições Linux. Aqui, a ideia também é a de permitir ao usuário avaliar outros sistemas operacionais, realizar testes em softwares, enfim.
Mas o destaque mesmo fica por conta do Hyper-V, uma solução de virtualização que é integrada à linha de sistemas operacionais para servidores da empresa (como o Windows Server 2012), embora também funcione em determinadas versões para uso doméstico ou em escritórios (como o Windows 8).
Tendo como base o conceito de hypervisor, o Hyper-V consegue lidar com vários cenários de virtualização, inclusive aqueles de alto desempenho, podendo trabalhar, por exemplo, com data centers virtuais.
Entre os vários recursos do Hyper-V estão uma funcionalidade que permite passar máquinas virtuais de um servidor para outro (para que o primeiro seja reparado, por exemplo) e a capacidade de criar réplicas - é possível ter um número ilimitado de "cópias" de virtual machines para utilizá-las em testes ou cobrir imediatamente um serviço que ficou indisponível.

Xen

Xen é outro nome bastante forte quando o assunto é virtualização. Trata-se de uma solução baseada em VMM que teve seu desenvolvimento promovido pela Universidade de Cambridge, no Reino Unido. O projeto é compatível com várias plataformas e arquiteturas.
Disponibilizado como software livre, o Xen é gratuito e o seu código-fonte pode ser acessado por qualquer pessoa. Por isso, seu uso é bastante difundido no meio acadêmico e por entusiastas de sistemas Linux, por exemplo.
Em 2007, a XenSource, companhia que mantinha o projeto, foi comprada pela Citrix, outra grande empresa do segmento de virtualização. Assim, também é possível encontrar soluções pagas desta que levam o nome Xen.

VirtualBox

O VirtualBox é um projeto iniciado em 2007 por uma empresa alemã de nome Innotek, mas que hoje pertence à Oracle. Sua proposta é a de permitir ao usuário rodar um sistema operacional dentro do outro sem enfrentar complexidade.
Há versões do software para os principais sistemas operacionais do mercado, como Windows, OS X e distribuições Linux. A versão mais importante do VirtualBox tem código-fonte aberto e é gratuita, mas a Oracle disponibiliza edições para uso corporativo que exigem pagamento de licenças.

Desvantagens da virtualização

A infinidade de soluções e métodos disponíveis faz com que a virtualização atenda às mais variadas necessidades, como você já sabe, mas também não podemos entender o conceito como um "remédio milagroso" para todos os problemas de TI. Dependendo das circunstâncias, a virtualização também pode ter desvantagens. Eis algumas:

- Sobrecarga afeta a todas as máquinas virtuais: para começar, a quantidade de máquinas virtuais que um computador pode suportar não é ilimitada, razão pela qual é necessário encontrar um equilíbrio para evitar sobrecarga, do contrário, o desempenho de todas as máquinas virtuais será afetado;

- Segurança: se houver uma vulnerabilidade de segurança no VMM, por exemplo, todas as máquinas virtuais poderão ser afetadas pelo problema;

- Portabilidade: dependendo da solução em uso, migrar uma máquina virtual pode ser um problema. Um exemplo hipotético: quando um sistema utiliza instruções AMD-V, mas precisa ser transferido para uma máquina Intel;

- Contingência: em aplicações críticas, é importante ter um computador que possa atuar imediatamente no lugar da máquina principal (como um servidor), pois se esta parar de funcionar, todos os sistemas virtualizados que rodam nela também serão interrompidos;

- Desempenho: a virtualização pode não ter bom desempenho em todas as aplicações, por isso é importante avaliar muito bem a solução antes de sua efetiva implementação;

- Gastos: pode haver gastos não previstos com manutenção, mão-de-obra, treinamento, implementação e outros.

Finalizando


Apesar de se tratar de um conceito antigo - seu surgimento remete à década de 1960, como é informado no início do texto -, a virtualização tem ganhado grande destaque nos últimos anos e certamente terá seu espaço em soluções computacionais futuras.
Isso se deve ao fato de o poder de processamento do cenário atual ser elevado o suficiente para que determinadas aplicações possam aproveitar a capacidade ociosa dos computadores e também porque, com a informatização atingindo praticamente todos os setores da sociedade, há cada vez mais experiência na identificação das melhores soluções para cada necessidade.

O que é cloud computing (computação nas nuvens)?

A denominação cloud computing chegou ao conhecimento de muita gente em 2008, mas tudo indica que ouviremos este termo ainda por um bom tempo. Também conhecido no Brasil como computação nas nuvens ou computação em nuvem, cloud computing se refere, essencialmente, à ideia de utilizarmos, em qualquer lugar e independente de plataforma, as mais variadas aplicações por meio da internet com a mesma facilidade de tê-las instaladas em nossos próprios computadores.
Neste texto, você entenderá melhor o assunto e será apresentado aos conceitos relacionados.

Entendendo a cloud computing (computação nas nuvens)

Estamos habituados a armazenar arquivos e dados dos mais variados tipos e a utilizar aplicações de maneira on premise, isto é, instaladas em nossos próprios computadores. No ambiente corporativo, este cenário é apenas um pouco diferente, já que nele é mais fácil encontrar aplicações disponíveis em servidores que podem ser acessadas por qualquer terminal autorizado por meio de uma rede.
A principal vantagem deste modelo está no fato de ser possível, pelo menos na maioria das vezes, utilizar as aplicações mesmo sem acesso à internet ou à rede. Em outras palavras, é possível usar estes recursos de maneira off-line. Entretanto, todos os dados gerados estão restritos a este computador, exceto quando compartilhados em rede, coisa que não é muito comum no ambiente doméstico. Mesmo no ambiente corporativo, esta situação pode gerar algumas limitações, como a necessidade de se ter uma licença de um determinado software para cada computador, por exemplo.
A evolução constante da tecnologia computacional e das telecomunicações está fazendo com que o acesso à internet se torne cada vez mais amplo e cada vez mais rápido. Em países mais desenvolvidos, como Japão, Alemanha e Estados Unidos, é possível ter acesso rápido à internet pagando-se muito pouco. Esta tendência cria a condição perfeita para a popularização da cloud computing, fazendo com que o conceito se torne conhecido no mundo todo, inclusive no Brasil.
Com a cloud computing, muitos aplicativos, assim como arquivos e outros dados relacionados, não precisam mais estar instalados ou armazenados no computador do usuário ou em um servidor próximo. Este conteúdo passa a ficar disponível nas nuvens, isto é, na internet. Ao fornecedor da aplicação cabe todas as tarefas de desenvolvimento, armazenamento, manutenção, atualização, backup, escalonamento, etc. O usuário não precisa se preocupar com nenhum destes aspectos, apenas com acessar e utilizar.
Um exemplo prático desta nova realidade é o Google Docs, serviço onde os usuários podem editar textos, fazer planilhas, elaborar apresentações de slides, armazenar arquivos, entre outros, tudo pela internet, sem necessidade de ter programas como Microsoft Office ou OpenOffice.org instalados em suas máquinas. O que o usuário precisa fazer é apenas abrir o navegador de internet e acessar o endereço do Google Docs para começar a trabalhar, não importando qual o sistema operacional ou o computador utilizado para este fim. Neste caso, o único cuidado que o usuário deve ter é o de utilizar um navegador de internet compatível, o que é o caso da maioria dos browsers da atualidade.

Algumas características da cloud computing

Cloud computing - computação nas nuvens Tal como já informado, uma das vantagens da cloud computing é a possibilidade de se utilizar aplicações diretamente da internet, sem que estas estejam instaladas no computador do usuário. Mas, há outras significativos benefícios:
- Na maioria dos casos, o usuário pode acessar determinadas aplicações independente do seu sistema operacional ou de hardware;
- O usuário não precisa se preocupar com a estrutura para executar a aplicação: hardware, procedimentos de backup, controle de segurança, manutenção, entre outros, ficam a cargo do fornecedor do serviço;
- Compartilhamento de dados e trabalho colaborativo se tornam mais fáceis, uma vez que todos os usuários acessam as aplicações e os dados do mesmo lugar: a "nuvem". Muitas aplicações do tipo já são elaboradas considerando estas possibilidades;
- Dependendo do fornecedor, o usuário pode contar com alta disponibilidade, já que se um servidor parar de funcionar, por exemplo, os demais que fazem parte da estrutura continuam a oferecer o serviço;
- O usuário pode contar com melhor controle de gastos. Muitas aplicações em cloud computing são gratuitas e, quando é necessário pagar, o usuário só o fará em relação aos recursos que usar ou ao tempo de utilização. Não é, portanto, necessário pagar por uma licença integral de uso, tal como acontece no modelo tradicional de fornecimento de software;
- Dependendo da aplicação, o usuário pode precisar instalar um programa cliente em seu computador. Mas, neste caso, todo ou a maior parte do processamento (e até mesmo do armazenamento de dados) fica por conta das "nuvens".
Note que, independente da aplicação, com a cloud computing o usuário não necessita conhecer toda a estrutura que há por trás, ou seja, ele não precisa saber quantos servidores executam determinada ferramenta, quais as configurações de hardware utilizadas, como o escalonamento é feito, onde está a localização física do data center, enfim. O que importa ao usuário é saber que a aplicação está disponível nas nuvens, não importa de que forma.

Software as a Service (SaaS)

Intimamente ligado à cloud computing está o conceito de Software as a Service (SaaS) ou, em bom português, Software como Serviço. Em sua essência, trata-se de uma forma de trabalho onde o software é oferecido como serviço, assim, o usuário não precisa adquirir licenças de uso para instalação ou mesmo comprar computadores ou servidores para executá-lo. Nesta modalidade, no máximo, paga-se um valor periódico - como se fosse uma assinatura - somente pelos recursos utilizados e/ou pelo tempo de uso.
Para entender melhor os benefícios do SaaS, suponha que uma empresa que tem vinte funcionários necessita de um software para gerar folhas de pagamento. Há várias soluções prontas para isso no mercado, no entanto, a empresa terá que comprar licenças de uso do software escolhido e, dependendo do caso, até mesmo hardware para executá-lo. Muitas vezes, o preço da licença ou mesmo dos equipamentos pode gerar um custo alto e não compatível com a condição de porte pequeno da empresa.
Se, por outro lado, a empresa encontrar um fornecedor de software para folhas de pagamento que trabalha com o modelo SaaS, a situação pode ficar mais fácil: essa companhia poderá, por exemplo, oferecer este serviço por meio de cloud computing e cobrar apenas pelo número de usuários e/ou pelo tempo de uso.
Desta forma, a empresa interessada paga um valor baixo pelo uso da aplicação. Além disso, hardware, instalação, atualização, manutenção, entre outros, ficam por conta do fornecedor. Também é importante levar em conta que o intervalo entre a contratação do serviço e o início de sua utilização é extremamente baixo, o que não aconteceria se o software tivesse que ser instalado nos computadores do cliente. Este só precisa se preocupar com o acesso ao serviço (no caso, uma conexão à internet) ou, se necessário, com a simples instalação de algum recurso mínimo, como um plugin no navegador de internet de suas máquinas.
IBM e HP são dois exemplos de companhias que já oferecerem soluções em SaaS: HP SaaS; IBM SaaS.

PaaS, DaaS, IaaS e TaaS

O mercado trabalha atualmente com conceitos derivados do SaaS, utilizados por algumas companhias para diferenciar os seus serviços. São eles:

- Platform as a Service (PaaS): Plataforma como Serviço. Trata-se de um tipo de solução mais amplo para determinadas aplicações, incluindo todos (ou quase todos) os recursos necessários à operação, como armazenamento, banco de dados, escalabilidade (aumento automático da capacidade de armazenamento ou processamento), suporte a linguagens de programação, segurança e assim por diante;

- Database as a Service (DaaS): Banco de Dados como Serviço. O nome já deixa claro que esta modalidade é direcionada ao fornecimento de serviços para armazenamento e acesso de volumes de dados. A vantagem aqui é que o detentor da aplicação conta com maior flexibilidade para expandir o banco de dados, compartilhar as informações com outros sistemas, facilitar o acesso remoto por usuários autorizados, entre outros;

- Infrastructure as a Service (IaaS): Infraestrutura como Serviço. Parecido com o conceito de PaaS, mas aqui o foco é a estrutura de hardware ou de máquinas virtuais, com o usuário tendo inclusive acesso a recursos do sistema operacional;

- Testing as a Service (TaaS): Ensaio como Serviço. Oferece um ambiente apropriado para que o usuário possa testar aplicações e sistemas de maneira remota, simulando o comportamento destes em nível de execução.

Exemplos de aplicações em cloud computing

Os termos cloud computing e computação nas nuvens são relativamente recentes, como você já sabe, mas se analisarmos bem, veremos que a ideia não é, necessariamente, nova. Serviços de e-mail, como Gmail e Yahoo! Mail; discos virtuais na internet, como Dropbox; sites de armazenamento e compartilhamento de fotos ou vídeos, como Flickr e YouTube. Todos são exemplos de aplicações que, de certa forma, estão dentro do conceito de computação nas nuvens.
Note que todos estes serviços não são executados no computador do usuário, mas este pode acessá-los de qualquer lugar, muitas vezes sem necessidade de instalar aplicativos em sua máquina ou de pagar licenças de software. No máximo, paga-se um valor periódico pelo uso do serviço ou pela contratação de recursos adicionais, como maior capacidade de armazenamento de dados, por exemplo.
Abaixo, uma breve lista de serviços que incorporam claramente o conceito de cloud computing:

- Google Apps: este é um pacote de serviços que o Google oferece que conta com aplicativos de edição de texto, planilhas e apresentações (Google Docs), ferramenta de agenda (Google Calendar), comunicador instantâneo integrado (Google Talk), e-mail com o domínio próprio (por exemplo, contato@infowester.com), entre outros. Todos estes recursos são processados pelo Google - o cliente precisa apenas criar as contas dos usuários e efetuar algumas configurações. O Google Apps oferece pacotes gratuitos e pagos, de acordo com o número de usuários. Um dos maiores clientes do Google Apps é a Procter & Gamble, que contratou os serviços para mais de 130 mil colaboradores;

- Amazon: a Amazon é um dos maiores serviços de comércio eletrônico do mundo. Para suportar o volume de vendas no período de Natal, a empresa montou uma superestrutura de processamento e armazenamento de dados, que acaba ficando ociosa na maior parte do ano. Foi a partir daí que a companhia teve a ideia de "alugar" estes recursos, o que acabou resultando em serviços como o Simple Storage Solution (S3) para armazenamento de dados e Elastic Compute Cloud (EC2) para uso de máquinas virtuais. 

- Panda Cloud Antivirus: como o nome indica, este é um programa antivírus da Panda Software, mas com uma grande diferença: a maior parte do trabalho necessário à ferramenta para pesquisar e eliminar malwares fica por conta das "nuvens". Com isso, de acordo com a Panda, essa solução acaba evitando que o antivírus deixe o computador lento;

Panda Cloud Antivirus
Panda Cloud Antivirus

- Aprex: brasileiro, o Aprex oferece um conjunto de ferramentas para uso profissional, como calendário, gerenciador de contatos, lista de tarefas, disco virtual, blog, serviço de e-mail marketing, apresentações, entre outros. Tudo é feito pela Web e, no caso de empresas, é possível até mesmo inserir logotipo e alterar o padrão de cores das páginas. Há opções de contas gratuitas e pagas;

- iCloud: anunciado em junho de 2011, trata-se de um serviço da Apple que armazena músicas, fotos, vídeos, documentos e outras informações do usuário. Seu objetivo é o de fazer com que a pessoa utilize "as nuvens" em vez de um computador em sua rede como "hub" para centralizar suas informações. Com isso, se o usuário atualizar as informações de um contato no iPhone, por exemplo, o iCloud poderá enviar os dados alterados automaticamente para outros dispositivos.

Nuvem privada (private cloud)

Até agora, tratamos a computação nas nuvens como um sistema composto de duas partes: o provedor da solução e o utilizador, que pode ser uma pessoa, uma empresa ou qualquer outra organização. Podemos entender este contexto como um esquema de nuvem pública. No entanto, especialmente no que diz respeito ao segmento corporativo, é possível também o uso do que se conhece como nuvem privada.
Do ponto de vista do usuário, a nuvem privada (private cloud) oferece praticamente os mesmos benefícios da nuvem pública. A diferença está, essencialmente, nos "bastidores", uma vez que os equipamentos e sistemas utilizados para constituir a nuvem estão dentro da infraestrutura da própria corporação.
Em outras palavras, a empresa faz uso de uma nuvem particular, construída e mantida dentro de seus domínios. Mas o conceito vai mais além: a nuvem privada também considera a cultura corporativa, de forma que políticas, objetivos e outros aspectos inerentes às atividades da companhia sejam respeitados.
A necessidade de segurança e privacidade é um dos motivos que levam uma organização a adotar uma nuvem privada. Em serviços de terceiros, cláusulas contratuais e sistemas de proteção são os recursos oferecidos para evitar acesso não autorizado ou compartilhamento indevido de dados. Mesmo assim, uma empresa pode ter dados críticos por demais para permitir que outra companhia responda pela proteção e disponibilização destas informações. Ou, então, a proteção oferecida pode simplesmente não ser suficiente. Em situações como estas é que o uso de uma nuvem privada se mostra adequado.
Uma nuvem privada também pode oferecer a vantagem de ser "moldada" com precisão às necessidades da companhia, especialmente em relação a empresas de grande porte. Isso porque o acesso à nuvem pode ser melhor controlado, assim como a disponibilização de recursos pode ser direcionada de maneira mais eficiente, aspecto que pode impactar diretamente na rotina corporativa.
Empresas como Microsoft, IBM e HP oferecem soluções para nuvens privadas. As entidades interessadas, no entanto, devem contar com profissionais ou mesmo consultoria especializada na criação e na manutenção da nuvem, afinal, uma implementação mal executada pode interferir negativamente no negócio.
Os custos de equipamentos, sistemas e profissionais da nuvem privada poderão ser elevados no início. Por outro lado, os benefícios obtidos a médio e longo prazo, como ampla disponibilidade, agilidade de processos e os já mencionados aspectos de segurança compensarão os gastos, especialmente se a implementação for otimizada com virtualização, padronização de serviços, entre outros.

Nuvem híbrida (hybrid cloud)

Para a flexibilização de operações e até mesmo para maior controle sobre os custos, as organizações podem optar também pela adoção de nuvens híbridas. Nelas, determinadas aplicações são direcionadas às nuvens públicas, enquanto que outras, normalmente mais críticas, permanecem sob a responsabilidade de sua nuvem privada. Pode haver também recursos que funcionam em sistemas locais (on premise), complementando o que está nas nuvens.
Perceba que nuvens públicas e privadas não são modelos incompatíveis entre si. Não é preciso abrir mão de um tipo para usufruir do outro. Pode-se aproveitar o "melhor dos dois mundos", razão pela qual as nuvens híbridas (hybrid cloud) são uma tendência muito forte nas corporações.
A implementação de uma nuvem híbrida pode ser feita tanto para atender a uma demanda contínua, quanto para dar conta de uma necessidade temporária. Por exemplo, uma instituição financeira pode integrar à sua nuvem privada um serviço público capaz de atender a uma nova exigência tributária. Ou então, uma rede de lojas pode adotar uma solução híbrida por um curto período para atender ao aumento das vendas em uma época festiva.
É claro que a eficácia de uma nuvem híbrida depende da qualidade da sua implementação. É necessário considerar aspectos de segurança, monitoramento, comunicação, treinamento, entre outros. Este planejamento é importante para avaliar inclusive se a solução híbrida vale a pena. Quando o tempo necessário para a implementação é muito grande ou quando há grandes volumes de dados a serem transferidos para os recursos públicos, por exemplo, seu uso pode não ser viável.

Um pouco sobre a história da cloud computing

Computação nas nuvens não é um conceito claramente definido. Não se trata, por exemplo, de uma tecnologia pronta que saiu dos laboratórios pelas mãos de um grupo de pesquisadores e posteriormente foi disponibilizada no mercado. Esta característica faz com que seja difícil identificar com precisão a sua origem. Mas há alguns indícios bastante interessantes.
Um deles remete ao trabalho desenvolvido por John McCarthy. Falecido em outubro de 2011, o pesquisador foi um dos principais nomes por trás da criação do que conhecemos como inteligência artificial, com destaque para a linguagem Lisp, até hoje aplicada em projetos que utilizam tal conceito.

John McCarthy - Imagem por Wikipedia
John McCarthy - Imagem por Wikipedia

Além deste trabalho, no início da década de 1960, John McCarthy tratou de uma ideia bastante importante: computação por tempo compartilhado (time sharing), onde um computador pode ser utilizado simultaneamente por dois ou mais usuários para a realização de determinadas tarefas, aproveitando especialmente o intervalo de tempo ocioso entre cada processo.
Perceba que, desta forma, é possível aproveitar melhor o computador (na época, um dispositivo muito caro) e diminuir gastos, uma vez que o usuário somente paga, por exemplo, pelo tempo de uso do equipamento. É, de certa forma, uma ideia presente na computação nas nuvens.
Quase que na mesma época, o físico Joseph Carl Robnett Licklider entrou para a história ao ser um dos pioneiros da internet. Isso porque, ao fazer parte da ARPA (Advanced Research Projects Agency), lidou com a tarefa de encontrar outras utilidades para o computador que não fosse apenas a de ser uma "poderosa calculadora".
Nesta missão, Licklider acabou sendo um  dos primeiros a entender que os computadores poderiam ser usados de maneira conectada, de forma a permitir comunicação de maneira global e, consequentemente, o compartilhamento de dados. Seu trabalho determinou a criação da Intergalactic Computer Network, que posteriormente deu origem à ARPANET, que por sua vez "abriu as portas" para a internet.
Embora possamos associar várias tecnologias, conceitos e pesquisadores ao assunto, ao juntarmos os trabalhos de John McCarthy e J.C.R. Licklider podemos ter uma grande ajuda na tarefa de compreender a origem e a evolução da cloud computing.

Por que uma nuvem?

Ao consultar livros de redes, telecomunicações e afins, pode-se perceber que o desenho de uma nuvem é utilizado para fins de abstração. Neste sentido, a nuvem representa uma rede de algum tipo cuja estrutura não precisa ser conhecida, pelo menos não naquele momento.
Por exemplo, se a ideia é a de explicar como funciona uma tecnologia de comunicação que interliga duas redes de computadores, não é necessário detalhar as características de cada uma. Assim, pode-se utilizar uma nuvem para indicar que há redes ali.
A computação nas nuvens simplesmente absorveu esta ideia, mesmo porque o desenho de uma nuvem, seguindo a ideia da abstração, passou também a representar a internet.

Finalizando


Na verdade, qualquer tentativa de definir o que é cloud computing pode não ser 100% precisa. Isso porque as ideias por trás da noção de computação nas nuvens são muito novas e as opiniões de especialistas em computação ainda divergem. Mas a noção básica é a que foi explicada neste artigo.
É claro que ainda há muita coisa por fazer. Por exemplo, a simples ideia de determinadas informações ficarem armazenadas em computadores de terceiros (no caso, os fornecedores de serviço), mesmo com documentos garantindo a privacidade e o sigilo, preocupam pessoas e, principalmente, empresas, motivo pelo qual este ponto precisa ser melhor estudado. Além disso, há outras questões, como o problema da dependência de acesso à internet: o que fazer quando a conexão cair? Algumas companhias já trabalham em formas de sincronizar aplicações off-line com on-line, mas tecnologias para isso ainda precisam evoluir bastante.
De qualquer forma, o futuro aponta para esse caminho. Além das mencionadas empresas neste artigo, companhias como Dell, Intel, Oracle e Microsoft já estão trabalhando nas mais variadas soluções para cloud computing. Esta última, por exemplo, já até anunciou o Azure, uma plataforma própria para a execução de aplicações nas "nuvens".

O que é Tecnologia da Informação TI?

Introdução

No início, os computadores eram tidos apenas como "máquinas gigantes" que tornavam possível a automatização de determinadas tarefas em instituições de ensino/pesquisa, grandes empresas e nos meios governamentais. Com o avanço tecnológico, tais máquinas começaram a perder espaço para equipamentos cada vez menores, mais poderosos e mais confiáveis. Como se não bastasse, a evolução das telecomunicações permitiu que, aos poucos, os computadores passassem a se comunicar, mesmo estando em lugares muito distantes geograficamente.
Mas perceba que, desde as máquinas mais remotas e modestas até os computadores mais recentes e avançados, o trabalho com a informação sempre foi o centro de tudo. É por isso que a expressão Tecnologia da Informação (TI) é tão popular. Mas o que vem a ser isso?

Antes de tudo, a informação

A informação é um patrimônio, é algo que possui valor. Quando digital, não se trata apenas de um monte de bytes aglomerados, mas sim de um conjunto de dados classificados e organizados de forma que uma pessoa, uma instituição de ensino, uma empresa ou qualquer outra entidade possa utilizar em prol de algum objetivo.
Neste sentido, a informação é tão importante que pode inclusive determinar a sobrevivência ou a descontinuidade das atividades de um negócio, por exemplo. E não é difícil entender o porquê. Basta pensar no que aconteceria se uma instituição financeira perdesse todas as informações de seus clientes ou imaginar uma pessoa ficando rica da noite para o dia por ter conseguido descobrir uma informação valiosa analisando um grande volume de dados.
Diante de tamanha relevância, grandes entidades investem pesado nos recursos necessários para obter e manter as suas informações. É por isso que é extremamente raro ver empresas como bancos, redes de lojas e companhias aéreas perdendo dados essenciais ao negócio. Por outro lado, é bastante frequente o uso inadequado de informações ou, ainda, a subutilização destas. É nesse ponto que a Tecnologia da Informação pode ajudar.

Tecnologia da Informação

TI A Tecnologia da Informação (TI) pode ser definida como o conjunto de todas as atividades e soluções providas por recursos computacionais que visam permitir a obtenção, o armazenamento, o acesso, o gerenciamento e o uso das informações. Na verdade, as aplicações para TI são tantas - estão ligadas às mais diversas áreas - que há várias definições para a expressão e nenhuma delas consegue determiná-la por completo.
Sendo a informação um patrimônio, um bem que agrega valor e dá sentido às atividades que a utilizam, é necessário fazer uso de recursos de TI de maneira apropriada, ou seja, é preciso utilizar ferramentas, sistemas ou outros meios que façam das informações um diferencial. Além disso, é importante buscar soluções que tragam resultados realmente relevantes, isto é, que permitam transformar as informações em algo com valor maior, sem deixar de considerar o aspecto do menor custo possível.
A questão é que não existe "fórmula mágica" para determinar como utilizar da melhor maneira as informações. Tudo depende da cultura, do mercado, do segmento e de outros fatores relacionados ao negócio ou à atividade. As escolhas precisam ser bem feitas, do contrário, gastos desnecessários ou, ainda, perda de desempenho e competitividade podem ser a consequência.
Tome como base o seguinte exemplo: se uma empresa renova seu parque de computadores comprando máquinas com processadores velozes, muita memória e placa de vídeo 3D para funcionários que apenas precisam utilizar a internet, trabalhar com pacotes de escritório ou acessar a rede interna, está fazendo gastos desnecessários. Comprar máquinas de boa qualidade não significa adquirir as mais caras e sotisticadas, mas aquelas que possuem os recursos necessários.
Por outro lado, imagine que uma companhia comprou computadores com GPUs de desempenho modesto e monitor de 17 polegadas para profissionais que trabalham com AutoCAD. Para estes funcionários, o ideal seria fornecer computadores que suportam aplicações exigentes e um monitor de, pelo menos, 20 polegadas. Máquinas mais baratas certamente conseguem rodar o programa AutoCAD, porém com lentidão. Além disso, o monitor com área de visão menor dá mais trabalho aos profissionais. Neste caso, percebe-se que a aquisição destes equipamentos reflete diretamente na produtividade. Por este motivo, qualquer decisão relacionada à TI precisa levar em conta as necessidades de cada setor, de cada departamento, de cada atividade, de cada indivíduo.
Veja este outro exemplo: uma empresa com 50 funcionários, cada um com um PC, adquiriu um servidor para compartilhamento e armazenamento de arquivos em rede que suporta 500 usuários conectados ao mesmo tempo. Se a companhia não tiver expectativa de aumentar seu quadro de funcionários, comprar um servidor deste porte é o mesmo que adquirir um ônibus para uma família de 5 pessoas. Mas o problema não é apenas este: se o referido servidor, por alguma razão, parar de funcionar, os arquivos ficarão indisponíveis e certamente atrapalharão as atividades da empresa.
Neste caso, não seria melhor adquirir um servidor mais adequado às necessidades da companhia e investir em recursos de disponibilidade para diminuir as chances de a rede deixar de funcionar? Ou, talvez, estudar a possibilidade de contratar uma solução baseada em computação nas nuvens específica para este fim?

Foto de um servidor para armazenamento de dados
Com estes exemplos, é possível ter uma pequena ideia do qual amplo é o universo da Tecnologia da Informação. Independente da aplicação, há ainda vários outros aspectos que devem ser considerados, por exemplo: segurança, disponibilidade, comunicação, uso de sistemas adequados (eles realmente devem fazer o que foi proposto), tecnologias (qual é a melhor para determinada finalidade), legislação local e assim por diante.

O profissional de TI

As tarefas de desenvolver, implementar e atualizar soluções computacionais cabem aos profissionais de TI. Por causa de sua amplitude, a área é dividida em várias especializações, tal como acontece com a medicina, por exemplo. Sendo assim, pode-se encontrar profissionais de TI para cada um dos seguintes segmentos: banco de dados, desenvolvimento, infraestrutura, redes, segurança, gestão de recursos, entre outros.
Para cada uma destas áreas, há subdivisões. Por exemplo, em desenvolvimento, há profissionais que atuam apenas com softwares comerciais (como ERP), outros que trabalham apenas com a criação de ferramentas para dispositivos móveis, outros que concentram suas atividades na internet e assim por diante.
Via de regra, interessados em seguir carreira na área de TI fazem cursos como ciência da computação, engenharia da computação e sistemas de informação, mas há outros, inclusive com foco mais técnico, como tecnologia em redes de computadores e tecnologia em banco de dados, além de certificações e cursos de pós-graduação para profissionais já formados.

Finalizando

Quem precisa de TI? Nos tempos atuais, a sociedade como um todo. Hoje, a informatização atinge as mais diversas áreas do conhecimento e está cada vez mais presente no cotidiano das pessoas, mesmo quando elas não percebem.
Se você declara imposto de renda, seus dados são processados por computadores do governo; se você tira passaporte, suas informações ficam cadastradas em um banco de dados da Polícia Federal (ou de outro órgão competente, de acordo com o país); se você faz compras no mercado, passa pelo caixa, que dá baixa dos produtos no sistema da empresa; para você usar o telefone, uma complexa rede de comunicação controlada por computadores é utilizada. Enfim, exemplos não faltam.
A Tecnologia da Informação, portanto, não é apenas sinônimo de modernidade. É, acima de tudo, uma necessidade dos novos tempos, afinal, a informação sempre existiu, mas não de maneira tão volumosa e aproveitável.