Archive for maio \30\+00:00 2011

Conhecendo o Hadoop

maio 30, 2011

Volta e meia em eventos sobre Cloud Computing surge o termo Hadoop. Já ouvi em uma palestra que o grande desafio de desenvolver aplicações para Cloud era exatamente a complexidade no uso do Hadoop. O que gera a confusão é que o Hadoop e o MapReduce, do qual ele se originou, vem sendo usado pelas empresas de Internet, que inspiraram o modelo de cloud computing, e que precisam de escala massiva para suas aplicações, como Yahoo, Google e Facebook. Mas dizer que o Hadoop é a base para todo projeto de Cloud, absolutamente não é correto. O Hadoop é usado para aplicações analíticas de dados massivos, que não é o dia a dia das empresas que usam ou pretendem usar cloud computing.

O Hadoop foi criado pelo Yahoo em 2005 e pode ser considerado uma das maiores invenções de data management desde o modelo relacional. Hoje é um dos projetos da comunidade Apache e vem sendo adotado por empresas que precisam tratar volumes massivos de dados não estruturados. Já existe inclusive um ecossistema ao seu redor, mas ainda vai demandar algum tempo para se disseminar de forma mais ampla pelo mercado. Neste post vamos debater um pouco mais o que é e o que não é o Hadoop, seu mercado e tentar visualizar algumas tendências. Quem sabe acertamos algumas?

Mas, o que é o Hadoop? É, na pratica, uma combinação de dois projetos separados, que são o Hadoop MapReduce (HMR), que é um framework para processamento paralelo e o Hadoop Distributed File System (HDFS). O HMR é um spinoff do MapReduce, software que Google usa para acelerar as pesquisas endereçadas ao seu buscador. O HDFS é um sistema de arquivos distribuidos otimizados para atuar em dados não estruturados e é tambem baseado na tecnologia do Google, neste caso o Google File System. Existe também o Hadoop Common, conjunto de bibliotecas e utilitários que suportam os projetos Hadoop. Na pratica, para que o HMR processe os dados, eles devem estar armazenados no HDFS.

O Hadoop é um projeto Open Source, com licenciamento Apache e portanto permite a criação de um ecossistema de negócios baseados em distribuições especificas. E o surgimento de serviços em nuvem, como o Amazon Elastic MapReduce, permite às empresas tratarem dados massivos sem demandar aquisição de servidores físicos. Neste modelo, o usuário escreve a aplicação Hadoop e a roda em cima da nuvem da Amazon.

A base das distribuições Hadoop é a comunidade Apache. Diversas empresas vem contribuindo com código para seu desenvolvimento como a Yahoo, Facebook, Cloudera, IBM e outras. Em torno do código base, surgem as distribuições, como Cloudera (www.cloudera.com) e DataStax (http://www.datastax.com/brisk), que agregam valor com utilitários e serviços de suporte e educação, no mesmo modelo das distribuições Linux. Interessante que a distribuição da DataStax, chamado de Brisk, substituiu o HDFS por um sistema de arquivos distribuidos baseados no software NoSQL Cassandra, chamado agora de CassandraFS.

Mas, em torno do Hadoop (http://hadoop.apache.org/), a comunidade Apache mantem diversos projetos relacionados, como o Hbase, que é um banco de dados NoSQL que trabalha em cima do HDFS. Este banco de dados é usado pelo Facebook para suportar seu sistema de mensagens e os seus serviços de informações analíticas em tempo real. Existe também o Hive, criado pelo Facebook, que é uma camada de data warehouse que roda em cima do Hadoop. Utiliza uma linguagem chamada Hive SQL, similar à SQL, o que facilita sua utilização, pois desenvolvedores acostumados com SQL não encontram maiores dificuldades em trabalhar com o Hive SQL.

Um outro e também muito interessante projeto é o Pig, criado pelo Yahoo. É uma plataforma que permite análises de arquivos muito grandes usando uma linguagem de alto nivel chamada de Pig Latin. Olhando-se o stack de softwares do Hadoop, o Pig se situa entre o Hive e o HMR e é uma tentativa de fornecer uma linguagem de alto nivel para se trabalhar com o Hadoop. Outros projetos menos conhecidos são o Avro (sistema de serialização de dados), o Chukwa (monitoramento de sistemas distribuídos) e o Hama (para computações científicas massivas).

A IBM usa intensamente o Hadoop em diversos projetos, o integrando com outros de seus softwares como o Cognos, criando soluções para tratamento analítico de dados massivos e não estruturados, como o InfoSphere BigInsights, que agrega um conjunto de tecnologias open source como o próprio Hadoop, Nutch e Pig, com as tecnologias próprias da IBM como InfoSphere e ManyEyes. Vejam em (http://www-01.ibm.com/software/data/bigdata/). A IBM também desenvolveu uma variante do HDFS chamado de IBM General Parallel File System (GPFS), que pode ser visto em http://www-03.ibm.com/systems/software/gpfs/.

OK, e quem usa Hadoop? Existem os casos emblemáticos como Facebook, Yahoo, Twitter e Netflix (na nuvem da Amazon), mas também já começamos ver seu uso em ambientes corporativos brick-and-mortar. Recentemente uma pesquisa mostrou que pelo menos umas 20 empresas da lista da Fortune 1000 assumiram publicamente que usam Hadoop de alguma forma. A adoção do Hadoop em aplicações analíticas corporativas como as ofertadas pela IBM vão ajudar na sua disseminação. Só para lembrar, quando a IBM anunciou seu apoio ao Linux, em 2001, o Linux passou a ser visto sob outra ótica pelo ambiente corporativo.

Nem todo usuario de Hadoop demanda uma escala massiva de dados ao nivel do Facebook ou Yahoo. Mas empresas com razoavel volume de informações não estruturadas, como bancos, varejo, empresas aéreas e outras vão encontrar no Hadoop uma boa alternativa para o tratamento analítico dos seus dados. Vejam alguns exemplos em ftp://public.dhe.ibm.com/common/ssi/ecm/en/imb14103usen/IMB14103USEN.PDF.

O Hadoop ainda está nos primeiros passos de sua evolução e disseminação pelo mercado. Mas, tenho certeza de que em poucos anos ele será bem mais conhecido e utilizado. Uma pesquisa pelo termo Hadoop no Google Trends já aponta um crescimento significativo no interesse pela tecnologia, como podemos ver em http://www.google.com/trends?q=hadoop . Na minha opinião vale a pena investir tempo estudando a tecnologia. Um dos problemas com o Hadoop é realmente a sua complexidade de uso, demandando desenvolvedores altamente qualificados. A sua curva de aprendizado é bastante ingreme e praticamente inexiste gente habilitada para usar o Hadoop adequadamente. Bem, temos aí uma boa oportunidade para as universidades inserirem seu estudo e prática em seus cursos de ciência da computação…Uma sugestão para quem quer estudar Hadoop mais a fundo: acessem http://www.ibm.com/developerworks e pesquisem pela keyword Hadoop. Vocês vão encontrar milhares de artigos muito interessantes.

Nuvens privadas: começando a jornada em direção à cloud computing

maio 24, 2011

Quando se fala em computação em nuvem geralmente nos vem a cabeça as nuvens públicas como as oferecidas pela Amazon ou Google. Mas a aplicação das ideias, tecnologias e approaches destas nuvens publicas em nuvens privadas, internas à uma empresa, pode ser uma boa alternativa. Existem muitas organizações, que por questões de cultura ou premidas por aspectos regulatorios não podem entrar direto em nuvens publicas, mas tem como opção o uso de nuvens privadas. Uma nuvem privada é, na verdade, a implementação do modelo de computação em nuvem dentro de uma empresa.

Com uma nuvem privada a empresa pode usufruir de varios dos beneficios do modelo de computação em nuvem, como obtenção de recursos computacionais self-service por parte de seus usuários. Claro que ela tem que investir no seu data center e nas tecnologias que permitem a construção do ambiente de nuvem, como catalogos de serviços e softwares de gerenciamento automático de provisionamento e alocação de recursos computacionais. Mas, por outro lado, pode começar a entender o funcionamento do modelo e ajustar aos poucos seu modelo de governança para em algum tempo no futuro adotar nuvens publicas.

De maneira geral as empresas que optam por nuvens privadas são empresas de grande porte, que já tem um investimento alto em TI e mantem adequadas politicas de governança e segurança. O modelo de nuvem privado mais adotado tem sido o de IaaS, que na minha opinião é bem natural, pois não deixa de ser uma evolução do proprio processo de virtualização que estas empresas já vem adotando.

As justificativas para adoção de uma nuvem privada são econômicas (redução de custos) e qualidade dos serviços, com maior agilidade no atendimento às demandas dos usuarios por recursos computacionais.

A redução de custos é provocada pela padronização e automação dos serviços de TI. Com padronização e automação reduz-se os custos operacionais, liberando-se o staff de funções banais para atividades de maior valor agregado. Além disso, com automação, obtem-se uma maior utilização dos ativos computacionais, aproveitando-se melhor o parque computacional já instalado. Um subproduto interessante da padronização e automação é a possibilidade de mudar-se a relação entre TI e os seus usuarios, criando-se politicas mais visiveis e adequadas de chargeback.
Mas, cloud computing é basicamente IT-as-a-Service e portanto é absolutamente essencial que a qualidade dos serviços em nuvem prestados por TI seja superior ao modelo atual. Com uma nuvem privada abre-se oportunidade de TI criar catalogos de serviços e seus respectivos SLA. A automação tambem reduz os erros causados por intervenções manuais e libera o pessoal de TI para atuar mais focado no atendimento aos usuarios que nas atividades de pouco ou nenhum valor agregado, como alocar espaço em disco ou reservar horas em servidores.

Um outro benefício palpável é a agilidade que a nuvem oferece à organização. A nuvem privada abstrai os recursos computacionais dos usuarios, que não tem que se preocupar onde e como as aplicações rodarão. TI, por sua vez, abre espaço para os usuarios serem mais inovadores e arriscarem mais em novos produtos e serviços.

Um ponto importante é que a nuvem privada não vai existir isoladamente e portanto mais cedo ou mais tarde a empresa vai adotar nuvens hibridas, que são ambientes onde aplicações estarão parte on-premise e parte em nuvens privadas. Ou mesmo parte on-premise, parte em nuvens privadas e parte em nuvens publicas. É uma longa jornada e o planejamento para este provavel cenário deve ser desenhado desde o incio. As questões de segurança que são a principal preocupação hoje, passarão a segundo plano, uma vez resolvidas. O questionamento principal, neste cenario, sera a interoperabilidade: como conviver e coordenar ambientes multiplos, com aplicações em nuvens privadas, publicas e on-premise, tudo ao mesmo tempo?

Temos pela frente bons desafios…E é melhor começarmos a enfrenta-los já. A computação em nuvem não é uma promessa, mas uma realidade e quem não começar a desenhar suas estratégias de adoção vai perder o trem.

Insights de 110 projetos reais de implementação de Cloud

maio 11, 2011

Volta e meia nos deparamos com pesquisas sobre adoção de Cloud Computing. Entretanto, a maioria deles se concentra na opinião de executivos ou representantes da indústria. Não olham realmente o dia a dia de quem está com a mão na massa.

Recentemente a IBM realizou uma pesquisa diferente, coordenada pela IBM Academy of Technology, concentrando-se em quem esteve ou está envolvido com projetos de cloud em diferentes clientes: os arquitetos e engenheiros de software. O projeto gerou um relatório muito interessante chamado “Cloud Computing insights from 110 implementation projects” que pode ser acessado em http://tinyurl.com/5sb6pzt.
O relatório descreve como os arquitetos implementaram projetos reais de clouds e como os clientes estão vendo sua adoção, do ponto de vista de quem está diretamente envolvido com os projetos de implementação.

Vamos resumir algumas das suas conclusões, mas recomendo a leitura do relatório na íntegra.
a) Como as nuvens são implementadas? A pesquisa mostrou que apenas metade das implementações obedeceram a uma estratégia de cloud, enquanto a outra metade consistiu-se de iniciativas isoladas, sem objetivos claros e bem definidos. Também ficou claro que a maioria dos projetos atuais ainda são projetos piloto, de âmbito bem localizado. Ainda são poucas as iniciativas de escopo empresarial. Mas, na verdade, como cloud ainda é novidade, a maioria do clientes começa sua jornada com projetos experimentais, para obter experiência e desenhar de forma mais adequada ações mais amplas. Um bom ponto de partida para uma experimentação é criar uma nuvem privada para o ambiente de desenvolvimento e testes, pois desta forma minimizam riscos de segurança (ambiente de certa forma isolado) e obtém ganhos significativos e palpáveis, para seguirem m frente com novos projetos.
b) Adotar o modelo de nuvens vai obrigar revisões nos processos de governança de TI. Este foi o sentimento geral das empresas que implementaram projetos piloto.
c) Na pesquisa identificou-se que 70% das iniciativas eram de nuvens privadas e apenas 30% de nuvens públicas. Existe, claro a ressalva que os projetos eram em grandes clientes, que geralmente começam sua experimentação por nuvens privadas. Se a pesquisa fosse realizada em clientes de menor porte, é provável que a relação fosse inversa. Obteve-se uma informação interessante: nas nuvens privadas o predomínio dos projetos foi de IaaS, seguido de PaaS. Já nas nuvens publicas o SaaS dominou o cenário, secundado por projetos de IaaS.
d) Observou-se também que os clientes sentem que cloud é um movimento irreversível e que em dois a três anos muitos sistemas críticos estarão rodando em nuvens. Entre as aplicações mais citadas como as próximas a entrarem em nuvem são business analytics, colaboração e Web.
e) A leitura do relatório deixa claro que os próximos desafios, após a desconfiança da segurança for vencida, serão as questões de integração e interoperabilidade entre nuvens diferentes e entre aplicações on-premise as que rodarão em nuvens.
f) Um ponto imporatnte e decisivo para o sucesso da adoção da cloud computing é a padronização de imagens. Isto abre espaço para demandas de novos recursos de gestão baseados em ITIL, como image management.

Vemos que ainda existem inibidores para uma maior adoção de computação em nuvem. Segurança aparece em primeiro lugar. Mas, nos projetos avaliados pela pesquisa, como o modelo de nuvem adotado foi de nuvem privada, as questões de segurança são minimizadas. Afinal, a nuvem está operado dentro do firewall e das politicas de segurança da própria empresa.
Por outro lado, os projetos demonstraram claros benefícios. Embora custo tenha sido um dos apelos iniciais, a flexibilidade que a nuvem oferece para os usuários é hoje o seu principal atrativo. A velocidade com que as demandas por recursos e facilidade de TI, que eram medidas em semanas, passam a ser feitas em minutos. Isto abre novas oportunidades para criar aplicações inovadoras em tempos muito mais curtos e facilita experimentações de novos produtos e sistemas.

O relatório também aponta algumas tendências como:
a) O modelo de pay-as-you-go, tipico das nuvens publicas, também deverá ser adotado nas nuvens privadas, com acordos entre IT e as linhas de negócio.
b) Mesmo as grandes empresas vão adotar nuvens publicas com maior intensidade, gerando nuvens híbridas, com parte de aplicações rodando em nuvens privadas e parte nas nuvens públicas. Novamente vem à luz a questão da integração e interoperabilidade.
c) Governança do ambiente em nuvens é um desafio a mais, pois muitos processos devem ser revistos. Extensões e adaptações das disciplinas do ITIL são esperadas. Podemos citar como exemplo image management como uma nova e importante disciplina e modificações em service design, service strategy, service operation, service transition, service operation e service improvement.
d) os aplicativos tenderão ser cada vez mais multi-tenancy. Hoje são no-multitenancy e devem exigir esforço imporante por parte dos fabricantes de softwares, bem como demandarão novos skills dos desenvolvedores nas empresas.

Enfim, analisando o relatório podemos chegar a algumas conclusões, que gostaria de compartilhar com vocês:
a) Comecem a jornada em direção a cloud por projetos piloto, identificando e implementando workloads mais adequados à este modelo. É um processo gradual, com a experiência sendo adquirida ao longo do tempo, com a evolução dos projetos.
b) Mudanças na organização e nos processo de governança de TI serão necessárias.
c) Tenha uma estratégia para adoção de cloud e não tente implementar projetos simplesmente para experimenatr o modelo, sem ter os proximos passos bem definidos.
d) Existem obstáculos, como imaturidade e complexidade de algumas tecnologias para implementação de nuvens privadas, mas que serão resolvidos ao longo o tempo. Tambem os receios de segurança com nuvens publicas tenderão a ser minimizados.
e) O uso de cloud computing vai se acelerar de forma significativa nos proximos dois a três anos.

Road map: da virtualização para Cloud Computing

maio 2, 2011

Há poucos dias gravei um webcast com o iMasters, sobre Cloud Computing. A idéia foi debater com mais detalhes enfoques práticos de como implementar cloud e o título, sugestivo foi de “Da virtualização para Cloud Computing: um road map prático”. O vídeo, com cerca de 85 minutos de duração, pode ser visto em sua íntegra em http://www.videolog.tv/video.php?id=646119 .

Cloud computing, embora muitos talvez ainda não tenham percebido, tem o potencial de mudar de forma radical a indústria de TI, afetando tantos os produtores como os consumidores de produtos e serviços. Da mesma forma que o modelo cliente-servidor provocou um choque sísmico na indústria de TI, criando novas empresas como Oracle e Microsoft, eliminou outras como Digital e Control Data, que não souberam compreender a mudança. O mesmo acontecerá com a indústria de TI atual. Novas empresas estão surgindo e outras ainda surgirão, enquanto algumas, tradicionais, podem até mesmo desaparecer.

O modelo de cloud se baseia em três pilares básicos: virtualização, padronização e automação. Em consequencia surge a possibilidade de se requisitar e obter os recursos de TI por meio de portais self-service.
No webcast abordei em mais detalhes os beneficios obtidos com este modelo, bem como os riscos a que toda novidade se expõe. Também mostramos um road map que orienta as empresas a desenharem sua jornada em direção à computação em nuvem. E um item que mereceu certo destaque foi onde debati as “lessons learned”, uma coletânea de erros e acertos que envolveram dezenas de projetos de implementação de Cloud Computing em todo o mundo. Vale a pena investir hora e meia (é um longo tempo, eu sei…) porque o tema está cada vez mais no centro das telas dos radares das empresas.

Mas, gostaria de fazer alguns comentários adicionais ao webcast. Primeiro, embora já se fale muito no assunto, ainda vejo um certo desconhecimento quando se mergulha nos detalhes. Ou seja, quando nos deslocamos do conceito para a prática. Uma nuvem deve ser vista sob duas dimensões: pelo seu nivel de abstração (IaaS, PaaS e SaaS) e pelo modo como estes serviços podem ser entregues: nuvens públicas, privadas e híbridas, com aplicações em nuvens privadas e outras em nuvens públicas. Estas diversas formas de vermos a computação em nuvem se traduz em formas diferentes de, por exemplo, implementar mecanismos de segurança. Em nuvens publicas, os mecanismos de segurança tradicionais não se aplicam de forma adequada. Observei em um recente evento de segurança que muitos profissionais de segurança ainda não estavam compreendendo as diferenças entre nuvens privadas e públicas e apontavam os mecanismos de segurança usados hoje no modelo on-premise como válidos para nuvens públicas. Eventualmente, com poucas modificações podem ser adotados em nuvens privadas, mas discordo de sua aplicabilidade nas nuvens públicas.

Outro ponto que me chama atenção é que os modelos IaaS (Infrastracture-as-a-Service) e SaaS (software-as-a-Service) são razoavelmente compreendidos, mas PaaS (Platform-as-Service) ainda está meio nebuloso. Talvez possamos resumir seu conceito como “middleware as a service in the cloud”. Mas, atenção, não significa simplesmente colocar um middleware tradicional do modelo on-premise em uma nuvem IaaS. Se você ainda necessitar de uma boa e velha licença de software tradicional, você não estará adotando o conceito de serviços. Será apenas um software hospedado em um provedor de IaaS. Mas se o middleware for disponibilizado como serviço, o termo estará correto.
Na minha opinião o melhor exemplo de PaaS é o force.com criado pela salesforce.com e adotado como definição padrão pelo NIST, órgão de padrões do governo americano.

Outro aspecto que chamo a atenção é que nem sempre o motivador para adoção de cloud será redução de custos. Em uma nuvem privada, por exemplo, a agilidade e a flexibilidade para atender novos serviços é o principal atrativo, embora a empresa ainda tenha que dispender muito dinheiro com seu ativo de hardware e software. Claro que existe potencial de redução de custos pela padronização e automação, que diminui os custos operacionais, mas agilidade na obtenção de novo serviços de TI está se tornando o principal driver para sua adoção. Pensem nisso.

Uma nuvem privada introduz um novo meio para TI interfacear com seus clientes (portal self-service com um catálogo de serviços padronizados) e uma nova maneira de entregar estes serviços (automatizado, sem interferência do pessoal de TI, deixando a cargo do próprio usuario o que e quando usar os serviços). Estas mudanças demandam um novo modelo de relacionamento entre TI e seus usuários e em ultima análise, como os proprios usuários desenvolvem seus negócios. Portanto a adoção de uma nuvem privada requer mudanças na organização, processos e modelos de custeio e negócios de TI. A empresa desloca seu foco de TI da ótica de tecnologias e ativos (servidores e softwares) para serviços. É um processo gradual, que deve começar por uma área relativamente isolada (como desenvolvimento e testes) e aos poucos se expandindo para o ambiente de produção.

E quanto a adotar uma nuvem publica? Se a empresa não tiver sistemas legados, será bastante simples. Começa do zero em um ambiente de nuvem, sem necessitar de comprar servidores e softwares. Mas se existir um legado?
De maneira geral, para empresas que já dispõem de TI, identifico três motivadores para adoção de nuvens públicas:
a) sistemas legados obsoletos estão impedindo o crescimento do negócio,
b) os recursos de TI estão subdimensionados e não suportam crescimento da demanda, e
c) a empresa vai lançar novos serviços e não quer manter o modelo tradicional on-premise, pois cloud faz mais sentido para ela.

A escolha do provedor de nuvem pública não pode ser feita de maneira simplista. Entre os quesitos de avaliação, como grau de segurança e disponibilidade que ele oferece, um item que deve ser validado é como você conseguirá interoperar os sistemas que estarão na nuvem com os legados, on-premise? Esta interoperbilidade é fácil ou vai demandar esforço para escrever novos códigos acessando APIs específicas?
Não esqueça que muitas vezes você terá que operar um software, como um banco de dados, tanto na nuvem como suportando aplicações on-premise. Você poderá expandir a licença on-premise para também operar o software na nuvem, sem gastos excessivos?

Enfim, estamos ainda dando os primeiros passos nesta longa jornada e pouco a pouco vamos acumulando mais e mais conhecimento. Talvez o webcast ajude um pouquinho nesta compreensão.
abraços