Aprendendo Cloud Computing: 2013
Openshift origin: sua nuvem privada
Como todos já sabem, o OpenShift têm evoluído cada vez mais e mais pessoas estão utilizando o serviço para desenvolvimento de aplicações na nuvem. Inclusive há histórias bem interessantes sobre aplicações e startups sobre OpenShift. Caso queiram conhecer alguns cases de sucesso, vocês podem algumas delas através da página:
https://www.openshift.com/developer-spotlight
Mas para algumas startups, o maior caso de sucesso não é a aplicação hospedada no OpenShift e sim a infraestrutura da nuvem! Sim amigos, há startups que oferecem o serviço na nuvem assim como a Red Hat e a Google: trata-se de uma startup brasileira chamada getup (http://www.getupcloud.com). A startup oferece um serviço de hospedagem e PaaS exatamente como o OpenShift faz, porém com algumas vantagens para os desenvolvedores brazucas, como:
Infraestrutura totalmente feita no Brasil (seu ambiente foi construído no ambiente AWS assim como o OpenShift Online mas usando o datacenter de São Paulo)
O suporte é em Português (assim como no OpenShift Online, porém o plano pago do OpenShift ainda será lançado)
Acompanha todas as atualizações do OpenShift
Portanto, como devem ter percebido, o OpenShift é um projeto Open Source assim como todos os outros projetos que a Red Hat mantém. Por isso, é possível ter acesso ao código dele bem como é possível configurar uma nuvem privada dentro de sua própria empresa/startup/casa.
Tentarei nas próximas seções explicar as formas de como ter um ambiente OpenShift rodando em seu ambiente particular. Nota: Caso queira conhecer um pouco sobre a arquitetura interna do Openshift, basta ler essa página: http://aprendendo-cloud-computing.blogspot.com.br/p/aqruitetura-do-openshift.html
Antes, um aviso...
Após a Red Hat anunciar a sua versão On-Premise (ou seja, OpenShift rodando em redes privadas corporativas), houve a necessidade de separar as diferentes áreas para dar foco total aos engenheiros na inovação e produtização do OpenShift. Temos o OpenShift Online que é o serviço de hospedagem da comunidade acessível pelo endereço http://openshift.com e também com uma conta paga você terá acesso a mais recursos computacionais, o OpenShift Origin é o projeto Open Source da Red Hat e por fim temos o produto da Red Hat para empresas que é o OpenShift Enterprise. Abaixo você pode observar melhor a relação entre esses projetos:
Projetos OpenShift
Configurando o ambiente OpenShift
Esse é o jeito mais complexo de se construir um ambiente pois você irá configurar cada componente em questão e portanto leva-se muito tempo para isso. No entanto, é a melhor forma de estudar a arquitetura do OpenShift e isso será fundamental para caso você tenha problemas com o ambiente que está configurando.
Para isso, siga o Deployment Guide na página do OpenShift: http://openshift.github.io/documentation/oo_deployment_guide_comprehensive.html
Automatizando a configuração com Puppet
Claro que é muito bacana seguir os passos para fazer o deployment para compreender como cada componente se encaixa (acredito, eu acho isso melhor que quebra-cabeças), mas em um ambiente como o próprio OpenShift Online (o serviço PaaS público da Red Hat), torna-se inviável provisionar servidores para comportar a carga sem ao menos ter uma forma de automatizar a instalação/configuração. Pensando nisso, a equipe da comunidade criou alguns scripts em puppet para provisionar de forma automatizada. Inclusive, é possível provisionar um ambiente completo OpenShift em um servidor (o famoso all-in-one) ou configurar alguns componentes somente no servidor. O site do OpenShift tem um Puppet Deployment Guide para isso e caso queira é só seguir: http://openshift.github.io/documentation/oo_deployment_guide_puppet.html
Abaixo uma classe Puppet para provisionamento do OpenShift all-in-one:
node_fqdn                  => "broker.example.com",
#The domain under which application should be created. Eg: <app>-<namespace>.example.com
cloud_domain               => 'example.com',
dns_servers                => ['8.8.8.8'],
enable_network_services    => true,
configure_firewall         => true,
configure_ntp              => true,
configure_activemq         => true,
configure_mongodb          => true,
configure_named            => true,
configure_avahi            => false,
configure_broker           => true,
configure_node             => true,
update_network_dns_servers => true,
broker_dns_plugin          => 'nsupdate',
#install_repo               => 'file:///root/origin-rpms',
named_tsig_priv_key         => '<tsig key>',
#eth_device                 => '<ethernet device name, eg: enp0s5>',
#os_unmanaged_users         => ['gdm'],
#install_repo               => 'release',
#dependencies_repo          => 'release',
Download das Máquinas Virtuais (o famoso Lazy Mode)
Se vocês forem como eu, então procurarão pela maneira mais fácil. =D Trata-se simplemente se um repositório onde há diversos arquivos de Máquinas Virtuais já instalados e configurados com OpenShift e é só importar para o Hypervisor de sua preferência. Assim, você terá o mínimo de esforço necessário para rodar o OpenShift localmente em sua máquina/servidor.
Tela de início da Máquina Virtual OpenShift
Você pode encontrar mais informações no Virtual Machine Deployment Guide: http://openshift.github.io/documentation/oo_deployment_guide_vm.html
Bom, por ora é isso. Quem tiver dúvidas ou teve problemas com alguns dos métodos para provisionar seu próprio ambiente OpenShift, podem postar um comentário. Até a próxima.
Postado por Ricardo Martinelli Oliveira às 18:55 Um comentário:
Marcadores: community, openshift, origin, paas
O canivete suíço do desenvolvedor: ferramentas de diagnóstico para aplicações Java EE
Estou postando direto do JUDCon 2013 Brazil para dizer meu muito obrigado a todos que compareceram e que vieram cheio de vontade de conhecer mais o ecossistema JBoss. Os workshops de Openshift (ministrados diretamente pelos evangelistas OpenShift) também foi um sucesso.
Para os que compareceram à minha palestra, segue abaixo a apresentação:
Postado por Ricardo Martinelli Oliveira às 13:33 Um comentário:
JUDCon Brasil 2013 - Não Percam
Amanhã começa o evento mais importante para a comunidade JBoss: O JUDCon, JBoss Users and Developers Conference. E como era de se esperar, teremos bastante assunto sobre OpenShift... \o/
Eu irei palestrar no evento, mas o assunto não está relacionado sobre Cloud Computing nem OpenShift (mesmo assim, espero que gostem). Mas para compensar, teremos workshops com os desenvolvedores do Openshift (Steven Citron-Pousty e Shekhar Gulati) e até um desenvolvedor brazuca (Fabiano Franz) apresentando.
Para quem quiser ir, ainda dá tempo. Acesse http://www.jboss.org/events/JUDCon/2013/brazil e veja o local e agenda do evento. Espero ver todos por lá.
Postado por Ricardo Martinelli Oliveira às 19:51 Nenhum comentário:
Ferramentas de DevOps em Openshift
Além de todos os benefícios que eu sempre venho dizendo e escrevendo neste blog do Cloud Computing, quero aqui mostrar um cenário do qual o desenvolvimento de aplicações pode se tornar cada vez mais prático utilizando ferramentas que podem auxiliar o que chamados de DevOps (Development Operations). DevOps trata de unir o desenvolvimento, Quality Assurance (QA) e Infraestrutura (Technology Operations) de forma a estressar a comunicação, colaboração e integração entre esses times e com isso padronizando os ambientes de desenvolvimento e facilitando o gerenciamento de releases da aplicação.
Um gráfico que exemplifica o papel de DevOps em um processo de software (Fonte: wikipedia)
Cloud Computing, além de provisionar um ambiente operacional para suas aplicações em questão de segundos, aproxima o desenvolvedor de um ambiente de produção (ou muito próximo dele) e assim o desenvolvedor consegue ter uma visibilidade muito maior de como sua aplicação irá se comportar em um ambiente desses. Entretanto, não podemos simplesmente botar todo o foco nisso sem esquecer em métricas de qualidade do código nem em integração contínua.
Nesse post eu irei mostrar que em Openshift você pode fazer tudo isso e ainda por cima disponibilizar publicamente e de uma forma bem simples.
Redmine é uma ferramenta escrita em Ruby que permite a criação e gerenciamento de issues de projetos, além de servir como um repositório de documentos e arquivos relevantes ao projeto e também pode ser criada uma base de conhecimento em formato wiki. O que eu achei a maior sacada do Redmine é que ele traz uma visualização das issues em um gráfico Gantt(o gráfico preferido dos gerentes de projetos), podendo assim ver a situação do projeto de forma online.
Gráfico Gantt gerado pelo Redmine
Atualmente, eu venho utilizando o Redmine em um projeto pessoal meu e por isso eu venho estudando essa ferramenta para pode me organizar nas tarefas. Com ele, eu consigo ver exatamente o que eu quero que minha aplicação tenha e assim poder eu mesmo organizar as tarefas e ir registrando meu progresso.
Aliando a facilidade de provisionar um sistema como o Redmine com a infraestrutura de nuvem pública, é possível criar um ambiente para os gestores de projetos de uma startup a gerenciarem e monitorarem os projetos e seus detalhes de forma que não precisem manter essa infraestrutura (nem pagarem por isso).
Quem já ouviu falar de Integração contínua, com certeza já ouviu falar do Hudson/Jenkins. Essa ferramenta pode ser uma mão na roda para projetos com muitos desenvolvedores, onde ele auxilia a equipe a testar todo o projeto a partir do código que já se encontra em um repositório de código, desde compilando o código até executando testes unitários e de integração. Tarefas mais completas (e por consequëncia, complexas) chegam até a publicar os artefatos em repositórios como o Nexus.
Tela do jenkins e os detalhes de uma tarefa automatizada
Dentre todas as ferramentas que irei mencionar neste post, esse com certeza é o mais integrado ao ambiente OpenShift pois já nasceu com essa integração com o Jenkins e portanto é o mais fácil de se utilizar dentro do OpenShift.
Qualidade de código com Sonar
Para aumentar a qualidade de código de seus projetos, há a ferramenta Sonar para análise de qualidade de código. Obviamente, isso é feito de forma estática e baseado em regras de desenvolvimento. Para cobrir a qualidade do código em execução deve-se utilizar ferramentas de teste unitários, de integração, funcionais, etc. Isso tudo pode ser combinado no Jenkins em uma tarefa de integração contínua, com mencinado na seção anterior.
O Sonar já vem com algumas regras (algumas delas criadas pela própria Sun, e que Deus a tenha), o que permite que você não comece a criar as regras do zero e poupando tempo na definição das mesmas.
Tela do sonar com um exemplo de análise de um projeto
Um detalhe importante para utilizar o sonar em seus projetos OpenShift: o projeto é todo estruturado no Maven e portanto você pode utilizar o plugin do Sonar para assim poder executar a tarefa:
Porém o plugin exige que se utilize uma URL com uma porta específica para acesso ao repositório do Sonar e registrar todas as informações relevantes à ele. Como no OpenShift, as regras de segurança são muito restritar, é necessário que você habilite o port forward em sua aplicação sonar com o seguinte comando:
$ rhc port-forward -a <aplicacao_sonar>
Monitoramento de aplicações com Openshift Metrics
OpenShift fornece um cartridge específico para o monitoramento da saúde de sua aplicação. Ela é muito simples, mas já te dá informações cruciais da sua aplicação(como consumo de memória e CPU). Para adicionar em sua aplicação o cartridge para monitorar sua aplicação, basta executar:
$ rhc cartridge add metrics-0.1 -a <nome-aplicacao>
Após a conclusão do comando, você pode acessar o Metrics através da URL:
http://<aplicacao>-<dominio>.rhcloud.com/metrics/
Por ser uma ferramenta ainda experimental, o código ainda não está disponível. Acredito que em breve teremos mais funcionalidade e também a abertura do código.
As ferramentas apresentadas neste post podem ser instaladas de forma muito simples: seja pela ferramenta rhc ou pelo próprio console administrativo do Openshift ou até utilizando dos quickstarts da comunidade que, em sua maioria, se encontram no github do Openshift. Apesar da facilidade da criação desse ambiente, as contas gratuitas do Openshift permitem até 3 aplicações criadas e portanto você pode consumir toda a sua cota, mas nada te impede de criar várias contas e gerenciar essas aplicações em uma conta específica.