OCEL001 – Comércio Eletrônico Módulo 9_3: OpenShift Prof. Charles Christian Miers e-mail: [email protected] OpenShift Solução livre de PaaS da RedHat Aquisição da Makara em 2010 Principais concorrentes: Heroku (2009) VMWare Cloud Foundry (2009) Google App Engine (2008) 2 OpenShift & RedHat Quadrante mágico para plataforma de aplicações Capacidade de execução Desafiantes Fonte: Gartner (Janeiro/2014) Concorrência Completude da visão Líderes Visionários 3 OpenShift: Motivação para uso Robustez: O OpenShift foi desenvolvido sobre as renomadas tecnologias da Red Hat Liberdade: Com o OpenShift é possível trabalhar da maneira que desejar: Escolha da Interface: Console Web, linha de comando (CLI) ou IDE Escolha do Middleware: Java (EE6), Ruby, Node.js, PHP, Python, etc. Escolha do modelo de implantação da nuvem: Nuvem pública, privada ou híbrida Escolha de Elasticidade: escalonamento da aplicação/serviço de forma automatizada e sob demanda Código aberto: Pilha de software de código aberto do OpenShift garante a portabilidade de aplicativos e evita o Vendor Lock-In 4 OpenShift: Arcabouço Camada de Aplicativos / SaaS Ferramentas de desenvolvimento Pacotes de aplicativos Arcabouços / Frameworks Linguagens Cartridges personalizados Middleware Hosting Armazenamento & BackEnd Sistema Operacional Camada de Infraestrutura / IaaS 5 OpenShift: Arcabouço (Cont.) 6 OpenShift: Versões Projeto Open Source Serviço de nuvem pública origin Serviço de nuvem privada 7 OpenShift: Versões Sofware de nuvem privada Serviço de nuvem pública Desenvolvedor controla APPLICAÇÃO PLATFORMA DA APLICAÇÃO (JBOSS, PHP, RUBY, ETC) SISTEMA OPERACIONAL (RHEL) Operado pela Red Hat Desenvolvedor controla OpenShift Automatiza as operações de controle da TI VIRTUALIZAÇÃO (RHEV) HARDWARE (x86) ARMAZENAMENTO (RHS) Provedores de TI 8 OpenShift: Versão Open Source GitHub: https://github.com/openshift https://openshift.redhat.com/community/open-source Origin-server OSE: enterprise-server Community-cartridges: origin-community-cartridges Tutorias, exemplos, etc. Licença Apache 2.0 Disponível: Códido fonte, RPMs ISO, LiveCD 9 OpenShift: Termos Broker: serviço de corretagem para gerenciamento e orquestração dos nós Nó: Host de computação que contém Gears Gear: Alocação de quantidade fixa de memória, processamento (computação) e armazenamento Cartridge: Uma tecnologia e/ou arcabouço (framework) para construir aplicações Exemplos: PHP, Perl, Java/JEE, Ruby, Python, MySQL, etc. Aplicação: Instância de um Cartridge Ferramentas do cliente: CLI, Eclipse, console web para criar e gerenciar aplicações 10 OpenShift: Termos (Cont.) O Broker é responsável pelo estado, DNS e autenticação 11 OpenShift: Base OpenShift pode ser instalado em Bare Metal ou sobre soluções populares de IaaS: AWS EC2 RackSpace OpenStack RHEV VMWare 12 OpenShift: Funcionamento OpenShify é um PaaS sob uma infraestrutura AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 13 OpenShift: Funcionamento (Cont.) A base do OpenShift é o Red Hat Linux Enterprise OpenShift é construído sob instâncias do Red Hat Enterprise Linux (RHEL) RHEL RHEL RHEL RHEL AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 14 OpenShift: Funcionamento (Cont.) O serviço de corretagem (Broker) gerencia os múltiplos nós OpenShift -Nós são os locais nos quais as aplicações do usuário residem -Brokers mantêm o OpenShift executando RHEL Brokers RHEL Nó RHEL RHEL Nó Nó AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 15 OpenShift: Funcionamento (Cont.) A abordagem única do SELinux disponibiliza segurança e suporte multiusuário (multi-tenancy) Políticas do SELinux subdividem de maneira segura as instâncias dos nós RHEL Broker Nó RHEL RHEL Nó Nó AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 16 OpenShift: Funcionamento (Cont.) As aplicações de usuário do OpenShift são executadas em Gears OpenShift As Gears OpenShift representam contêineres seguros no RHEL RHEL Broker Nó RHEL RHEL Nó Nó AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 17 OpenShift: Funcionamento (Cont.) Web Console Eclipse IDE Cmd Line Fluxo do desenvolvedor OpenShift Gear RHEL Broker Nó Desenvolvedor cria uma nova aplicação OpenShift criar uma Gear RHEL RHEL Nó Nó AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 18 OpenShift: Funcionamento (Cont.) Web Console Eclipse IDE Cmd Line O OpenShift automatiza a configuração das Gears através de Cartridges JBoss RHEL Broker Nó MySQL Cartridges são como o OpenShift instala linguagens & Middleware RHEL RHEL Nó Nó AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 19 OpenShift: Funcionamento (Cont.) O sistema de Cartridges do OpenShift possibilita o usuário a criar os seus próprios Cartridges Java PHP Python Web Console Eclipse IDE Cmd Line MySQL Postgres Personalizado Etc. Ruby Desenvolvedores podem adicionar, através de Cartridges personalizados, Cartridges padrão as suas versões personalizadas de do OpenShift linguagens, armazenamento de dados ou middleware Etc. AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 20 OpenShift: Funcionamento (Cont.) Codificar e enviar (upload) Protocolo Git / SSH Código Git Repo MySQL JBoss RHEL Broker Nó Enviar Desenvolvedor envia o código do aplicativo através do sistema de gerenciamento de código fonte Git RHEL RHEL Nó Nó AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 21 OpenShift: Funcionamento (Cont.) Automatiza o desenvolvimento, teste e publicação do serviço/ aplicação Maven (Builds) Código Jenkins Git Repo (CI) RHEL Broker JBoss Nó Apache (HTTP) MySQL RHEL RHEL Nó Nó AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 22 OpenShift: Funcionamento (Cont.) Automatiza o escalonamento do serviço/ aplicação HA-Proxy Cod e Cod Código Java e Java MySQL Java RHEL Broker Nó Nó Nó AWS / CloudForms / OpenStack (IaaS) / RHEV (Virt) / Bare Metal 23 Interação do desenvolvedor com o OpenShift Integração com IDE de desenvolvimento Console via navegador web Ferramentas CLI APIs REST 24 Ferramentas CLI (OpenShift RHC) 1) Criar uma App rhc app create -a javasample -t jbossas-7 2) Adicionar suporte MongoDB rhc app cartridge add -a javasample –c mongodb-2.0 3) Adicionar um arquivo EAR (Enterprise ARchive) ao seu diretório implementações cd javasample cp /path/to/ear/earfilename.ear ./deployments 4) Adicionar o arquivo EAR no Git git add ./deployments/earfilename.ear 5) Enviar o seu código git push 6) Fim 25 Console via navegador web 26 Console via navegador web (Cont.) Fluxo HTTP / HTTPS 27 Integração com IDE de desenvolvimento: JBoss Dev Studio IDE 28 Comunicação através de API's REST A comunicação de clientes externos pode ocorrer por API REST O Broker se comunica através do serviço de mensagens para nós 29 OpenShift: Arquitetura 30 Cenários Práticos para Desenvolvimento: Múltiplos ambientes, um serviço de PaaS Nós RHEL Nós Desenvolvedor G it G it Dev DISTRICT QA DISTRICT Prod DISTRICT G it Brokers Nós QA - Quality Assurance G it Gerência de lançamento / versões 31 Desenvolvedor Nós Nós Nós Dev QA Prod G it G it G it Cenários Práticos para Desenvolvimento: Múltiplos ambientes, vários PaaS QA - Quality Assurance G it Gerência de lançamento / versões 32 Testando o OpenShift: Criando uma conta https://openshift.redhat.com/app/account/new 33 Testando o OpenShift: Login 34 Testando o OpenShift: Criando uma aplicação 35 36 37 38 39 40 41 42 43 Serviço criado já disponível na Internet 44 45 46 47 Leitura recomendada Código fonte, LiveCD e VM's: http://openshift.github.io/ Documentação oficial: Https://www.openshift.com https://www.openshift.com/developers/documentation https://openshift.redhat.com/community/blogs/ REESE, G. Cloud Application Architectures: Building Applications and Infrastructure in the Cloud (Theory in Practice. 1º ed. O’Reilly Media, 2009. 48 49