Pular para o conteúdo principal

Java e a Nuvem - Parte 1

Influenciado pelas minhas últimas atividades no SPC Brasil e também estimulado pelo excelente post a respeito de algumas novas tendências tecnológicas enterprise do globalcoder Bene, gostaria de iniciar uma série de posts especificamente sobre de Java e "computação de nuvem". Nesse post vou introduzir alguns conceitos para que depois possamos explorar capacidades e tecnologias em Java(e relacionadas) que possibilitam maior escalabilidade, performance e confiabilidade em suas apps enterprise, fornecendo uma melhor experiência para o usuário final.

Mas afinal, o que é "computação em nuvem"(cloud computing)? Basicamente são serviços disponibilizados e consumidos através da internet(ou outra grande rede) que necessitam de uma infraestrutura capaz de escalar elasticamente(alocando e desalocando recursos de forma apropriada dentro de um padrão) de modo a atender uma alta demanda de uso. Então o maior exemplo de computação em nuvem existente é a própria internet e seus serviços interativos mais usados: pesquisa, redes sociais, jogos online, agregadores de notícias, etc... Não é a toa que o pessoal de infra chama internet de nuvem há alguns anos, antes do termo ser propriamente cunhado. Você usa computação em nuvem e talvez nem tenha percebido isso... Buzzwords, quem liga pra elas, não é mesmo? :)

E onde entra o pessoal de infraestrutura nessa onda toda? Arquitetos e sysadmins principalmente(vulgos systems engineers)? Esses profissionais são responsáveis por definir qual o ambiente de "computação em grade"(grid computing) será adotado para atender a demanda de uso dos softwares oferecidos. A "computação em grade" estabelece quais recursos de hardware e software trabalharão juntamente para formar uma unidade de processamento computacional de alta performance. E finalmente então surgem os clusters, que devem ser particionados em ilhas de computadores trabalhando para atender uma ou mais qualidades de sistema(requisitos não funcionais, ou capacidades). Grids e clusters distribuídos são de fato a implementação da "computação em nuvem".

Além de performance e escalabilidade, determinados ambientes tem um terceiro fator chamado "alta disponibilidade", que está diretamente ligado com a confiabilidade e estabilidade da aplicação perante o usuário. A "alta disponibilidade" estabelece parâmetros como tempo máximo de resposta de uma requisição(independentemente da carga), tempo máximo de parada do sistema em um determinado período, capacidade de atualização da aplicação em qualquer momento sem haver nenhuma perda de requisição ao sistema, entre outros. E é responsabilidade da infraestrutura definir qual suporte de hardware e software integrados devem ser usados para atingir tais objetivos. A tendência hoje é a fuga das soluções de hardware ou proprietárias e o uso de soluções de software open source grátis para atingir tais objetivos. Claro que o mais importante é sempre atender a necessidade, verificando questões como qualidade e custo/benefício desejados e o que oferece cada opção avaliada, independente do fornecedor.

No próximo post vamos falar a respeito das qualidades de sistema possíveis em ambientes de nuvem, cluster e grid.

E no último post vamos citar quais tecnologias Java e relacionadas podem ser utilizadas para implementar tais capacidades em determinados cenários, ou seja, aplicabilidade de soluções para problemas reais.

Convido outros globalcoders e a comunidade em geral para uma discussão sobre esse tema. Espero que esses posts ajudem ao menos para tornar a nuvem algo menos nublado... ;)

JV -- julioviegas.com

Comentários

Yara Senger disse…
Excelente post Julio, a dificuldade de distinguir as palavras da moda e as tecnologias pré-existentes é recorrente, aconteceu com WebServices, SOA, AJAX, Web 2.0... e provavelmente vai acontecer muitas outras vezes.

Realizamos uma pesquisa sobre o tema do próximo Casual Class e o tema vencedor foi Cloud Computing.

Conforme conversamos anteriormente acho que seria interessante para o tema Cloud Computing uma abordagem diferente (embora as avaliações do Casual Class de Java EE 6 tenham sido excelentes).

A idéia seria:
- Apresentação de 45-60min para nivelar os principais conceitos de computação em nuvem;
- Discussão com profissionais que estão utilizando diferentes implementações: Google App Engine, Terracota, VMWare, etc...

Vamos nessa?

Yara Senger
Julio Viegas disse…
Yara,

Legal saber que o próximo Casual Class será sobre Cloud Computing!

Vamos elaborar melhor a agenda em conjunto com outros globalcoders conforme conversado no último encontro. Depois divulgamos via boletim.

Tou nessa! ;)
legal, não vou perder essa, já postei uma vez em meu blog algo sobre cloud computing, e acredito fortemente que será o caminho nas novas aplicações (inclusive já temos muitas empresas usando essa metodologia, exemplo disso são os servidores de banco de dados da google).

Não quero perder! =]

Postagens mais visitadas deste blog

Saiba como programar para Arduino sem ter nenhum hardware disponível

O Arduino já é uma tecnologia muito difundida entre os amantes de tecnologia. É difícil encontrar um profissional da computação que não brincou um pouco com esta ferramenta de prototipagem ou, que gostaria de fazer isso. Porém, em alguns casos, o programador quer conhecer o arduino mas não dispõe de nenhum hardware, nem mesmo da placa. Como isso poderia ser resolvido? A primeira resposta seria aquela mais simples e direta: ir as compras. Isso pode ser feito em uma loja física ou pela internet. No meu caso, por exemplo, tive a felicidade de encontrar em um site (não me lembro qual) um kit arduino, com um conjunto de sensores e um DVD com 41 vídeo aulas. Mas digamos que o profissional não esteja passando por um bom momento financeiro, ou ainda, simplesmente não queira comprar o Arduino sem antes conhecê-lo um pouco melhor. Para a última situação também já existe uma resposta, e diga-se de passagem, uma excelente resposta. Trata-se do site 123D Circuits.io . Depois de criar seu u

Entendendo como funciona a programação de computadores: linguagens de programação, lógica, banco de dados

Nesse post, diferente dos últimos que foram mais enfáticos nas experiências com tecnologias, vou focar um pouco mais nos profissionais que estão começando, ou pretendem ingressar na área de desenvolvimento de software, falando sobre conceitos fundamentais relacionados a programação em geral . Mercado de trabalho para programação Conforme já sabemos, o mercado de desenvolvimento de software, especialmente no Brasil, continua em franca expansão, sendo que cada vez mais as empresas buscam desenvolver seus próprios sistemas usando as mais diferentes e novas tecnologias. Algumas matérias interessantes: As seis profissões mais valorizadas em 2010 no IDG Now! Muitas vagas e sensação de reaquecimento da economia Por isso, a área de desenvolvimento de software tem despertado interesse em muitos profissionais de outras áreas que desejam mudar de profissão, já que as oportunidades de trabalho tendem a ser maiores. Esse é um perfil presente em muitos dos clientes da Globalcode que acabou m

JSON fácil em Java com GSon !

Ola pessoal ! O formato JSON ( J ava S cript O bject N otation) vem se consagrando cada vez mais na comunicação de dados, principalmente nos dispositivos móveis devido a esse formato ser mais leve que o XML e também mais legível. Uma prova disso são as inúmeras bibliotecas que existem para manipular esse formato, e no caso do Android, o suporte ao JSON é nativo. Mas apesar de ter esse suporte nativo, algumas operações devem ser feitas manualmente e o código acaba ficando um pouco verboso e repetitivo, já que para cada objeto que se deseja transmitir é necessário fazer um método que lê as propriedades do JSON e faz as devidas atribuições no seu objeto Java. Vamos supor o seguinte objeto sendo transmitido em JSON: {   user: {     id: 123456,     name: "Neto Marin",     username: "netomarin",     email: "netomarin@globalcode.com.br"   } } Se você fosse tratar um Webservice que envia esse JSON para o seu aplicativo Android, além de criar a o