tag:blogger.com,1999:blog-34385555626426801632024-03-16T15:49:53.677-03:00Aprendendo Cloud ComputingAnonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-3438555562642680163.post-19148257016859638342016-06-19T16:30:00.002-03:002016-06-19T16:30:20.176-03:00O fim do blog "Aprendendo Cloud Computing"?Olá,<br />
<br />
Há muito tempo que não venho escrevendo nesse blog, mas há tanto para escrever e vejo que estou em uma dívida com os leitores.<br />
<br />
A verdade seja dita: Uso o blogger há um tempo e não gosto muito dele. Assim como não gosto do wordpress. Esses dois possuem editores muto legais para escrever textos, mas não me familiarizei com eles porque ainda "penso em HTML".<br />
<br />
Aos que pensam que o blog morreu, bom... Pelo menos no blogger. ;)<br />
<br />
A partir de hoje, meu blog será migrado para o GitHub Pages e passarei a escrever por lá.<br />
<br />
<h3>
GitHub Pages?</h3>
Sim, caros leitores deste blog. A quem não conhece, é possível fazer um site usando o dominio <i>github.io </i>apenas criando um repositório no seu github no formato <i>seuusername.github.io </i>e começar a criar páginas nele.<br />
<br />
<h3>
Mas manter um blog usando apenas páginas estáticas não é mais trabalhoso?</h3>
Com certeza, é. Porém estou utilizando uma ferramente chamada <a href="https://jekyllrb.com/" target="_blank">jekyll</a> que me permite gerar páginas estáticas complexas a partir de templates e arquivos markdown. Isso me permite criar com mais facilidade posts em blog e usando uma sintaxe bem enxuta.<br />
<br />
<h3>
Ok, estou curioso. Qual a URL do novo blog?</h3>
No momento estou utilizando uma URL bem grande, mas irei procurar uma forma de encurtar ele.<br />
Nesse momento, usem a seguinte URL para acessar:<br />
<br />
<a href="https://rimolive.github.io/aprendendo-cloud-computing/" target="_blank">https://rimolive.github.io/aprendendo-cloud-computing/ </a><br />
<br />
Assim que tiver mais novidades eu irei postar no novo blog. Até lá!Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com116tag:blogger.com,1999:blog-3438555562642680163.post-75296222318836280302014-11-16T15:45:00.001-02:002014-11-16T15:45:07.548-02:00Infográfico - A história do Cloud ComputingTalvez vocês não saibam, mas a idéia de Cloud Computing surgiu há mais de 50 anos. E quem criou inicialmente a idéia foi <a href="https://pt.wikipedia.org/wiki/John_McCarthy" target="_blank">John McCarthy</a>, o criador do Lisp.<br />
Mas ainda há muitas perguntas intrigantes a respeito do assunto: Quando demos início a isso? Quem começou a utilizar?<br />
Neste post, quero divulgar um post do blog <a href="http://www.cloudmarket.com.br/blog" target="_blank">Cloud Market</a> que faz um infográfico sobre Cloud Computing. Desde a origem até os dias atuais, ele explica de forma sucinta toda a evolução da tecnologia até chegarmos ao presente e fazer uma previsão do que virá em Cloud Computing.<br />
O conteúdo é muito bom e vale a pena dar uma olhada. O link para o post é: <a href="http://www.cloudmarket.com.br/blog/cloud-computing/infografico-historia-cloud-computing/">http://www.cloudmarket.com.br/blog/cloud-computing/infografico-historia-cloud-computing/</a><br />
Por ora é isso. Até o próximo post! Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com10tag:blogger.com,1999:blog-3438555562642680163.post-8775450719298352142014-08-21T11:10:00.003-03:002014-08-21T11:10:42.659-03:00Meetup de OpenShift em São Paulo - Migração de aplicações Google App Engine para OpenShiftOlá a todos.<br />
<br />
Hoje na Caelum às 19hs eu apresentarei no Meetup de OpenShift com o tema: "Migração de aplicações Google App Engine (GAE) para o OpenShift". Quem quiser mais detalhes, é só clicar no link abaixo:<br />
<br />
http://www.meetup.com/OpenShift-Sao-Paulo/events/200967252/<br />
<br />
Desculpa aos leitores pelo convite em cima da hora, mas não deu pra postar antes. Para quem puder participar, nos veremos lá. Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com16tag:blogger.com,1999:blog-3438555562642680163.post-26636099525299915882014-06-15T14:51:00.001-03:002014-06-15T14:51:35.373-03:00Crie seu próprio site de e-commerce nas nuvens com o OpenshiftUm dos grandes e mais importantes setores do mercado da Internet com certeza são os chamados e-commerce. Com certeza, quando se fala em varejo online, fala-se em Submarino, Americanas, Magazine Luiza, etc. Um dos sites de e-commerce mais importantes dessa linha com certeza é a Amazon.<br />
Além da Amazon ser a maior varejista online do mundo, ela é um perfeito estudo de caso de utilização de Cloud Computing. Neste post, eu irei mostrar que voce também pode ter uma loja online utilizando OpenShift e um framework feito em PHP chamado <a href="http://magento.com/">Magento</a>.<br />
<h3>
O que é o Magento?</h3>
<a href="http://magento.com/">Magento</a> é um framework de e-commerce feito em PHP e com diversas funcionalidades para criação, design e gerenciamento de uma loja online, vem como diversos dashboards para acompanhamento das vendas e também o controle de estoque.<br />
Uma das coisas que fazem do Magento uma grande plataform de e-commerce é a possibilidade de desenvolver e instalar diversos plugins que permitem a integração com sistemas de pagamento online (como PayPal), bem como monitoramento de campanhas de marketing com o Google AdWords e Google AdSense. Sem dúvidas é a melhor plataforma de e-commerce que há no mercado e além de tudo é Open Source, que permite que você possa alterar o código para suas necessidades.<br />
Um problema que eu vejo em relação ao Magento é a complexidade de instalação da plataforma e isso traz um fator complicado para utilização da ferramenta. O OpenShift permitiu que o Magento fosse provisionado de forma simples e com todo o aparato necessário para iniciar sua loja online sem muito conhecimento da plataforma. Na próxima seção eu irei mostrar como criar uma aplicação Magento.<br />
<h3>
Criando sua loja online no OpenShift</h3>
Para criar sua loja online no OpenShift, basta criar uma nova aplicação instantânea dentro da interface de gerenciamento web do OpenShift. <b>Nota do autor:</b> Aplicações instantâneas (ou Instant Apps) são aplicações dentro do OpenShift que podem ser criadas sem a necessidade de pegar o código de outro repositório ou configurações adicionais. Com ele, é possível provisionar diversas aplicações como blogs, ferramentas de produtividade e muito mais.<br />
Sem mais delongas, vamos criar a aplicação. Na tela de criação da aplicação, use o campo de busca para encontrar a aplicação Magento como mostra a figura abaixo:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-nx1AdCdsvxA/U5zX6kCZiTI/AAAAAAAACEQ/522-NbYKuzs/s1600/Screenshot+from+2014-06-14+20:15:31.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-nx1AdCdsvxA/U5zX6kCZiTI/AAAAAAAACEQ/522-NbYKuzs/s1600/Screenshot+from+2014-06-14+20:15:31.png" height="242" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela de criação da aplicação</td></tr>
</tbody></table>
<br />
Assim que selecionada a aplicação Magento, você seguira para a tela de informações da aplicação, como a URL da aplicação:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-B1n2FnslkoM/U5zYMzoFPsI/AAAAAAAACEY/L3hZU7GgbH4/s1600/Screenshot+from+2014-06-14+20:17:48.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-B1n2FnslkoM/U5zYMzoFPsI/AAAAAAAACEY/L3hZU7GgbH4/s1600/Screenshot+from+2014-06-14+20:17:48.png" height="242" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Definindo os parâmetros básicos da aplicação - 1</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-jTew-H7v7G8/U5zYTke8ayI/AAAAAAAACEg/LAcYeXyarug/s1600/Screenshot+from+2014-06-14+20:17:55.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-jTew-H7v7G8/U5zYTke8ayI/AAAAAAAACEg/LAcYeXyarug/s1600/Screenshot+from+2014-06-14+20:17:55.png" height="242" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Definindo os parâmetros básicos da aplicação -2</td></tr>
</tbody></table>
Após clicar em "Create Application", em alguns minutos a aplicação já estará pronta para uso e você terá sua loja online funcionando! Acesse a aplicação pela URL definida anteriormente e você verá a loja com um visual pré-pronto:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-G85bD6iiLS8/U5zanmNukZI/AAAAAAAACEs/pBChA0n3T3U/s1600/Screenshot+from+2014-06-14+20:28:04.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-G85bD6iiLS8/U5zanmNukZI/AAAAAAAACEs/pBChA0n3T3U/s1600/Screenshot+from+2014-06-14+20:28:04.png" height="242" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Loja online provisionada no OpenShift</td></tr>
</tbody></table>
<br />
E pronto! você já tem uma loja online. Agora, bastaque você faça a administração da sua loja e faça as devidas configurações de moeda, idioma e outras coisas mais. Mas pera lá: se eu já tenho a loja e posso acessar como cliente, como eu posso agora acessar a interface de administração?<br />
Para acessar a interface de administração, basta que você adicione /admin na URL da sua aplicação e você poderá acessar a interface de administração conforme abaixo:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-2oPO7C9OQxY/U5zdl8KEYbI/AAAAAAAACFA/fkWBJV561hY/s1600/Screenshot+from+2014-06-14+20:40:39.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-2oPO7C9OQxY/U5zdl8KEYbI/AAAAAAAACFA/fkWBJV561hY/s1600/Screenshot+from+2014-06-14+20:40:39.png" height="242" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela de login da interface de Administração do Magento</td></tr>
</tbody></table>
Agora, basta que você acesse a aplicação utilizando o usuário <i>admin</i> e a senha <i>OpenShiftAdmin123</i>. E pronto! Você terá acesso à interface de administração do Magento, conforme mostra a figura abaixo:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-T43zRZxC5jA/U5zaumwJJBI/AAAAAAAACE0/jqFRZ21asHU/s1600/Screenshot+from+2014-06-14+20:27:47.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-T43zRZxC5jA/U5zaumwJJBI/AAAAAAAACE0/jqFRZ21asHU/s1600/Screenshot+from+2014-06-14+20:27:47.png" height="242" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela de administração do Magento</td></tr>
</tbody></table>
Para obter mais informações sobre o Magento, dê uma olhada na <a href="http://www.magentocommerce.com/resources/magento-user-guide">documentação</a> sobre como gerenciar a ferramenta e também tem algumas dicas de como criar uma loja online de sucesso. <br />
<h3>
Informações adicionais</h3>
O Magento como uma aplicação instantânea foi desenvolvido como um quickstart e é Open Source também. Caso você queira contribuir com funcionalidades adicionais ou aperfeiçoando a aplicação para rodar no OpenShift é possível baixar o <a href="https://github.com/openshift/magento-example">repositório</a> e contribuir.<br />
<h3>
Conclusão</h3>
Não há dúvidas de que o varejo online é um mercado bem atrativo, pois sempre há espaço para novas lojas com preços cada vez mais competitivos no mercado. Uma das coisas que poderiam ser o impeditivo para uma nova loja online não ter sucesso é o custo de se manter a hospedagem e gerenciamento da loja na Internet. Com esse post, espero poder contribuir para que esse impeditivo deixe de existir, tornando cada vez mais fácil gerenciar sua loja online e também iniciar seu negócio online em pouco tempo. Por ora é isso, até o próximo post!Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com3tag:blogger.com,1999:blog-3438555562642680163.post-38455164594288094332014-06-14T14:44:00.002-03:002014-06-14T14:44:15.035-03:00Review do livro "Getting Started with OpenShift: A guide for impacient Beginners"Recebi do time do OpenShift o livro <i>Getting Started with OpenShift</i>, dos autores <i>Steve Pousty</i> e <i>Katie Miller. </i>Tive o prazer de conhecer o Steve no evento JUDCon e conversei com ele sobre OpenShift. =D <br />
Para quem não conhece, Steve Pousty é Desenvolvedor do OpenShift e Katie Miller é Developer Advocate do OpenShift.<br />
<br />
<h3>
Do que se trata o livro?</h3>
O livro trata dos primeiros passos com OpenShift (havia feito esse <a href="http://aprendendo-cloud-computing.blogspot.com.br/2012/10/primeiros-passos-com-openshift.html">post</a> anteriormente) mas com muito mais detalhes a respeito da administração de sua conta OpenShift e como usufruir de todas as funcionalidades do OpenShift para criar aplicações.<br />
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://www.openshift.com/sites/default/files/images/ebook_getting_started_with_openshift_0.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://www.openshift.com/sites/default/files/images/ebook_getting_started_with_openshift_0.jpg" width="328" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Imagem da capa do Livro</td></tr>
</tbody></table>
O livro é pequeno, porém é bem consistente quando se trata em explicar os primeiros passos. Nele, é possível aprender desde a criação da aplicação e adição de tecnologia de backend, passando por gerenciamento da aplicação até conceitos um pouco mais avançados como WebSockets, Backup e colaboração entre contas.<br />
Para tornar a didática do livro mais prazeirosa, ao longo dos capítulos você vai criando e evluindo uma aplicação de exemplo (utilizando Python) e utilizando algumas tecnologias de backend como cron, Banco de Dados PostgreSQL e alguns recursos adicionais do OpenShift.<br />
Bom, por ora é isso. Até o próximo post!Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com2tag:blogger.com,1999:blog-3438555562642680163.post-82015350672108618562014-05-30T10:56:00.001-03:002014-05-30T10:56:32.833-03:00Primeiro meetup de OpenShift em São pauloO time da <a href="http://getupcloud.com/">Getup Cloud</a> apresentou o primeiro meetup de OpenShift em São Paulo. O evento aconteceu na <a href="http://www.osmosecw.com.br/">Osmose coworking</a> e contou com a participação da Red Hat.<br />
<br />
<h3>
O evento </h3>
Nesse primeiro meetup, o pessoal quis abordar os termos mais básicos sobre o OpenShift, suas vertentes(expliquei sobre isso em um <a href="http://aprendendo-cloud-computing.blogspot.com.br/2013/10/openshift-origin-sua-nuvem-privada.html">post</a> anterior), a arquitetura e como a Getup Cloud se encaixa nisso.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-5WgTN_jtLnI/U4iLmSDuDCI/AAAAAAAACA0/MUPXqywaHMc/s1600/highres_369296902.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-5WgTN_jtLnI/U4iLmSDuDCI/AAAAAAAACA0/MUPXqywaHMc/s1600/highres_369296902.jpeg" height="400" width="300" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">À espera do início da apresentação</td></tr>
</tbody></table>
O evento foi sensacional, as pessoas que foram trouxeram muitas dúvidas prontamente respondidas pelos organizadores, houve uma interação dos participantes e muito interesse por parte deles em conhecer sobre Openshift.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-SpCBwkYtLFI/U4iLr4DAttI/AAAAAAAACA8/QYrT__6EKLc/s1600/highres_369299672.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-SpCBwkYtLFI/U4iLr4DAttI/AAAAAAAACA8/QYrT__6EKLc/s1600/highres_369299672.jpeg" height="400" width="300" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Diego (Getup Cloud) explicando a diferença das vertentes do Openshift</td></tr>
</tbody></table>
Ao final do evento, a Red Hat pagou pela pizza e houve um ótimo espaço para Networking. Todos conversando sobre as possibilidades de uso do OpenShift e também muitas idéias para aplicações e quickstarts/cartridges.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-oiyzRIsLz90/U4iLwgYZ_NI/AAAAAAAACBE/0t5lASvpoAc/s1600/highres_369299722.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-oiyzRIsLz90/U4iLwgYZ_NI/AAAAAAAACBE/0t5lASvpoAc/s1600/highres_369299722.jpeg" height="300" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Slide sobre a arquitetura da Getup Cloud</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-UCAu1U76wls/U4iKrSn6X2I/AAAAAAAACAo/g8ZAKnxJ0eQ/s1600/Bo2Cj1yIUAES03t.jpg:large.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-UCAu1U76wls/U4iKrSn6X2I/AAAAAAAACAo/g8ZAKnxJ0eQ/s1600/Bo2Cj1yIUAES03t.jpg:large.jpeg" height="300" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">O pessoal do meetup no espaço Osmose coworking</td></tr>
</tbody></table>
Provavelmente, haverá um próximo evento do meetup em Junho. Pra quem não quer ver a Copa, conversem com os organizadores para fazer o evento. Pra quem quer ver, vamos assistir a Copa juntos enquanto falamos de OpenShift. =D<br />
Por ora é isso, até o próximo post!Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com3tag:blogger.com,1999:blog-3438555562642680163.post-52493900534959862082014-05-25T17:01:00.001-03:002014-05-25T17:01:13.143-03:00OpenShift Origin Index: O catálogo de serviços para o OpenShiftCom tantas possibilidades de serviços para utilizar no OpenShift, ficamos até perdidos em saber qual está disponível ou não. Google nem sempre é nosso amigo quando se trata de quickstarts e cartuchos para o OpenShift, então é importante procurar em um ponto central para também ter uma sensação de que o quickstart/cartucho que estamos utilizando é até confiável e não incompleto. Com base nisso, a equipe do OpenShift criou o OpenShift Origin Index. Falarei sobre ele nas próximas seções.<br />
<br />
<h3>
O que é o OpenShift Origin Index?</h3>
O OpenShift Origin Index é uma aplicação criada pelo time de OpenShift afim de centralizar todos os quickstart e cartuchos da comunidade em uma página, onde os desenvolvedores que querem divulgar seu trabalho adicioná-los no site e os que estão interessados en utilizar poder buscar e fazer o deploy diretamente no Openshift.<br />
<br />
Basicamente, o OpenShift Origin Index é um Google para o OpenShift Origin porém com a diferença de que ao lado do Quickstart/ Cartucho há um botão de deploy, que irá lhe redirecionar diretamente para a página de criação da aplicação OpenShift e com isso<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-h9Ii6BXQibo/U4Dxa2pX9sI/AAAAAAAACAE/WgSG-9a_cE8/s1600/Screenshot-OpenShift+Origin+Index+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-h9Ii6BXQibo/U4Dxa2pX9sI/AAAAAAAACAE/WgSG-9a_cE8/s1600/Screenshot-OpenShift+Origin+Index+-+Mozilla+Firefox.png" height="213" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela do OpenShift Origin Index</td></tr>
</tbody></table>
A interface é bem simples, porém está em constante desenvolvimento pela equipe e com certeza veremos uma evolução cada vez maior dele.<br />
<br />
<h3>
Como Acessar?</h3>
O OpenShift Origin Index está disponivel na URL <a href="http://origin.ly/">http://origin.ly/</a> e você pode tanto publicar seu quickstarts/ cartuchos quanto usar os que estão disponíveis no catálogo.<br />
Para quem quer visualizar ou usar os serviços não é necessário login, porém para divulgar você precisa fazer o login com a sua conta do GitHub. Para isso, clique em Sign In e você será redirecionado para a página do GitHub onde irá pedir sua autorização para que a aplicação possa acessar seus repositórios e sua conta.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-UQILbwJTJPA/U4D0sQtWKJI/AAAAAAAACAM/as4wPkomt1A/s1600/Screenshot-OpenShift+Origin+Index+-+Mozilla+Firefox-1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-UQILbwJTJPA/U4D0sQtWKJI/AAAAAAAACAM/as4wPkomt1A/s1600/Screenshot-OpenShift+Origin+Index+-+Mozilla+Firefox-1.png" height="213" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Adicionando um quickstart/cartucho</td></tr>
</tbody></table>
<br />
<br />
<br />
<h3>
Posso usar o OpenShift Origin Index em meu próprio ambiente OpenShift Origin?</h3>
O código do OpenShift Origin Index é aberto (assim como o código do OpenShift Origin) e você pode encontrar o código em <br />
<a href="https://github.com/openshift/oo-index">https://github.com/openshift/oo-index</a>. A aplicação foi feita em Python utilizando Flask e Bootstrap.<br />
Para utilizá-lo em seu próprio ambiente OpenShift Origin, basta seguir as instruções na página do GitHub do OpenShift Index e fazer o deploy em seu próprio ambiente. Não se preocupe com dados, pois no momento seu repositório de dados é um arquivo .json que armazena todos os quickstarts. <br />
<br />
<h3>
Conclusão</h3>
Não há como negar as infinitas possibilidades do OpenShift em trazer plataformas, aplicações ou linguagens para o ambiente de Computação em Nuvem. Basta analisar todos esses quickstarts e cartuchos para ver o quanto pode ser feito nesse ambiente. Até o próximo post. <br />
<h3>
</h3>
Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com3tag:blogger.com,1999:blog-3438555562642680163.post-37690800026206886082014-05-24T16:02:00.001-03:002014-05-24T16:06:41.287-03:00xPaaS: A nova geração de serviços na nuvemÉ cada vez mais claro que a nuvem está se tornando uma solução mais atraente quando se fala em reduzir o Time-to-Market e desenvolvimento rápido de aplicações. Porém em determinados momentos não há como simplesmente esquecer conceitos do passado e em alguns momentos reinventar a roda. Com base nessa necessidade, a equipe do OpenShift está lançando a solução xPaaS, que reúne alguns serviços para desenvolvimento de aplicações mais avançados. Neste post, falarei um pouco sobre a solução.<br />
<br />
<h3>
A Solução xPaaS</h3>
A solução xPaaS é um conjunto de features adicionais agregadas ao OpenShift que permite utilizar em suas aplicações conceitos já utilizados atualmente dentro da nuvem. Tais conceitos, como BPM e EAI, rodam como aplicações dentro do OpenShift permitindo assim integrar os sistemas através de padrões de arquitetura EAI, orquestração de serviços utilizandos processos e regras e fazer deploy em ambientes híbridos.<br />
O OpenShift xPaaS possui até o momento os serviços iPaaS, BPMaaS e mPaaS. O que eles são e para que serve? Tentarei explicar nas próximas seções. <br />
<br />
<h3>
O serviço base ou o serviço de container de aplicações</h3>
<h3>
</h3>
Desde o início, o OpenShift oferece Servidores de Aplicações Java (como JBoss, Tomcat e outros) para desenvolvimento de aplicações. Sem dúvida, esses servidores são essenciais já que hospedam suas aplicações. A partir daí, o desenvolvimento cria as aplicações corporativas utilizando a especificação Java EE onde define as APIs necessárias tais como persistência, transação e outros.<br />
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-jjhiMEdTxdQ/U4Crs40i8lI/AAAAAAAAB-w/TRmEbJB423Y/s1600/Screenshot-Java+EE+6+Starter+Application+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-jjhiMEdTxdQ/U4Crs40i8lI/AAAAAAAAB-w/TRmEbJB423Y/s1600/Screenshot-Java+EE+6+Starter+Application+-+Mozilla+Firefox.png" height="213" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Aplicação Kitchensink rodando no cartridge JBoss EAP</td></tr>
</tbody></table>
Mais informações você pode encontrar em <a href="https://www.openshift.com/developers/jboss">https://www.openshift.com/developers/jboss</a><br />
<br />
<h3>
iPaaS: Integração como um Serviço</h3>
Geralmente, em uma empresa, há diversas aplicações para agilizar o fluxo de trabalho de departamentos internos da empresa porém é necessário que essas aplicações interajam entre si afim de melhorar a eficiência deles sem reinventar a roda. Para isso, os padrões EAI facilitam a integração entre sistemas utilizando princípios arquiteturais.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-c-ZXEtumbuA/U4Df3rneLWI/AAAAAAAAB_k/Xjy7jVq311w/s1600/Screenshot-Dashboard+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-c-ZXEtumbuA/U4Df3rneLWI/AAAAAAAAB_k/Xjy7jVq311w/s1600/Screenshot-Dashboard+-+Mozilla+Firefox.png" height="213" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fuse no OpenShift</td></tr>
</tbody></table>
<br />
Além de integração, há também uma necessidade de se integrar diversas fontes de dados para o ecossistemas de aplicações de uma empresa. Uma vez que há diversas formas de se armazenar dados, sempre há um problema para juntar informações que vêm de várias fontes e com isso criou-se o conceito de Data Virtualization. Esse conceito trata de juntar todas as fontes de dados em uma base de dados virtual, criando-se um único ponto de acesso para as informações vindas de diversas fontes de dados.<br />
O OpenShift oferece um cartucho chamado Data Virtualization que consiste em criar uma instância de Teiid (mais informações sobre o projeto Teiid em <a href="http://teiid.jboss.org/">http://teiid.jboss.org/</a>) e assim poder criar um ponto único de acesso a diversas fontes. A integração pode ser feita via IDE Eclipse utilizando os plugins do JBoss Tools ou utilizando o JBoss Developer Studio.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-6bCcZnDFPas/U4C0IYg3jaI/AAAAAAAAB_E/2YouUaYRjvw/s1600/Screenshot-JBoss+-+jboss-eap-6.1+Runtime+Server+-+JBoss+Developer+Studio+.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-6bCcZnDFPas/U4C0IYg3jaI/AAAAAAAAB_E/2YouUaYRjvw/s1600/Screenshot-JBoss+-+jboss-eap-6.1+Runtime+Server+-+JBoss+Developer+Studio+.png" height="213" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Eclipse executando uma instância de Teiid rodando no OpenShift</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Você pode encontrar mais informações sobre o Fuse em <a href="https://www.openshift.com/developers/jboss-fuse/getting-started">https://www.openshift.com/developers/jboss-fuse/getting-started</a> e sobre o Teiid/Data Virtualization Platform em <a href="https://www.openshift.com/developers/jboss-data-virtualization/getting-started">https://www.openshift.com/developers/jboss-data-virtualization/getting-started</a><br />
<br />
<h3>
BPMaaS: Processos de negócio como um Serviço</h3>
Apesar de o desenvolvimento de código para criar aplicações é a forma mais clássica da computação de se facilitar processos das áreas da empresa. No entanto, certas áreas possuem regras de negócio mutáveis que inviabiliza o desenvolvimento de código dado o esforço de se alterar as regras a qualquer momento. Para isso, existe o conceito de Business Rules Management (Gerenciamento de Regras de Negócio) que permite que o analista de neǵocios possa criar e alterar as regras de negócio de forma mais prática e rápida através de uma linguagem simples e sem necessitar de alterações no código da aplicação.<br />
O projeto Drools (<a href="http://drools.jboss.org/">http://drools.jboss.org/</a>) permite esse tipo de lógica e vai além: é possível também criar fluxos de negócio para serem integrados a aplicações e com isso criar um ambiente de BRM para regras de negócios mutáveis.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-VEjRpvDsnXA/U4Dmrm4NPqI/AAAAAAAAB_w/7ElnDxxjfLE/s1600/Screenshot-Red+Hat+JBoss+BPM+Suite+::+Business+central+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-VEjRpvDsnXA/U4Dmrm4NPqI/AAAAAAAAB_w/7ElnDxxjfLE/s1600/Screenshot-Red+Hat+JBoss+BPM+Suite+::+Business+central+-+Mozilla+Firefox.png" height="213" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Criando um Fluxo de Negócio com o Cartucho BPMS</td></tr>
</tbody></table>
<br />
O OpenShift utiliza o Drools através do cartucho JBoss BPM Suite, que também adiciona BAMs (Business Activity Monitoring ou Monitoramento de Atividade de Negócios) para que sejam gerados dashboards que monitora como estão os dados gerenciais que permite tomar decisões mais certeiras a respeito do negócio.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-HlX_OSnaBnI/U4C3otI4DVI/AAAAAAAAB_U/ULGEyjMsaVQ/s1600/Screenshot-Dashboards+Showcase+-+Sales+opportunities+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-HlX_OSnaBnI/U4C3otI4DVI/AAAAAAAAB_U/ULGEyjMsaVQ/s1600/Screenshot-Dashboards+Showcase+-+Sales+opportunities+-+Mozilla+Firefox.png" height="213" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela de BAM do JBoss BPMS no OpenShift</td></tr>
</tbody></table>
<br />
Mais informações sobre o JBoss BPM Suite pode ser encontrada em <a href="https://www.openshift.com/developers/jboss-bpms/getting-started">https://www.openshift.com/developers/jboss-bpms/getting-started</a><br />
<br />
<h3>
mPaaS: Plataforma de Mobilidade como um Serviço</h3>
Uma das tecnologias que têm sido cada vez mais adotada é a Mobilidade, ou seja, aplicações corporativas criadas para Smartphones e/ou Tablets. Um dos desafios dessa tecnologia é criar aplicações que rodam sem dificuldade em diversas plataformas Mobile, o que dificulta o desenvolvimento. Para isso, há um conceito chamado de Mobile Web onde é possível criar aplicações que podem rodar em qualquer plataforma, uma vez que a aplicação é desenvolvida utilizando as tecnologias W3C (HTML, CSS e Javascript). Mas e quando é necessário utilizar conceitos nativos do SO Mobile? Aí é necessário desenvolver a aplicação sob o conceito de aplicações Híbridas em que a partir do código cria um pacote nativo para determinada plataforma Mobile.<br />
Ok, mas e se eu precisar fazer algum tipo de comunicação Push nas minhas aplicações Mobile? O OpenShift possui o cartucho Aerogear Push Server que gerencia todos os provedores de Push para assim criar um ponto único de comunicação entre as diversas implementações de Push como o Google Cloud Messaging, Apple Push Network, etc.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-x9F9OiPPodE/U4Dpkuhi2sI/AAAAAAAAB_4/w-tMm0hevtE/s1600/Screenshot-Applications+google-taxt+-+AeroGear+UnifiedPush+Server+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-x9F9OiPPodE/U4Dpkuhi2sI/AAAAAAAAB_4/w-tMm0hevtE/s1600/Screenshot-Applications+google-taxt+-+AeroGear+UnifiedPush+Server+-+Mozilla+Firefox.png" height="213" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Aerogear Push Server no Openshift</td></tr>
</tbody></table>
<br />
Para maiores informações sobre o Aerogear, veja em <a href="https://www.openshift.com/quickstarts/aerogear-push-0x">https://www.openshift.com/quickstarts/aerogear-push-0x</a>. O Aerogear Push Server é parte do projeto Aerogear, que pode ser encontrado em <a href="http://aerogear.org/">http://aerogear.org/</a>.<br />
<br />
<h3>
Conclusão</h3>
O OpenShift cresce cada vez mais e com mais aplicações e plataformas disponíveis para uso. O xPaaS é uma das plataformas que eu particularmente acho mais promissora dada a variedade de serviços corporativos envolvidos. Quem quiser conhecer mais sobre o xPaas, pode ver em <a href="https://www.openshift.com/xpaas">https://www.openshift.com/xpaas</a>. Até o próximo post. Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com0tag:blogger.com,1999:blog-3438555562642680163.post-42164726572329963952014-01-29T18:18:00.001-02:002014-01-29T18:18:58.669-02:00Fedora 20 Release Party No dia 18 de Janeiro, participei do <a href="https://fedoraproject.org/wiki/Release_Party_F20_Sampa">Fedora 20 Release Party</a> no escritório da Red Hat. O evento foi mais um motivo para encontrar bons e velhos amigos para conversar sobre Open Source e também poder compartilhar conhecimento. Graças ao meu amigo <a href="https://plus.google.com/+LeonardoMenezesVaz">Leonardo Vaz</a> (que apresentou o tema principal do encontro), tive a oportunidade e apresentar sobre o OpenShift Origin 3 e OpenShift Enterprise 2. <br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-V-Tq9MT9Z8o/UulfIfz1JnI/AAAAAAAABvc/2H0xlg4we_s/s1600/pic002.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-V-Tq9MT9Z8o/UulfIfz1JnI/AAAAAAAABvc/2H0xlg4we_s/s1600/pic002.jpg" height="400" width="300" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Apresentando sobre o OpenShift</td></tr>
</tbody></table>
O pessoal em geral conhecia o OpenShift mas não o conhecia tão a fundo, e com isso o evento ficou ainda mais bacana já que eu não havia preparado uma apresentação mais formal sobre o assunto mas só a vontade de todos por querer conhecer mais sobre o assunto já me permitiu que eu falasse por mais ou menos 2 horas. =D<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-rm_2azjbJGY/UulfNUH9RaI/AAAAAAAABvk/EMUB2kRiFiM/s1600/pic003.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-rm_2azjbJGY/UulfNUH9RaI/AAAAAAAABvk/EMUB2kRiFiM/s1600/pic003.jpg" height="300" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pessoal super interessado sobre OpenShift</td></tr>
</tbody></table>
Há propostas de se fazer outros e provavelmente estarei por lá. Publicarei o próximo evento aqui assim que souber a data. Até a próxima!<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-1gRne_3lvbI/Uule6rrpTXI/AAAAAAAABvU/pT3pFS19-40/s1600/pic005.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-1gRne_3lvbI/Uule6rrpTXI/AAAAAAAABvU/pT3pFS19-40/s1600/pic005.jpg" height="300" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pessoal do evento</td></tr>
</tbody></table>
<br />Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com0tag:blogger.com,1999:blog-3438555562642680163.post-83022659066179043782014-01-11T20:58:00.002-02:002014-02-02T17:10:37.810-02:00Django nas nuvens: Python com OpenShiftEsse e alguns próximos posts serão a respeito de um projeto novo que pretendo finalmente botar em prática sobre um sistema que gostaria muito de desenvolver. Tenho algumas idéias com algumas features que virão no futuro no OpenShift e que virão também para complementar essa série. Iniciarei essa série falando sobre Python e de um framework muito utilizado pelos programadores Python: O Django.<br />
<br />
<h3>
Introdução </h3>
O Django é um framework MVC que auxilia na construção de aplicações Web com Python utilizando o bom e velho padrão MVC (Model-View-Controller). Nele, é possível criar aplicações de forma bem rápida e simples. Bastando criar algumas linhas de código e você já consegue ter CRUDs básicas funcionando.<br />
<br />
<h3>
Primeiros passos</h3>
Para iniciar o desenvolvimento, vamos criar uma aplicação utilizando a ferramenta RHC (em um post anterior eu expliquei como utilizar)<br />
<blockquote class="tr_bq">
$ rhc create-app djangoapp python-2.7 --from-code git://github.com/openshift/django-example.git</blockquote>
<div class="separator" style="clear: both; text-align: center;">
</div>
Após a criação da aplicação,você poderá acessar através da URL http://djangoapp-<dominio>.rhcloud.com. A página inicial será assim:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-2vRCMLI2inM/UtG7b0omRkI/AAAAAAAABuQ/hoHtRRELl_o/s1600/Screenshot+from+2014-01-11+19:43:56.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-2vRCMLI2inM/UtG7b0omRkI/AAAAAAAABuQ/hoHtRRELl_o/s1600/Screenshot+from+2014-01-11+19:43:56.png" height="250" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Página inicial da aplicação Django</td></tr>
</tbody></table>
Falarei sobre esse link <i>admin</i> logo a seguir. A estrutura do projeto Django fica dessa forma:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-RYCqaQXmT4M/UtG6yQMVKNI/AAAAAAAABuI/5QNVYfFRYL8/s1600/Screenshot+from+2014-01-11+19:42:04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-RYCqaQXmT4M/UtG6yQMVKNI/AAAAAAAABuI/5QNVYfFRYL8/s1600/Screenshot+from+2014-01-11+19:42:04.png" height="400" width="307" /></a></div>
<br />
<h3>
CRUD sem esforço: A interface administrativa do Django</h3>
<div>
Uma das coisas que gostei do Django é justamente porque ele facilita muito a geração de telas de cadastro, mais conhecidas como CRUD (Create-Retrieve-Update-Delete), tornando assim mais rápido o desenvolvimento de telas que realmente importam para o sistema. Sem contar que ele já fornece autenticação de usuários na criação da aplicação.</div>
<div>
Para isso o Django possui o Django Admin Site, que é uma série de pacotes que permite criar essas telas sem muito esforço de código. Basta algumas linhas e logo é possível fazer o CRUD das suas entidades. Como o Django Admin Site já está acessível assim que você cria a aplicação no OpenShift, já é possível acessá-la. </div>
<div>
Mas espera! Falta a senha do admin e sem ela não dá pra acessar. Para pegar a senha, é simples: basta acessar a aplicação via SSH e procurar pelo arquivo <i>app-root/runtime/data/CREDENTIALS</i> e lá estará os dados de usuário e senha para acessar o Django Admin Site:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-x89wffyhTzQ/UtG4xyqjfBI/AAAAAAAABt0/a8LlKSCfAxA/s1600/Screenshot+from+2014-01-11+15:57:17.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-x89wffyhTzQ/UtG4xyqjfBI/AAAAAAAABt0/a8LlKSCfAxA/s1600/Screenshot+from+2014-01-11+15:57:17.png" height="250" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Capturando a senha gerada pelo OpenShift</td></tr>
</tbody></table>
Para habilitar o Django Admin Site para procurar pela classe de modelo que iremos adicionar, abra o arqivo <i>wsgi/openshift/settings.py</i> e adicione na seção INSTALLED_APPS o conteúdo abaixo que está em negrito:<br />
<blockquote class="tr_bq">
INSTALLED_APPS = (<br />
'django.contrib.auth',<br />
'django.contrib.contenttypes',<br />
'django.contrib.sessions',<br />
'django.contrib.sites',<br />
'django.contrib.messages',<br />
'django.contrib.staticfiles',<br />
# Uncomment the next line to enable the admin:<br />
'django.contrib.admin',<br />
# Uncomment the next line to enable admin documentation:<br />
# 'django.contrib.admindocs',<br />
<b> 'openshift',</b>)</blockquote>
Depois, abra (ou crie se não existir) o arquivo <i>wsgi/openshift/models.py</i> e adicione o seguinte conteúdo:<br />
<blockquote class="tr_bq">
from django.db import models<br />
class Pessoa(models.Model):<br />
nome = models.CharField(max_length=40)<br />
idade = models.IntegerField()</blockquote>
Por fim, abra (ou crie se não existir) o arquivo <i>wsgi/openshift/admin.py</i> e adicione o seguinte conteúdo:<br />
<blockquote class="tr_bq">
from django.contrib import admin<br />
from openshift.models import *<br />
admin.site.register(Pessoa)</blockquote>
<div>
Depois disso, é só enviar o código para o OpenShift:</div>
<blockquote class="tr_bq">
$ git add . --all<br />
$ git commit -m "Adicionando o Django Admin Site"<br />
$ git push</blockquote>
<div class="separator" style="clear: both; text-align: left;">
Com isso, eu habilitei o Django Admin Site e criei um primeiro cadastro de Pessoas (conforme código em models.py). Após isso, acesse o Django Admin Site e você verá que apareceu uma seção openshift e um link para o cadastro de Pessoas:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-qH5z2dh_pno/UtHFAdRZ_cI/AAAAAAAABug/Ly3vWl2n3Us/s1600/Screenshot+from+2014-01-11+20:24:51.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-qH5z2dh_pno/UtHFAdRZ_cI/AAAAAAAABug/Ly3vWl2n3Us/s1600/Screenshot+from+2014-01-11+20:24:51.png" height="242" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Django Admin Site com o cadastro de Pessoas</td></tr>
</tbody></table>
<div>
Agora é só fazer o cadastro de pessoas como preferir. =D</div>
<h3>
E se eu quiser expor minha aplicação com REST?</h3>
<div>
Como eu estou criando uma aplicação com diversas formas de acesso (Web, Mobile e Desktop), eu precisava expor meus modelos de forma que pudesse ser acessados para manipular meus cadastros. Procurei pela Internet (Google, pra ser mais específico) e encontrei um Framework muito bacana chamado <i>Django REST Framework</i>, que já faz o trabalho de capturar todos os modelos criados para o Django Admin Site e expor operações de CRUD via REST. Para adicionar em sua aplicação Django no OpenShift, basta executar os comandos abaixo:</div>
<blockquote class="tr_bq">
$ rhc ssh djangoapp<br />
> pip install djangorestframework</blockquote>
Depois disso, iremos adicionar mais alguns códigos para expor nossa classe Pessoa para operações de CRUD. Abra o arquivo <i>wsgi/openshift/settings.py</i> e adicione o conteúdo em negrito:<br />
<blockquote class="tr_bq">
INSTALLED_APPS = (<br />
'django.contrib.auth',<br />
'django.contrib.contenttypes',<br />
'django.contrib.sessions',<br />
'django.contrib.sites',<br />
'django.contrib.messages',<br />
'django.contrib.staticfiles',<br />
# Uncomment the next line to enable the admin:<br />
'django.contrib.admin',<br />
# Uncomment the next line to enable admin documentation:<br />
# 'django.contrib.admindocs',<br />
<b> </b>'openshift',<br />
<b> 'rest_framework',</b>) </blockquote>
Depois, abra ou crie o arquivo <i>wsgi/openshift/serializers.py</i> e adicione o seguinte conteúdo:<br />
<br />
<blockquote class="tr_bq">
from openshift import models<br />
from rest_framework import serializers<br />
class PessoaSerializer(serializers.HyperlinkedModelSerializer):<br />
class Meta:<br />
model = models.Pessoa<br />
fields = ('nome', 'idade')</blockquote>
<div>
Esse código simplesmente define que a classe Pessoa será exposta via REST e quais são os campos que podem ser visualizados via REST. Abra o arquivo <i>wsgi/openshift/views.py</i> e adicione o seguinte conteúdo em negrito:</div>
<div>
<br /></div>
<div>
<blockquote class="tr_bq">
import os<br />
from django.shortcuts import render_to_response<br />
<b>from openshift import models</b><b>from rest_framework import viewsets</b><b>from openshift import serializers</b><br />
def home(request):<br />
return render_to_response('home/home.html')<br />
<b>class PessoaViewSet(viewsets.ModelViewSet):</b><b> queryset = models.Pessoa.objects.all()</b><b> serializer_class = serializers.PessoaSerializer</b></blockquote>
</div>
<div>
Por fim, abra o arquivo <i>wsgi/openshift/urls.py</i> e adicione o conteúdo em negrito:</div>
<div>
<blockquote class="tr_bq">
from django.conf.urls.defaults import patterns, include, url<br />
<b>from rest_framework import routers</b><b>from openshift import views</b><br />
<b>router = routers.DefaultRouter()</b><b>router.register(r'pessoa', views.PessoaViewSet)</b><br />
# Uncomment the next two lines to enable the admin:<br />
from django.contrib import admin<br />
admin.autodiscover()<br />
urlpatterns = patterns('',<br />
# Examples:<br />
<b>url(r'^rest/', include(router.urls)),</b> url(r'^$', 'openshift.views.home', name='home'),<br />
# url(r'^openshift/', include('openshift.foo.urls')),<br />
# Uncomment the admin/doc line below to enable admin documentation:<br />
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),<br />
# Uncomment the next line to enable the admin:<br />
url(r'^admin/', include(admin.site.urls)),<br />
)</blockquote>
</div>
<div>
<div>
E depois é só enviar o código para o OpenShift:</div>
<blockquote class="tr_bq">
$ git add . --all<br />
$ git commit -m "Adicionando REST ao djangoapp"<br />
$ git push</blockquote>
</div>
<div>
Pronto! Agora é só acessar a página <a href="http://djangoapp-rmartinelli.rhcloud.com/rest/pessoa/">http://djangoapp-rmartinelli.rhcloud.com/rest/pessoa/</a> e o Django REST Framework listará todas as pessoas cadastradas. Caso queira fazer um teste, experimente criar um código simples que acesse essa URL REST e veja se você recebe os dados. O formato da resposta é o JSON, então é possível facilmente fazer um parse e listar em uma página HTML.</div>
<div>
<h3>
</h3>
<h3>
Referências</h3>
<div>
<a href="http://www.djangobook.com/">http://www.djangobook.com</a><br />
<a href="http://www.django-rest-framework.org/">http://www.django-rest-framework.org/</a><br />
<br />
<h3>
Conclusão</h3>
</div>
</div>
<div>
Por ora, essa parte é apenas para esquentar para que nos próximos posts eu possa falar de como criar aplicações Web, Mobile e Desktop para consumir essa API REST e assim poder demonstrar outras tecnologias/linguagens/plataformas que o OpenShift pode utilizar.</div>
Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com0tag:blogger.com,1999:blog-3438555562642680163.post-66929838535127980132013-10-15T18:55:00.002-03:002013-10-15T18:55:12.860-03:00Openshift origin: sua nuvem privadaComo 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:<br />
<div>
<br />
<a href="https://www.openshift.com/developer-spotlight">https://www.openshift.com/developer-spotlight</a></div>
<div>
<br /></div>
<div>
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 (<a href="http://www.getupcloud.com/">http://www.getupcloud.com</a>). 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:</div>
<div>
<ul>
<li>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)</li>
<li>O suporte é em Português (assim como no OpenShift Online, porém o plano pago do OpenShift ainda será lançado)</li>
<li>Acompanha todas as atualizações do OpenShift</li>
</ul>
<div>
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.</div>
<div>
Tentarei nas próximas seções explicar as formas de como ter um ambiente OpenShift rodando em seu ambiente particular. <i>Nota: </i>Caso queira conhecer um pouco sobre a arquitetura interna do Openshift, basta ler essa página: <a href="http://aprendendo-cloud-computing.blogspot.com.br/p/aqruitetura-do-openshift.html">http://aprendendo-cloud-computing.blogspot.com.br/p/aqruitetura-do-openshift.html</a></div>
<h3>
Antes, um aviso...</h3>
<div>
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 <i>OpenShift Online</i> que é o serviço de hospedagem da comunidade acessível pelo endereço <a href="http://openshift.com/">http://openshift.com</a> e também com uma conta paga você terá acesso a mais recursos computacionais, o <i>OpenShift Origin</i> é o projeto Open Source da Red Hat e por fim temos o produto da Red Hat para empresas que é o <i>OpenShift Enterprise</i>. Abaixo você pode observar melhor a relação entre esses projetos:</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://www.openshift.com/sites/default/files/triangle_0.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="375" src="https://www.openshift.com/sites/default/files/triangle_0.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Projetos OpenShift</td></tr>
</tbody></table>
<h3>
Configurando o ambiente OpenShift</h3>
<div>
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.<br />
Para isso, siga o Deployment Guide na página do OpenShift: <a href="http://openshift.github.io/documentation/oo_deployment_guide_comprehensive.html">http://openshift.github.io/documentation/oo_deployment_guide_comprehensive.html</a></div>
<h3>
Automatizando a configuração com Puppet</h3>
<div>
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: <a href="http://openshift.github.io/documentation/oo_deployment_guide_puppet.html">http://openshift.github.io/documentation/oo_deployment_guide_puppet.html</a><br />
Abaixo uma classe Puppet para provisionamento do OpenShift all-in-one:<br />
<blockquote class="tr_bq">
<pre style="background-color: #eeeeee; border-width: 0px; box-sizing: border-box; direction: ltr; font-family: source_code_pro, monospace, serif; font-size: 16px; line-height: 1.4; overflow-x: auto; padding: 0.8em 0.8em 0.6em; white-space: pre-wrap; word-wrap: break-word;"> class { 'openshift_origin' :
#The DNS resolvable hostname of this host
node_fqdn => "broker.example.com",
#The domain under which application should be created. Eg: <app>-<namespace>.example.com
cloud_domain => 'example.com',
#Upstream DNS server.
dns_servers => ['8.8.8.8'],
enable_network_services => true,
configure_firewall => true,
configure_ntp => true,
#Configure the required services
configure_activemq => true,
configure_mongodb => true,
configure_named => true,
configure_avahi => false,
configure_broker => true,
configure_node => true,
#Enable development mode for more verbose logs
development_mode => true,
#Update the nameserver on this host to point at Bind server
update_network_dns_servers => true,
#Use the nsupdate broker plugin to register application
broker_dns_plugin => 'nsupdate',
#If installing from a local build, specify the path for Origin RPMs
#install_repo => 'file:///root/origin-rpms',
#If using BIND, let the broker know what TSIG key to use
named_tsig_priv_key => '<tsig key>',
#If using an external ethernet device other than eth0
#eth_device => '<ethernet device name, eg: enp0s5>',
#If using with GDM, or have users with UID 500 or greater, add to this list
#os_unmanaged_users => ['gdm'],
#If using the stable version instead of the nightly
#install_repo => 'release',
#dependencies_repo => 'release',
}</pre>
</blockquote>
</div>
<h3>
Download das Máquinas Virtuais (o famoso Lazy Mode)</h3>
</div>
<div>
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.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-VxLxvwVEgqM/Ul24lpLcbOI/AAAAAAAABpQ/-KyX54-POBo/s1600/download.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="353" src="http://3.bp.blogspot.com/-VxLxvwVEgqM/Ul24lpLcbOI/AAAAAAAABpQ/-KyX54-POBo/s400/download.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela de início da Máquina Virtual OpenShift</td></tr>
</tbody></table>
Você pode encontrar mais informações no Virtual Machine Deployment Guide: <a href="http://openshift.github.io/documentation/oo_deployment_guide_vm.html">http://openshift.github.io/documentation/oo_deployment_guide_vm.html</a><br />
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.</div>
Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com1tag:blogger.com,1999:blog-3438555562642680163.post-33267365373953334512013-06-26T15:37:00.001-03:002013-06-26T15:37:30.270-03:00NoSQL e Hibernate - Será que vai dar samba?NoSQL é a nova hype do momento, e todos estão aprendendo um pouco mais sobre novas formas de armazenamento. O termo foi introduzido por funcionários da Rackspace que queriam organizar um evento para discutir Bancos de Dados distribuídos. A idéia era discutir sobre Bancos de Dados que não se preocupam pelo ACID(Atomicidade, Consistência, Isolamento e Durabilidade).<br />
Neste post, irei mostrar um pouco sobre adotar um banco de dados nosql em sua aplicação OpenShift utilizando java e um projeto recente da família Hibernate: o Hibernate OGM.<br />
<br />
<h3>
OpenShift e NoSQL</h3>
<div>
Desde o lançamento do OpenShift ele oferece três Bancos de Dados como repositório de dados para suas aplicações. Dentre eles, há 1 Banco de Dados NoSQL: O <a href="http://www.mongodb.org/">MongoDB</a>.</div>
<div>
O MongoDB é um Banco de Dados NoSQL que utiliza o conceito de armazenamento baseado em documentos, ou seja, ele guarda as informações em coleções e expressando o dado em um formato JSON, ou como o próprio site do MongoDB diz: um armazenamento orientado a documentos.<br />
<br />
<h3>
Rockmongo</h3>
</div>
<div>
Assim como o MySQL e o PostgresSQL possuem interfaces de gerenciamento na web (o phpMyAdmin, por exemplo), o MongoDB também possui uma interface de gerenciamento: o Rockmongo.<br />
<br /></div>
<h3>
Hibernate OGM</h3>
O Hibernate OGM (Object Grid Mapping) é um subprojeto do Hibernate que permite utilizar os mesmos conceitos do ORM(Object Relational Mapping) em Bancos de Dados NoSQL. Assim podemos mapear objetos e persisti-los no Banco de Dados sem precisar conhecer as formas de inserir esses dados.<br />
<br />
<h3>
Como fazer deploy de uma aplicação Hibernate OGM no OpenShift?</h3>
<div>
Para dar início, vamos criar uma aplicação Java no OpenShift e adicionar os cartridges MongoDB e Rockmongo:</div>
<blockquote class="tr_bq">
$ rhc app create -t jbossas-7 -a nosql</blockquote>
<blockquote class="tr_bq">
$ rhc app add-cartridge mongodb-2.2</blockquote>
<blockquote class="tr_bq">
$ rhc app add-cartridge rockmongo-1.1</blockquote>
Para esse post, eu utilizei o repositório do Github do próprio OpenShift com o projeto kitchensink (um pequeno CRUD muito utilizado para criar quickstarts para o JBoss) adaptado para utilizar o Hibernate OGM. Você pode encontrar o projeto em:<br />
<br />
<a href="https://github.com/openshift/openshift-ogm-quickstart">https://github.com/openshift/openshift-ogm-quickstart</a><br />
<br />
Agora, iremos adicionar a URL do repositório Github em nosso projeto OpenShift:<br />
<br />
<blockquote class="tr_bq">
$ cd nosql<br />$ git remote add upstream -m master git://github.com/openshift/openshift-ogm-quickstart.git<br />$ git pull -s recursive -X theirs upstream master<br />$ git push</blockquote>
Agora, basta acessar o endereço: http://nosql-${namespace}.rhcloud.com e ver a aplicação rodando:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-eyJvFUDP1rw/Ucsx5ooWSkI/AAAAAAAABb8/koFWOpk4JfE/s1600/Screenshot+from+2013-06-26+15:21:34.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="242" src="http://4.bp.blogspot.com/-eyJvFUDP1rw/Ucsx5ooWSkI/AAAAAAAABb8/koFWOpk4JfE/s400/Screenshot+from+2013-06-26+15:21:34.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Aplicação NoSQL com Hibernate OGM e MongoDB</td></tr>
</tbody></table>
Como instalamos também o Rockmongo, você pode acessar utilizando o endereço http://nosql-${namespace}.rhcloud.com/rockmongo:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-nyb7pk47EVo/UcsyU7I39WI/AAAAAAAABcE/uhtPYD00_G0/s1600/Screenshot+from+2013-06-26+15:23:56.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="242" src="http://4.bp.blogspot.com/-nyb7pk47EVo/UcsyU7I39WI/AAAAAAAABcE/uhtPYD00_G0/s400/Screenshot+from+2013-06-26+15:23:56.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Aplicação Rockmongo</td></tr>
</tbody></table>
<blockquote class="tr_bq">
</blockquote>
<h3>
Considerações</h3>
<div>
<ul>
<li>Apesar de utilizar Hibernate EntityManager e com isso poder fazer uso de JPA, infelizmente ele não escaneia automaticamente pelas classes marcadas com @Entity. Você terá que referenciá-las no arquivo persistence.xml, senão não irá funcionar.</li>
<li>O projeto utilizado também faz uso de Hibernate Search para busca de dados, o que possibilita utilizar Full-Text Search em suas aplicações</li>
<li>Caso tenha feito o deploy do projeto mas não tenha encontrado as coleções da aplicação no Rockmongo, não se preocupe. O MongoDB (ou o Hibernate OGM, não entendi o processo nesse caso) só cria a coleção quando o primeiro registro é persistido.</li>
</ul>
<div>
Bom pessoal, é isso. Eu tive um bocado de trabalho para fazer o build por conta dessas considerações e também por conta da build Maven. Quem precisar de ajuda, posta um comentário que eu procuro ajudar o mais rápido possível.</div>
</div>
<br />Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com0tag:blogger.com,1999:blog-3438555562642680163.post-73818011164634416302013-06-18T13:23:00.000-03:002013-06-18T13:23:08.035-03:00Treinamento de MongoDBA 10gen (empresa ligada ao MongoDB, um banco de dados NoSQL), em parceria com a EdX, criou uma série de treinamentos ao estilo MOOC (Massive Online Open Course).<br />
Trata-se de treinamentos para quem quiser conhecer mais sobre o MongoDB e como utilizá-lo. Uma grande notícia é que eles estão criando cursos tanto para quem é desenvolvedor quanto para quem é DBA. Atualmente eles possuem 3 treinamentos:<br />
<br />
<ul>
<li>MongoDB For Java Developers</li>
<li>MongoDB For Developers (Esse utilizando Python como linguagem)</li>
<li>MongoDB For DBAs</li>
</ul>
<br />
Somente os dois primeiros treinamentos estão em curso no momento, mas logo eles irão disponibilizar mais treinamentos. Para quem quiser conferir, basta criar um conta no site:<br />
<br />
<a href="https://education.10gen.com/">https://education.10gen.com/</a><br />
<br />
E depois aplicar nos treinamentos já em andamento. Irei explorar um pouco sobre MongoDB num próximo post utilizando o novo módulo do Hibernate: O Hibernate OGM. Aguardem!Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com0tag:blogger.com,1999:blog-3438555562642680163.post-72888619319873349272013-06-17T12:04:00.001-03:002013-06-17T12:04:44.083-03:00Novidades do OpenShift OnlineNesta semana está sendo realizado em Boston o <a href="http://www.redhat.com/summit/">Red Hat Summit</a>, o maior evento que a Red Hat promove sobre suas tecnologias e sobre Open Source. Como em qualquer evento que uma grande empresa promove, sempre há lançamentos na véspera ou no período em que o evento ocorre, portanto eu quero apresentar algumas das novidades que foram apresentadas até agora para o OpenShift.<br />
<br />
<h3>
Downloadable Cartridges e outras tecnologias disponíveis</h3>
<div>
Uma das maiores funcionalidades para mim é a liberdade de utilizar linguagens e tecnologias no OpenShift. Java, Python, Perl, PHP e outras linguagens podem ser utilizadas e ainda por cima pode-se utilizar o famoso cartridge faça-você-mesmo(DIY, ou Do-It-Yourself). Além de linguagens, há também as tecnologias de backend (MySQL, PostgreSQL e MongoDB) e Jenkins.</div>
<div>
Na nova versão do OpenShift (atualizado recentemente), você tem agora mais liberdade de escolha porém sobre qualquer tecnologia e linguagem. Isso se deve ao novo conceito chamado de Downloadable Cartridges, onde você pode apontar para o repositório git desse cartridge e o OpenShift irá baixar o código, preparar o ambiente e já apresentar um Hello World clássico daquela linguagem.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-YnA9-nwQzpo/UboRq8a96yI/AAAAAAAABbU/jWtCrAkk-k0/s1600/Screenshot+from+2013-06-13+15:38:19.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="250" src="http://3.bp.blogspot.com/-YnA9-nwQzpo/UboRq8a96yI/AAAAAAAABbU/jWtCrAkk-k0/s400/Screenshot+from+2013-06-13+15:38:19.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td class="tr-caption" style="font-size: 13px;">Uma aplicação Ceylon de exemplo rodando no OpenShift</td></tr>
</tbody></table>
</td></tr>
</tbody></table>
<div>
Abaixo uma listagem das novas linguagens/tecnologias disponíveis:</div>
<ul>
<li><a href="https://github.com/smarterclayton/openshift-cdk-cart">Cartridge Development Kit</a> (explicarei mais sobre esse na próxima seção)</li>
<li><a href="http://github.com/bdecoste/openshift-origin-cartridge-activemq">ActiveMQ</a></li>
<li><a href="http://github.com/bdecoste/openshift-origin-cartridge-infinispan">Infinispan</a></li>
<li><a href="http://github.com/bdecoste/openshift-origin-cartridge-torquebox">TorqueBox</a> (Ruby com um toque de Java EE)</li>
<li><a href="https://github.com/wshearn/openshift-origin-cartridge-nodejs">node.js 0.10</a></li>
<li><a href="https://github.com/smarterclayton/openshift-go-cart">Go web framework</a></li>
<li><a href="https://github.com/matejonnet/openshift-cartridge-ceylon">Ceylon web framework</a></li>
<li><a href="https://github.com/smarterclayton/openshift-redis-cart">Redis database</a></li>
<li><a href="https://github.com/ncdc/openshift-binary-deployment-cartridge">Binary deployment cartridge</a></li>
</ul>
<br /><h3>
API de criação de cartridges simplificada</h3>
<div>
Antes era possível ter acesso a API de criação de cartridges para assim a comunidade poder adicionar suas próprias tecnologias, porém infelizmente só era possível utilizar quem utilizava a versão da comunidade (OpenShfit Origin, falarei sobre ele em outro post). Além disso, a API era muito complexa e levava muito tempo para poder adicionar novas tecnologias.<br />
Recentemente, a equipe do OpenShift lançou a segunda versão da API que facilitou bastante a criação de cartridges para o OpenShift, e também pode ser utilizado com o OpenShift Online com a nova funcionalidade de Downlodable Cartridges (ver seção anterior)<br />
Você pode conferir mais informações no blog do OpenShift sobre como criar um cartridge no OpenShift:<br />
<br /></div>
<div>
<a href="https://www.openshift.com/blogs/introducing-the-openshift-cartridge-api-version-2">https://www.openshift.com/blogs/introducing-the-openshift-cartridge-api-version-2</a><br />
<br />
Caso alguém queira fazer um projeto de cartridge, tenho algumas sugestões e iniciei o desenvolvimento deles. A quem interessar, me mandem mensagens que eu passo maiores informações.<br />
<br /></div>
<h3>
Silver Plan</h3>
<div>
We are open for business! Agora o OpenShift Online possui um plano pago para quem quiser ter um apoio do suporte da Red Hat e dispor de mais gears (unidade do OpenShift que limita memória e storage) para suas aplicações. A versão gratuita ainda está disponível e todos aqueles que ainda não possuem ainda podem criar suas contas gratuitas, ou ainda fazer um upgrade. Startups podem criar uma conta gratuita, avaliar a ferramenta e o ambiente e quando quiserem (ou perceberem que já precisam de mais recursos) podem fazer o upgrade.<br />
Para quem quiser saber mais sobre o Silver Plan, pode verificar na página do OpenShift:<br />
<br />
<a href="https://www.openshift.com/products/pricing">https://www.openshift.com/products/pricing</a><br />
<br />
Infelizmente, o Silver Plan é restrito a EUA/Canadá mas fiquem atento às novidades. A equipe de desenvolvimento já está trabalhando para um plano no Brasil. \o/</div>
<div>
<br /></div>
<h3>
Templates para criação do ambiente OpenShift Origin em Openstack</h3>
<div>
Para quem conhece o OpenShift sabe que ele é uma solução conhecida como PaaS (Platform-as-a-Service), mas há soluções Open Source no mercado que permite criar um IaaS (Infrastructure-as-a-Service) e assim criar um ambiente local de OpenShift dentro dele.<br />
Uma dessas soluções é o Openstack, que é uma comunidade com um monte de empresas com o propósito de criar uma solução para IaaS. E para quem quiser instalar o OpenShift Origin (versão do OpenShift Online da comunidade), pode utilizar os scripts automatizados para provisionamento do ambiente OpenShift de forma automatizada. Você pode conferir em:<br />
<br /></div>
<div>
<a href="https://github.com/openstack/heat-templates/tree/master/openshift-origin">https://github.com/openstack/heat-templates/tree/master/openshift-origin</a><br />
<br />
Bom, por hora são essas as novidades. Eu particularmente achei muit boa as novidades, principalmente os Downloadable Cartridges. E vocês, o que acharam?</div>
Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com0tag:blogger.com,1999:blog-3438555562642680163.post-12992527806969919702013-04-20T13:33:00.001-03:002013-04-20T13:33:19.763-03:00O canivete suíço do desenvolvedor: ferramentas de diagnóstico para aplicações Java EESaudações a todos,<br />
<br />
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.<br />
<br />
Para os que compareceram à minha palestra, segue abaixo a apresentação:<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="470px" marginheight="0" marginwidth="0" mozallowfullscreen="" scrolling="no" src="http://www.slideshare.net/rimolive/slideshelf" style="border: none;" webkitallowfullscreen="" width="615px"></iframe>Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com1tag:blogger.com,1999:blog-3438555562642680163.post-28126488974802137332013-04-18T19:51:00.000-03:002013-04-18T19:51:25.534-03:00JUDCon Brasil 2013 - Não PercamAmanhã 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/<br />
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 (<a href="http://www.jboss.org/events/JUDCon/2013/brazil/speakers#stevencitronpousty1">Steven Citron-Pousty</a> e <a href="http://www.jboss.org/events/JUDCon/2013/brazil/speakers#shekhargulati1">Shekhar Gulati</a>) e até um desenvolvedor brazuca (<a href="http://www.jboss.org/events/JUDCon/2013/brazil/speakers#fabianofranz1">Fabiano Franz</a>) apresentando.<br />
Para quem quiser ir, ainda dá tempo. Acesse <a href="http://www.jboss.org/events/JUDCon/2013/brazil">http://www.jboss.org/events/JUDCon/2013/brazil</a> e veja o local e agenda do evento. Espero ver todos por lá.Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com1tag:blogger.com,1999:blog-3438555562642680163.post-82360845503486689232013-04-18T19:44:00.000-03:002013-04-18T19:44:00.121-03:00Ferramentas de DevOps em Openshift<h3>
Introdução</h3>
<div>
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.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://upload.wikimedia.org/wikipedia/commons/b/b5/Devops.svg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="304" src="http://upload.wikimedia.org/wikipedia/commons/b/b5/Devops.svg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Um gráfico que exemplifica o papel de DevOps em um processo de software (Fonte: wikipedia)</td></tr>
</tbody></table>
<div>
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.</div>
<div>
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.</div>
<div>
<br /></div>
<h3>
Gerenciamento de projetos com Redmine</h3>
<div>
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.</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/--470Zjct0j4/UUUjTzriCEI/AAAAAAAABYk/oIK2JasMGlc/s1600/Screenshot+from+2013-03-16+22:14:57.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="242" src="http://3.bp.blogspot.com/--470Zjct0j4/UUUjTzriCEI/AAAAAAAABYk/oIK2JasMGlc/s400/Screenshot+from+2013-03-16+22:14:57.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gráfico Gantt gerado pelo Redmine</td></tr>
</tbody></table>
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.<br />
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).<br />
<br /></div>
<h3>
Integração Contínua com Jenkins</h3>
<div>
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.</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-KoOzOB1dWJE/UUUl3FFIfhI/AAAAAAAABYs/8_vVd2yWGpE/s1600/Screenshot+from+2013-03-16+23:09:05.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="250" src="http://4.bp.blogspot.com/-KoOzOB1dWJE/UUUl3FFIfhI/AAAAAAAABYs/8_vVd2yWGpE/s400/Screenshot+from+2013-03-16+23:09:05.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela do jenkins e os detalhes de uma tarefa automatizada</td></tr>
</tbody></table>
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.<br />
<br /></div>
<h3>
Qualidade de código com Sonar</h3>
<div>
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.</div>
<div>
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.</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-E41TFhh33Sk/UUUmCQxTJTI/AAAAAAAABY0/7GiDNvx3QLc/s1600/Screenshot+from+2013-03-16+23:09:50.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="250" src="http://2.bp.blogspot.com/-E41TFhh33Sk/UUUmCQxTJTI/AAAAAAAABY0/7GiDNvx3QLc/s400/Screenshot+from+2013-03-16+23:09:50.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela do sonar com um exemplo de análise de um projeto</td></tr>
</tbody></table>
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:<br />
<blockquote class="tr_bq">
$ mvn sonar:sonar</blockquote>
</div>
<div>
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:<br />
<blockquote class="tr_bq">
$ rhc port-forward -a <aplicacao_sonar></blockquote>
<br /></div>
<h3>
Monitoramento de aplicações com Openshift Metrics</h3>
<div>
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:</div>
<blockquote class="tr_bq">
$ rhc cartridge add metrics-0.1 -a <nome-aplicacao></blockquote>
<div>
Após a conclusão do comando, você pode acessar o Metrics através da URL:</div>
<blockquote class="tr_bq">
http://<aplicacao>-<dominio>.rhcloud.com/metrics/</blockquote>
<div>
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-qLAEXn00BYQ/UUUmGb5NNfI/AAAAAAAABY8/N2vkgOznF-c/s1600/Screenshot+from+2013-03-16+23:10:02.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="250" src="http://3.bp.blogspot.com/-qLAEXn00BYQ/UUUmGb5NNfI/AAAAAAAABY8/N2vkgOznF-c/s400/Screenshot+from+2013-03-16+23:10:02.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">OpenShift metrics</td></tr>
</tbody></table>
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.</div>
<div>
<br /></div>
<h3>
Conclusão</h3>
<div>
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 <a href="http://www.github.com/openshift">github</a> 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.</div>
Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com0tag:blogger.com,1999:blog-3438555562642680163.post-125653267145099552013-03-15T19:43:00.002-03:002013-03-15T19:43:44.604-03:00Gerenciando suas aplicações no cloud com as ferramentas de clienteNeste post, irei mostrar a ferramenta <i>rhc</i>, que permite gerenciar em linha de comando todas as aplicações, seu domínio e outras informações referentes à sua conta OpenShift. No primeiro post, eu mostrei muito por cima como criar uma primeira aplicação usando a IDE Eclipse utilizando o Plugin <i>JBoss Tools. </i>Tentarei aqui ser o mais neutro possível a respeito de plataformas então eu vou explicar como instalar a ferramenta no Linux, Mac OS e Windows.<br />
<br />
<h3>
Instalando a ferramenta no Linux</h3>
<div>
Para poder utilizar a ferramenta no Linux, é preciso instalar os seguintes pacotes:</div>
<div>
<ul>
<li>rubygems</li>
<li>git</li>
</ul>
<div>
Como podem ver, a ferramenta foi escrita em Ruby e por isso apesar de mencionar a instalação de apenas dois pacotes eles trarão dependências adicionais para poder fazer os pacotes principais funcionarem.</div>
</div>
<div>
Após a instalação com sucesso dos pacotes, basta executar o seguinte comando para instalar o rhc:</div>
<div>
<blockquote class="tr_bq">
$ sudo gem install rhc</blockquote>
</div>
<h3>
Instalando a ferramenta no Mac</h3>
<div>
Para instalar a ferramenta no Mac, é preciso ter os seguintes pré-requisitos:</div>
<div>
<ul>
<li>Acesso a root</li>
<li><a href="http://developer.apple.com/xcode">Suite XCode completa</a> ou <a href="http://code.google.com/p/git-osx-installer/">git for OS X</a></li>
</ul>
<div>
Após a instalação, basta executar o comando:</div>
</div>
<div>
<blockquote class="tr_bq">
$ sudo gem install rhc</blockquote>
</div>
<h3>
Instalando a ferramenta no Windows</h3>
<div>
Para instalar a ferramenta no Windows, é preciso ter os seguintes pré-requisitos:</div>
<div>
<ul>
<li>Instalar o <a href="http://rubyinstaller.org/">Ruby 1.9 for Windows</a> (Lembre-se de marca a opção "Add Ruby executables to your PATH")</li>
<li>Instalar o <a href="http://msysgit.github.com/">Git for Windows</a> (Marque a opção "Run Git from the Windows Command Prompt")</li>
</ul>
<div>
Feito isso, basta executar o comando:</div>
</div>
<div>
<blockquote class="tr_bq">
C:\> gem install rhc</blockquote>
</div>
<h3>
Configuração inicial da ferramenta</h3>
<div>
O primeiro comando que iremos aprender é o comando:<br />
<blockquote class="tr_bq">
$ rhc setup</blockquote>
Nele, você irá fazer as configurações iniciais da ferramenta, como gerar as chaves de segurança SSH para o login da ferramenta(muito importante para poder conectar ao repositório git das aplicações), a criação de um nome de domínio(com ele, todas as aplicações criadas pela sua conta levarão esse nome único para identificar aplicações criadas por você), e verificar alguma pendência de configuração exigida pelo OpenShift.<br />
Após o procedimento de setup, ele irá gerar os seguintes arquivos:<br />
<blockquote class="tr_bq">
<user_dir>/.openshift/express.conf<br />
<user_dir>/.ssh</blockquote>
O primeiro é uma configuração bem básica do Openshift (inicialmente um usuário padrão ao usar o comando rhc, que pode usar outro usuário adicionando a opção -l no comando, e o endereço do servidor Openshift) e o outro é o repositório de chaves SSH para comunicação com os serviços Openshift. Sem isso, você não conseguirá fazer um git clone do repositório.<br />
<h3>
Criando a aplicação</h3>
<div>
Depois de preparado o ambiente, estamos prontos para a criação da aplicação. O comando para criar é:</div>
<blockquote class="tr_bq">
$ rhc app create -a <nome_da_aplicacao> -t <tipo_aplicacao></blockquote>
Onde o <tipo_aplicacao> pode ser:<br />
<br />
<ul>
<li> dyi-0.1</li>
<li>jbossas-7</li>
<li>jbosseap-6.0</li>
<li>jenkins-1.4</li>
<li>nodejs-0.6</li>
<li>perl-5.10</li>
<li>php-5.3</li>
<li>python-2.6</li>
<li>python-2.7</li>
<li>python-3.3</li>
<li>ruby-1.8</li>
<li>ruby-1.9</li>
<li>jbossews-1.0 (basicamente um Tomcat 6)</li>
<li>jbossews-2.0 (basicamente um Tomcat 7)</li>
<li>zend-5.6</li>
</ul>
<div>
Como podem ver na lista, a variedade de linguagens/servidores para desenvolvimento no Openshift tem crescido cada vez mais. E ainda podemos criar nosso próprio com o Do-It-Yourself Cartridge (farei um post explicando sobre isso). Essa tarefa irá criar um processo automático que no final irá gerar um endereço do repositório git e também a URL da sua aplicação no formato http://<nome_da_aplicacao>-<nome_do_dominio>.rhcloud.com</div>
<br />
<h3>
Snapshots da aplicação</h3>
<div>
Caso você queira criar backups de sua aplicação para posteriormente voltar às versões anteriores, o Openshift permite que você crie snapshots da sua aplicação e restaurá-los quando quiser. Em outras palavras, o snapshot é arquivo compactado que contém tudo que sua aplicação precisa para ser recuperada em uma outra gear do Openshift, tais como as variáveis de ambiente, o repositório git, os binários da aplicação, etc. Para criar um snapshot, basta executar o comando:</div>
<div>
<br /></div>
<div>
$ rhc snapshot save -a <nome_da_aplicacao> -f <nome_do_arquivo><br />
<br />
Assim, caso você queira restaurar a aplicação, execute o comando:<br />
<br /></div>
$ rhc snapshot restore -a <nome_da_aplicacao> -f <nome_do_arquivo><br />
<h3>
Diagnóstico de problemas</h3>
</div>
<div>
Sempre pode ocorrer problemas e que precisam de nossa intervenção para que nossa aplicação possa voltar ao ar ou até mesmo monitorar nossas aplicações para procurar eventuais problemas. Para isso, o rhc possui alguns comando que podem auxiliar o desenvolvedor a encontrar o problema.<br />
O primeiro de todos os comandos irá verificar a saúde da infraestrutura do Openshift:<br />
<br />
$ rhc server<br />
<br />
Nele, é possível verificar se o problema não é generalizado e portanto se há alguma ação que pode ser realmente tomada por conta da sua aplicação. Caso apareça a mensagem "All systems running fine", então estamos à salvo... =D<br />
O segundo comando inspecionará todos os logs da sua aplicação e irá imprimir (sob demanda) as mensagens deles. O comando é:<br />
<br /></div>
<div>
$ rhc tail -a <nome_da_aplicacao><br />
<br />
Por fim, pode ser necessário inspecionar a performance em si da aplicação, assim verificando se a mesma está muito lenta, então pode ser necessário inspecionar as Threads do sistema. O comando para gerar o thread dump (um arquivo que descreve todas as Thread em execução do sistema) é:<br />
<br /></div>
<div>
$ rhc threaddump -a <nome_da_aplicacao></div>
<div>
<br />
Após a execução desse comando ele irá retornar uma mensagem dizendo onde o Thread Dump estará disponível, podendo inspecionar utilizando o comando descrito anteriormente. Para ser mais exato, o próprio rhc irá já enviar o comando completo que deve ser executado para inspecionar o Thread Dump.</div>
<h3>
Conclusão</h3>
<div>
Espero que esse post seja de muita utilidade a todos pois alguns usuários Openshift como eu adoram em algum momento utilizar a linha de comando para criar suas aplicações e até mesmo automatizar alguns processos. Fica aqui uma dica: todos esses comandos do rhc por trás há uma API REST que é consumida pelos comandos (que são nada mais nada menos que código Ruby). Em um post futuro explicarei sobre a API REST.</div>
Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com0tag:blogger.com,1999:blog-3438555562642680163.post-56804689699492257532013-01-03T22:50:00.001-02:002013-01-03T23:05:24.998-02:00Migre suas aplicações Google App Engine para Openshift.Há tempos que quando iniciei meu contato com Cloud Computing, sempre fiquei com o pé atrás ao falar de Google App Engine (GAE). Não que ele seja ruim, que não há escalabilidade ou qualquer coisa desse tipo, mas principalmente porque desenvolver com o GAE implica em utilizar apenas duas linguagens (Java e Python) e às vezes ter que se limitar a usar algumas coisas da própria linguagem suportada por esse PaaS(como o Java) e com isso podendo até não permitindo utilizar alguns de seus frameworks.<br />
Um dos princípios que costumo falar ao adotar soluções PaaS é o de sempre verificar se o seu provedor não utiliza soluções fechadas (o famoso <a href="http://blog.outsystems.com/aboutagility/2011/01/7-things-to-consider-when-choosing-a-cloud-ready-platform.html">Vendor Lock-in</a>) e portanto "prendem" o cliente a ficar em suas soluções sem uma chance de poder migrar as mesmas para um outro provedor. Neste artigo, irei descrever como migrar suas aplicações GAE para o Openshift, e de novo não porque Openshift é melhor e/ou GAE é ruim, mas principalmente por trazer maior liberdade para o cliente final poder avaliar outros provedores.<br />
<h3>
O Google App Engine(GAE)</h3>
O Google App Engine (ou GAE) é um dos pioneiros em se tratando de soluções PaaS(Platform-as-a-Service, ou Plataforma-como-um-serviço). Trata-se de utilizar a infraestrutura dos servidores do Google (a mesma utilizada pelo Google para manter todos os seus serviços no ar) para criar, desenvolver e administrar suas aplicações utilizando como linguagem o Java ou o Python. Não há o que negar sobre a performance dos datacenters do Google e sobre sua capacidade de inovação, o que fez com que o GAE se tornasse um dos principais provedores de soluções de Middleware gratuito para Cloud Computing, e também contém uma interface bem simples para monitorar e administrar suas aplicações.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-yh-oXqIU3Ag/UOR1VyNmZXI/AAAAAAAABWw/erqqcZOnmpQ/s1600/Screenshot+from+2013-01-02+15:53:40.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="290" src="http://2.bp.blogspot.com/-yh-oXqIU3Ag/UOR1VyNmZXI/AAAAAAAABWw/erqqcZOnmpQ/s400/Screenshot+from+2013-01-02+15:53:40.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela inicial do GAE</td></tr>
</tbody></table>
O GAE oferece duas linguagens para desenvolvimento de aplicações, que são o Java e o Python. Em relação ao Python, o desenvolvimento de aplicações é tranquilo e conta com diversos (e bons) tutoriais na Internet para auxiliar no desenvolvimento. Já não consigo ver uma vantagem tão grande assim quando se fala de desenvolver uma aplicação GAE usando Java, já que há uma série de limitações que a Google impõe à linguagem, criando uma espécie de <a href="https://developers.google.com/appengine/docs/java/jrewhitelist">JRE White List</a> que diz quais são as classes que podem ser usadas para o desenvolvimento de aplicações. Isso pode tornar alguns frameworks não funcionarem direito por conta dessas restrições (veja a página <a href="http://code.google.com/p/googleappengine/wiki/WillItPlayInJava">Will it Play</a>) ou até mesmo terem que ser configurados de uma forma que dá um bocado de trabalho.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-5lN5NU-XPLc/UOSc9H-cnFI/AAAAAAAABYQ/BIXTyNa44us/s1600/Screenshot+from+2013-01-02+16:20:12.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="280" src="http://3.bp.blogspot.com/-5lN5NU-XPLc/UOSc9H-cnFI/AAAAAAAABYQ/BIXTyNa44us/s400/Screenshot+from+2013-01-02+16:20:12.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Interface administrativa do GAE</td></tr>
</tbody></table>
O GAE também possui um Datastore próprio baseado no conceito de <a href="http://en.wikipedia.org/wiki/BigTable">BigTable</a> e que é próprio do Google. Assim como toda a tecnologia provida do GAE, esse datastore é base para diversos serviços do Google, o que torna a confiabilidade no mesmo ainda maior. Entretanto, por ser uma tecnologia específica deles não há muito o que fazer se for o caso de migrar uma aplicação GAE para outras plataformas.<br />
Por fim, e dessa vez quis deixar os serviços que eu digo que são os diferenciais do GAE, ele possui um esquema de versões da aplicação que eu acho muito bom. Ele consiste em implantar diversas versões de uma aplicação e com isso poder testar cada versão isoladamente (adicionando como sufixo o número da versão). Após o teste da última versão (ou da versão que deseja publicar), basta selecioná-lo na lista e pedir para publicar, com o mínimo de downtime em sua aplicação. Outro grande diferencial é o dashboard do GAE (ver figure acima), que fornece diversas métricas para monitoramente de administração da sua aplicação.<br />
Novamente, meu objetivo aqui não é dizer que X é melhor que Y nem tirar os méritos de determinadas tecnologias. Quis aqui apenas expressar alguns dos pontos positivos e negativos e também fornecer alternativas para manter a liberdade de escolha de provedores. Com base nessa breve descrição, quis mostrar que uma aplicação GAE roda exclusivamente no ambiente do Google por motivos que forçam o desenvolvedor a utilizar tecnologias fechadas do Google e que portanto pode tornar a migração dessas aplicações inviável. Pensando nisso, eu quis criar este post para apresentar o projeto <i>CapeDwarf. </i>Explicarei na próxima seção no que consiste este projeto e também mostrarei como utilizá-lo.<br />
<h3>
O projeto CapeDwarf</h3>
<div>
O projeto CapeDwarf é um projeto da JBoss que visa criar um ambiente semelhando ao do GAE utilizando todo o ecossistema de middleware da própria JBoss. O criador do projeto, <a href="https://community.jboss.org/people/alesj" style="background-color: white; color: #336699; font-family: 'Lucida Sans Unicode', 'Lucida Grande', sans-serif; font-size: 12px; line-height: 18px; text-decoration: none;">Aleš Justin</a>, descreve o CapeDwarf como "uma implementação do Google App Engine, que permite que aplicações sejam implantados em servidores JBoss AS sem modificação". Mas como assim sem modificação? Está me dizendo que eu posso migrar uma aplicação GAE para o CapeDwarf sem mexer em sequer uma linha de código?<br />
A resposta mais clara para a pergunta acima é: Sim! Você pode migrar aplicações GAE para o CapeDwarf sem alterar 1 LoC (medida da Engenharia de Software que indica Linha de código (ou Line of Code). A idéia é simplesmente criar uma série de subsistemas em cima do servidor de aplicações JBoss para que uma aplicação GAE possa viver fora do ambiente, utilizando jGroups, Infinispan e outros projetos da JBoss.org.<br />
Você pode encontrar maiores informações no <a href="http://www.jboss.org/capedwarf">site do projeto</a>.</div>
<h3>
Executando no Openshift</h3>
<div>
O passo a passo descrito nesta seção parte da premissa que o leitor leu o <a href="http://aprendendo-cloud-computing.blogspot.com.br/2012/10/primeiros-passos-com-openshift.html">primeiro post</a> a respeito dos primeiros passos para utilização do Openshift, portanto irei direto ao assunto.<br />
Na tela de gerenciamento do Openshift, você verá a listagem de todas as aplicações criadas na sua conta (lembrando uma coisa importante: caso já tenha 3 aplicações criadas, sugiro criar uma nova conta ou remover uma das aplicações pois o Openshift limita uma conta free a criar até 3 aplicações sem habilitar Scaling) ou se não tiver nenhuma ele irá direto para a tela de criação de uma aplicação.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-UvqhmRVEb7o/UOR6eV2QicI/AAAAAAAABXA/uNibyUQWqHc/s1600/Screenshot+from+2013-01-02+16:14:20.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="http://2.bp.blogspot.com/-UvqhmRVEb7o/UOR6eV2QicI/AAAAAAAABXA/uNibyUQWqHc/s400/Screenshot+from+2013-01-02+16:14:20.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela de gerenciamento do Openshift</td></tr>
</tbody></table>
<div>
Na tela de criação da aplicação, procure por CapeDwarf. Basicamente, se trata de um servidor JBoss AS contendo toda a camada que o CapeDwarf implementa para "simular" os serviços do GAE.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-DhWDSh-ntFg/UOR62TeIIeI/AAAAAAAABXY/TK3zt2L8RIU/s1600/Screenshot+from+2013-01-02+16:14:30.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="http://3.bp.blogspot.com/-DhWDSh-ntFg/UOR62TeIIeI/AAAAAAAABXY/TK3zt2L8RIU/s400/Screenshot+from+2013-01-02+16:14:30.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Criação da nova aplicação</td></tr>
</tbody></table>
<div>
Depois de selecionado o tipo de aplicação, defina o nome da sua nova aplicação. Note que o Openshift irá pegar todo o código necessário para configurar o ambiente do github. Caso queira ver outras opções de aplicação, poderá verificar diretamente no <a href="https://github.com/openshift">site</a>.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-cLGpj37T3Jc/UOR6pc_csQI/AAAAAAAABXI/aBwx32fLojg/s1600/Screenshot+from+2013-01-02+16:14:48.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="http://4.bp.blogspot.com/-cLGpj37T3Jc/UOR6pc_csQI/AAAAAAAABXI/aBwx32fLojg/s400/Screenshot+from+2013-01-02+16:14:48.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Configuração da nova aplicação</td></tr>
</tbody></table>
<div>
Por fim, clique no botão "Create Application"</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-IDsFuBKqGZc/UOR6wtZstwI/AAAAAAAABXQ/I429P8gmVMo/s1600/Screenshot+from+2013-01-02+16:14:50.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="http://4.bp.blogspot.com/-IDsFuBKqGZc/UOR6wtZstwI/AAAAAAAABXQ/I429P8gmVMo/s400/Screenshot+from+2013-01-02+16:14:50.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Finalização da criação da aplicação</td></tr>
</tbody></table>
<div>
Feito isso, o Openshift irá realizar os processos iniciais (propagar o novo endereço em seus servidores DNS, clonar o código do Openshift, fazer o build, etc.) e depois mostrará a tela de conclusão com a URL da sua nova aplicação. Se você chegou até aqui, então estamos no caminho certo. =D</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-R2vj2GLYBw4/UOR6_oZOi6I/AAAAAAAABXg/veP720Iipm8/s1600/Screenshot+from+2013-01-02+16:15:34.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="http://1.bp.blogspot.com/-R2vj2GLYBw4/UOR6_oZOi6I/AAAAAAAABXg/veP720Iipm8/s400/Screenshot+from+2013-01-02+16:15:34.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela de informações sobre a nova aplicação criada</td></tr>
</tbody></table>
<div>
Copie e cole o endereço criado para sua nova aplicação e acesse em seu navegador favorito(não se preocupe se a URL retornar HTTP 500 ou HTTP 404, isso só indica que a URL ainda não propagada nos servidores DNS). Você terá a tela abaixo:</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-fdPQrRIglhU/UOR7FdLpRdI/AAAAAAAABXo/sTnZ1A6Flno/s1600/Screenshot+from+2013-01-02+16:19:18.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="http://2.bp.blogspot.com/-fdPQrRIglhU/UOR7FdLpRdI/AAAAAAAABXo/sTnZ1A6Flno/s400/Screenshot+from+2013-01-02+16:19:18.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tela inicial da nova aplicação</td></tr>
</tbody></table>
<div>
Essa é a tela de apresentação do CapeDwarf rodando no Openshift. Veja que há também um endereço git configurado para sua aplicação, portanto faça o clone de seu repositório para poder copiar o código. Como uma alternativa caso você tenha apenas o arquivo .war gerado da sua aplicação, copie no diretório <app_dir>/deployments, e não se esqueça de gerar um arquivo vazio dentro de <app_dir>/.openshift/markers/skip_maven_build para dizer ao Openshift não gerar mais builds. Esse procedimento não sobreescreverá a tela inicial da aplicação, devendo ser acessada como http://gaeapp-meudominio.rhcloud.com/minhaappgae.<br />
Você leitor deve se perguntar agora: mas o GAE permite monitorar minha aplicação através de uma interface administrativa, por acaso migrando minha aplicação para o CapeDwarf/Openshift eu vou perder essa funcionalidade? A resposta é não. Se você observar rolando a página um pouco mais pra baixo, há uma seção chamada <i>Admin Console</i>, onde ele fornece um usuário e senha que você pode acessar a interface administrativa de sua aplicação</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/--JIW4GLORfg/UOR7KUddSsI/AAAAAAAABXw/j5NNii9dL8g/s1600/Screenshot+from+2013-01-02+16:19:27.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="http://1.bp.blogspot.com/--JIW4GLORfg/UOR7KUddSsI/AAAAAAAABXw/j5NNii9dL8g/s400/Screenshot+from+2013-01-02+16:19:27.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Senha gerada para acesso ao admin console</td></tr>
</tbody></table>
<div>
Com esse usuário e senha em mãos, basta acessar a URL http://gaeapp-meudominio.rhcloud.com/_ah/admin (não se esqueça que se sua aplicação estiver empacotada como um .war em <app_dir>/deployments, você deve acrescentar o nome da aplicação) e após o login você terá acesso ao console administrativo de sua aplicação. Note que ela é semelhante ao console do GAE propositalmente para que não haja nenhuma dificuldade em utilizar o ambiente.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-IJsX31XVVqA/UOR7PWmHloI/AAAAAAAABX4/_Tz9rvqOoyI/s1600/Screenshot+from+2013-01-02+16:19:42.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="http://4.bp.blogspot.com/-IJsX31XVVqA/UOR7PWmHloI/AAAAAAAABX4/_Tz9rvqOoyI/s400/Screenshot+from+2013-01-02+16:19:42.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Console Administrativo da aplicação GAE no CapeDwarf</td></tr>
</tbody></table>
<div>
Muito legal, não? Pois bem, a má notícia é que o CapeDwarf ainda está em sua versão Beta1 (nos próximos dias a JBoss irá lançar o Beta2) e portanto algumas das funcionalidades dessa interface ainda não estão prontos, bem como alguns dos serviços que o GAE oferece ainda não foram implementados (são bem poucos, mas isso depende de quão dependente desses serviços estão com o GAE).<br />
Fico por aqui e caso tenham dúvidas/sugestões/reclamações a respeito do CapeDwarf ou do Openshift, podem postar comentários que eu responderei com maior prazer. Ou se preferir, pode ir no <a href="https://community.jboss.org/en/capedwarf">fórum</a> do CapeDwarf e perguntar diretamente aos desenvolvedores do projeto.</div>
<div>
<blockquote class="tr_bq">
</blockquote>
</div>
Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com3tag:blogger.com,1999:blog-3438555562642680163.post-30129239266685087262013-01-03T09:53:00.000-02:002013-01-03T09:53:05.732-02:00Curso online: Amazon Web Services For Newbies<br /><br />Recebi ontem um tweet do José Papo (Amazon Web Services Evangelist - Latin America e meu ex-professor da graduação) indicando um curso gratuito sobre AWS para Newbies. Basicamente, o curso trata de explicar o conceito de algumas das ferramentas que compoem o AWS e qual a finalidade de cada uma delas para sua infraestrutura. Ao fim do curso o instrutor Anthony James (Twitter: <a href="https://twitter.com/anthonydjames">@anthonydjames</a>), dá uma prática de como utilizar as ferramentas e botar no ar aplicações na nuvem da amazon.<br /><br />Bom, este post é curto apenas para divulgar aos interessados em conhecer soluções de IaaS (Infrastructure-as-a-Service, ou Infraestrutura-como-um-serviço) e como eles funcionam. Para quem quiser conhecer o curso, mas acessar a página da <a href="http://udemy.com/">udemy.com</a> e procurar por "Amazon Web Services for Dummies". Para os leitores pragmáticos (a.k.a. os preguiçosos, como eu), pode acessar o curso diretamente <a href="http://www.udemy.com/amazon-web-services/">aqui</a>.Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com0tag:blogger.com,1999:blog-3438555562642680163.post-54671820260252790352012-12-17T11:25:00.001-02:002013-01-02T23:38:14.739-02:00Evento TI no Vale 2012No último sábado (15/12), participei do evento "TI no Vale 2012" a pedido de meu amigo <a href="http://williamprogrammer.com/">William Antônio (jesuíno)</a>, organizado por ele e mais alguns integrantes do <a href="http://jugvale.com/">JUG Vale</a>, localizado na cidade de São José dos Campos. Fiquei honrado por novamente voltar a esta cidade que tanto admiro por ter um grupo de programadores fanáticos (assim como o William) e também por esta região ter institutos de pesquisa de peso (como o ITA e o INPE). A última vez que fui para lá foi para um evento do próprio JUG Vale.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://site-tinovale.rhcloud.com/img/logo-tinovale.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="294" src="http://site-tinovale.rhcloud.com/img/logo-tinovale.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Logo do evento</td></tr>
</tbody></table>
O eventou contou com quatro trilhas (no mesmo formato de eventos como o <a href="http://site-tinovale.rhcloud.com/img/logo-tinovale.png">TDC (The Developers Conference)</a>: Games, Mente Aberta, Nuvem de Elétrons e Programação. O próprio site foi algo interessante (e também parte do assunto relevante a este blog), pois eles contruíram o site do evento utilizando Openshift como uma solução de PaaS e também de hospedagem. Para quem quiser conferir, o site é <a href="http://site-tinovale.rhcloud.com/">http://site-tinovale.rhcloud.com</a>.<br />
Eu participei da trilha Programação, onde apresentei a palestra "Sua aplicação nas nuvens com Openshift". O objetivo da palestra tratou de falar sobre como Cloud Computing tem impulsionado muitas startups a criarem suas idéias e lançarem ao mercado em tempo recorde com baixo custo e como grandes empresas puderam economizar com TI simplesmente diminuindo a ociosidade de seu parque de servidores. Por fim, apresentei quatro demos interessantes: Uma aplicação Magento (um framework de e-commerce escrito em PHP) rodando na nuvem, uma (simples) aplicação em Python com Django, demonstrei uma breve instrodução ao projeto <a href="http://www.jboss.org/capedwarf">Capedwarf</a>, que permite a migração de aplicações Google App Engine para ambientes JavaEE/JBoss e Openshift sem mexer em uma linha de código(farei um post sobre isso nas próximas semanas), e um exemplo prático de como migrar e por fim demonstrei como é possível criar um ambiente DevOps com Openshift e Jenkins (claro que só isso não é o suficiente, mas é um bom ponto de partida para isso).<br />
Minha intenção com as demos foi simplesmente mostrar que Startups hoje viraram moda, mas nem sempre sinônimo de startup é rentabilidade a curto prazo. Porém é possível encurtar essa trilha se sua solução/idéia precisa de uma hospedagem à Internet e que também permita criar um ambiente de Middleware à sua escolha, sem ter que te travar por conta de suportar apenas uma ou outra tecnologia. Além disso, é possível também usar soluções já prontas no mercado (como o Magento ou sua própria aplicação em GAE) sem ter que reinventar a roda ou reescrever código. Espero que o pessoal do evento tenha gostado, pois eu gostei e sempre gosto muito de apresentar por lá.<br />
Gostaria de novamente agradecer ao William e ao pessoal do JUG Vale que sempre me recebem muito bem quando eu vou aos eventos e também ao Professor Renzo da FATEC e Diretor de Tecnologia da <a href="http://www.qmagico.com.br/">QMagico</a> (uma espécie de Khan Academy brazuca) por compartilhar seus conhecimentos e experiências com o Google App Engine. Segue abaixo meus slides apresentados no evento, e como ainda não recebi as fotos do evento ficarei devendo nesse momento. Assim que tiver as fotos eu posto aqui.<br />
<br />
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="470px" marginheight="0" marginwidth="0" mozallowfullscreen="mozallowfullscreen" scrolling="no" src="http://www.slideshare.net/rimolive/slideshelf" style="border: none;" webkitallowfullscreen="webkitallowfullscreen" width="615px"></iframe>Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com1tag:blogger.com,1999:blog-3438555562642680163.post-54043284610244607522012-10-29T16:01:00.002-02:002013-01-02T23:37:44.535-02:00Primeiros passos com Openshift<h2>
Introdução</h2>
Esse é o primeiro de muitos posts que venho organizando sobre Cloud Computing. Ultimamente tenho me interessado bastante no assunto e por isso venho estudando a fundo sobre assuntos que giram em torno dessa nova buzzword.<br />
<div>
Vamos ao que interessa: nesse post explicarei como criar sua primeira aplicação utilizando um serviço PaaS (Platform-as-a-Service, explicarei melhor esse e outros termos em outro post) da Red Hat chamado OpenShift. O OpenShift é um serviço relativamente novo porém traz diversas funcionalidades que fazem dele um serviço PaaS bem mais amplo. Para criar a nossa primeira aplicação, é necessário instalar os seguintes componentes:</div>
<div>
<br /></div>
<div>
<ul>
<li><a href="http://www.eclipse.org/downloads/packages/release/indigo/sr2">Eclipse Indigo</a></li>
<li><a href="http://www.jboss.org/tools/download/stable/3_3_Final">JBoss Tools 3.3.1</a></li>
<li>Opcionalmente pode ser utilizado o <a href="https://devstudio.jboss.com/earlyaccess/">JBoss Developer Studio 5.0</a>, que já possui uma configuração pronta com Eclipse + JBoss Tools</li>
</ul>
<h2>
Criando uma conta no OpenShift</h2>
</div>
<div>
Antes de criar nossa aplicação, precisamos criar uma conta no OpenShift no site <a href="http://openshift.redhat.com/">http://openshift.redhat.com</a>. Esse é um dos pontos de acesso para criar, gerenciar e monitorar suas aplicações e tecnologias hospedadas no OpenShift através da interface de gerenciamento. Abaixo a página inicial do OpenShift:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-LiKptJNvxaw/UBHc_629iBI/AAAAAAAABUo/MVsQ0GsyxMI/s1600/Openshift-main-window.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="270" src="http://1.bp.blogspot.com/-LiKptJNvxaw/UBHc_629iBI/AAAAAAAABUo/MVsQ0GsyxMI/s400/Openshift-main-window.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Página inicial do OpenShift</td></tr>
</tbody></table>
<div>
Na página inicial, clique em "Sign up - It's free" (e de fato é... =D ) e preencha os dados conforme a tela abaixo:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-z8iKHWY7gf8/UBHfGHUqqmI/AAAAAAAABU4/C_TNDZUt1eg/s1600/sign-up.png" imageanchor="1"><img border="0" height="271" src="http://1.bp.blogspot.com/-z8iKHWY7gf8/UBHfGHUqqmI/AAAAAAAABU4/C_TNDZUt1eg/s320/sign-up.png" width="400" /></a></div>
<div>
<br /></div>
<div>
Feito isso, você receberá um e-mail de confirmação de sua inscrição e pronto! Agora podemos criar aplicações no ambiente OpenShift.<br />
<br />
<h2>
Criando um domain</h2>
</div>
<div>
criando um domain</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-AVeEnHFDyxM/UBHja4j00mI/AAAAAAAABVE/qGIBWIJp5WI/s1600/new-domain.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="143" src="http://4.bp.blogspot.com/-AVeEnHFDyxM/UBHja4j00mI/AAAAAAAABVE/qGIBWIJp5WI/s320/new-domain.png" width="320" /></a></div>
<div>
<br /></div>
<div>
Abrirá um diálogo para digitar o nome do seu domain. Após escolher um nome para seu domain, clique em Finish:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-eyz1iMY2wro/UBHjqDf3trI/AAAAAAAABVM/64qxenuq2Uw/s1600/new-domain-dialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="316" src="http://2.bp.blogspot.com/-eyz1iMY2wro/UBHjqDf3trI/AAAAAAAABVM/64qxenuq2Uw/s400/new-domain-dialog.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
Criando a aplicação</h2>
<div>
Finalmente, vamos criar a aplicação clicando com o botão direito na sua conta Openshift e selecionar "New OpenShift Application...":</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-SsbC0EjAEbE/UBHkWymfUTI/AAAAAAAABVU/JC2lKaKRayM/s1600/new-application.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="http://3.bp.blogspot.com/-SsbC0EjAEbE/UBHkWymfUTI/AAAAAAAABVU/JC2lKaKRayM/s400/new-application.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br />
Abrirá uma tela para criar sua aplicação. Eu vou tentar explicar por cima o que cada seção desse wizard faz. Como podem perceber, você pode usar:<br />
<br />
<ul>
<li>Use Existing Application: Caso você já tenha uma aplicação pronta, você pode já apontar para o locla onde está esse projeto</li>
<li>New application: É onde utilizaremos. Nesse caso, você terá que colocar informações adicionais para configurar sua aplicação, tais como:</li>
<ul>
<li>Name: O nome que ficará sua aplicação. Ao acessar sua aplicação, ela terá o formato http://aplicacao-dominio.rhcloud.com</li>
<li>Type: O tipo da aplicação que você irá desenvolver. É aqui onde você indica se vai criar uma aplicação Java, PHP, Ruby, etc. Tentarei postar como desenvolver aplicações que não sejam apenas Java</li>
<li>Gear Profile: É o tamanho da sua medida de recursos. Um gear no OpenShift é uma unidade computacional de storage e memória, onde há uma limitação desses recursos para assim poder utilizar apenas o necessário. Imaginem uma aplicação que ocupa apenas 500MB e que consome 300MB de RAM, com um gear small você pode consumir exatamente o que precisa sem comprometer os recursos disponíveis para as outras aplicações utilizarem.</li>
<li>Embeddable Cartridges: Um Cartridge no OpenShift é como blocos de software que você vai adicionando na infraestrutura da sua aplicação. Exemplo: Toda aplicação precisa de um Banco de Dados, então você adiciona um cartridge para isso (no momento, os gears de Banco disponíveis no OpenShift são MySQL, PostgreSQL e MongoDB). Além disso, há outros cartridges que podem auxiliar no desenvolvimento e administração de sua aplicação, como o phpMyAdmin, cron, etc.</li>
</ul>
</ul>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-enGNbwSODcU/UBHqbAM2EEI/AAAAAAAABVg/NszKPItCCa4/s1600/new-application-dialog-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://3.bp.blogspot.com/-enGNbwSODcU/UBHqbAM2EEI/AAAAAAAABVg/NszKPItCCa4/s400/new-application-dialog-1.png" width="300" /></a></div>
<br /></div>
<div>
Agora que preenchemos as informações para a aplicação e clicar em Next, surge uma tela para definir se precisa criar um projeto para sua aplicação ou se vai utilizar um já existente e também para criar uma configuração de servidor para o OpenShift, assim como criamos uma configuração de servidor JBoss para iniciar/parar o servidor e fazer o deploy de aplicações nele.</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-fRVvFh_MEo8/UBHqjBsk0wI/AAAAAAAABVo/ufR_0mLHD7A/s1600/new-application-dialog-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://1.bp.blogspot.com/-fRVvFh_MEo8/UBHqjBsk0wI/AAAAAAAABVo/ufR_0mLHD7A/s400/new-application-dialog-2.png" width="300" /></a></div>
<br /></div>
<div>
Por fim, aparece uma tela para definir o local onde o git fará um clone do repositório remoto para sua máquina. IMPORTANTE: você precisa definir as chaves SSH para poder fazer esse clone. Você pode clocar em "SSH2 Preferences" e seguir os passos para configurar essas chaves</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ZcrpoYBZ9iI/UBHr7kvgmPI/AAAAAAAABVw/TXe-aQ7Uk9g/s1600/new-application-dialog-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/-ZcrpoYBZ9iI/UBHr7kvgmPI/AAAAAAAABVw/TXe-aQ7Uk9g/s320/new-application-dialog-3.png" width="240" /></a></div>
<br /></div>
<div>
Por fim, sua aplicação será criada e depois que o Eclipse finalizar basta acessar a URL e já terá uma página inicial:</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-IkRtmeJTjDg/UI68jppTTeI/AAAAAAAABWc/KK_uBJsJ01Y/s1600/Screenshot+from+2012-10-29+15:26:58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="387" src="http://3.bp.blogspot.com/-IkRtmeJTjDg/UI68jppTTeI/AAAAAAAABWc/KK_uBJsJ01Y/s640/Screenshot+from+2012-10-29+15:26:58.png" width="640" /></a></div>
<br />
Bom pessoal, essa é só a ponta do iceberg para iniciar. Nos próximos posts, irei aprofundar um pouco mais sobre conceitos teóricos e práticos, e se tiverem alguma sugestão é só mandar um comentário.</div>
Anonymoushttp://www.blogger.com/profile/14139495311691966669noreply@blogger.com5