Prévia do material em texto
INFRAESTRUTURA DE TI Hygo Sousa de Oliveira PaaS (plataforma como serviço) Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Definir PaaS. � Especificar o funcionamento, as abstrações e os modos de cobrança. � Analisar a usabilidade, as vantagens, as desvantagens, os casos de uso e a relação com a infraestrutura como serviço (IaaS). Introdução Cada vez mais comumente, as empresas de diferentes ramos investem em infraestrutura de redes, o que se justifica, por exemplo, pelos processos de negócio entre as organizações, em que se apropriam continuamente de aplicações que processam e fornecem informações fundamentais para seu pleno funcionamento. Nesse contexto, o maior responsável pela fluidez do fluxo de informações entre empresas é a tecnologia da informação (TI), que permite que organizações trabalhem em conjunto por um objetivo a fim de entregarem aos seus clientes um valor agregado muito maior em comparação ao que seria possível com abordagens isoladas sem a utilização da TI. Assim, é natural expor formas de aplicações na chamada computação em nuvem (cloud computing), que nos fornece três modelos de serviço, entre os quais enfatizaremos o PaaS (modelo de plataforma como serviço). Neste capítulo, você aprenderá sobre o conceito de PaaS, entenderá como especificar o funcionamento de uma plataforma, bem como as abstrações e os modelos de cobrança, além de identificar as diferenças para o modelo de serviço de infraestrutura como serviço (IaaS). 1 Principais conceitos de PaaS De modo geral, o serviço em nuvem fornece recursos computacionais, desenvol- vimento de plataformas e aplicações em forma de serviço para usuários finais. Segundo Chandrasekaran (2014), o modelo computacional em nuvem possibilita que os usuários acessem e compartilhem recursos de rede, armazenamento, banco de dados e aplicações sob demanda, sem que haja a necessidade de pagar por eles de modo permanente, caso não exista esse desejo. O serviço de plataforma como serviço (do inglês, platform as a service — PaaS) foi definido pelo Instituto Nacional de Padrões e Tecnologias (National Institute of Standards and Technology — NIST) como um modelo de serviço básico, assim como as tecnologias de IaaS (infraestrutura como serviço) e SaaS (software como serviço). Segundo Mahmood (2013), o PaaS provém plataformas para desenvolver aplicações sem que seja preciso instalar qualquer ferramenta de desenvolvi- mento e bibliotecas. Assim, conseguem dispor de desenvolvedores relacionados a plataformas, incluindo ambientação, compreendendo o ciclo de desenvolvi- mento, teste e implementação, e até mesmo hospedagem de aplicações web como um serviço entregue por uma base em nuvem (ANTONOPOULOS; GILLAM, 2010). A Figura 1 apresenta as características que compõem a PaaS, em que se pode notar três entidades, de cima para baixo, IaaS, PaaS e a interface de acesso ao PaaS, além de outros elementos, como escalabili- dade, gerenciamento de recursos, gerenciamento de aplicação e qualidade de serviço (QoS). A plataforma na nuvem oferece um modelo de computação, armazenamento e comunicação para as aplicações acessado pelos clientes via navegador, por exemplo, AppEngine do Google, AZURE da Microsoft, Force. com, Red Hat OpenShift, Heroku e Engine Yard. PaaS (plataforma como serviço)2 Figura 1. Modelo de referência da plataforma como serviço (PaaS). Fonte: Adaptada de Buyya, Vecchiola e Selvi (2013). Interface web Núcleo de Paas API de programação/bibliotecas Gerenciamento de usuário Gerenciamento de aplicação Tempo de execução Escalabilidade Gerenciamento de recursos Serviços web, portais, API de REST QoS/Gerenciamento sobre nível de serviço e taxas Provedor de PaasInterface web Características do PaaS Conforme Chandrasekaran (2014), como a forma de desenvolvimento em PaaS se diferencia significativamente do método tradicional, existem algumas características que tornam único o uso do PaaS, como os listados a seguir. Tudo em um O modelo PaaS fornece todas as ferramentas necessárias para desenvolvimento, teste, implementação, hospedagem e contínua aplicação no mesmo ambiente integrado de desenvolvimento (IDE), que pode variar conforme a linguagem de programação selecionada para a operação. 3PaaS (plataforma como serviço) Acesso web para desenvolvimento de plataformas O acesso web pode ser realizado via navegador, o que se torna benéfico pela utilização da interface web, a qual contribui na tarefa dos desenvolvedores de criar, modificar, testar e implementar diferentes aplicações sobre a mesma plataforma. Acesso off-line Quando não há acesso à internet para sincronização do projeto, os desenvolve- dores devem ter permissão para trabalhar off-line. Para habilitá-lo, alguns dos provedores de PaaS permitem que o desenvolvedor sincronize seu IDE local com os serviços de PaaS, como na utilização de SDK (kit de desenvolvimento de software) ou outras ferramentas. Escalabilidade Diz respeito à flexibilidade ou disponibilidade de recursos, capaz de trazer um recurso computacional mais amplo conforme a demanda. Serviços de PaaS fornecem escalabilidade interna para uma aplicação desenvolvida usando qualquer PaaS específico, o que garante que a aplicação consiga lidar com cargas variadas com eficiência. Colaboração Em sua maioria, os serviços PaaS fornecem suporte para o desenvolvimento colaborativo. Para permitir a colaboração entre desenvolvedores, a maioria dos provedores de PaaS oferece ferramentas para o planejamento e a comu- nicação do projeto. Ferramentas clientes Com o objetivo de acelerar o desenvolvimento, os provedores de PaaS fornecem várias ferramentas de cliente, como as de CLI, CLI da web, UI da web, API REST e IDE, cujo critério de escolha é de responsabilidade do desenvolvedor. Ademais, essas ferramentas clientes conseguem lidar com o gerenciamento de cobrança e assinatura. PaaS (plataforma como serviço)4 Quando mencionamos sobre participação off-line na produção de uma aplicação, é importante ressaltar que, embora o PaaS permita o controle de versionamento, essa tarefa está atribuída ao tipo de módulo de SaaS, como o exemplo do sistema de colaboração de desenvolvimento Git, com a finalidade de controlar o versionamento de código. A ideia do PaaS consiste em oferecer a implementação do software/ferramenta como um todo. 2 Funcionamento, abstrações e modos de cobrança Um dos principais diferenciais do desenvolvimento de aplicações em PaaS para o modo clássico em stand-alone, define-se pelo desenvolvimento a ser realizado de modo on-line em data centers, sem a necessidade de entregar o desenvolvimento em arquivo executável, além de programas com base em licença de uso. Como visto na Figura 2, os desenvolvedores podem consumir os serviços diretamente pela internet. Perceba que podemos explorar o PaaS de duas maneiras, como provedor (do inglês, provider) e consumidor (do inglês, consumer). O provedor tem a responsabilidade de disponibilizar os recursos, tanto de hardware quanto de ferramentas/bibliotecas para manipular uma linguagem de programação para o desenvolvimento. Uma das formas de compartilhar hardware de modo compartilhado é por meio de máquinas virtuais (VM), em que o hardware normalmente é emulado. Logo, resta ao cliente apenas consumir esses recursos, por meio de uma interface web, geralmente via navegador web. 5PaaS (plataforma como serviço) Figura 2. Visão geral sobre o modelo PaaS. Fonte: Adaptada de Chandrasekaran (2014). Camada de balanceamento Camada de virtualização Plataforma virtual de desenvolvimento/teste Plataforma de desenvolvimento/teste (tempo de execução, frameworks, banco de dados, ferramenta de testes, etc.) (tempo de execução, frameworks, banco de dados, ferramenta de testes, etc.) Provedores de PaaS Provedores de PaaS Consumidor de PaaS (desenvolvedor de aplicação) Consumidores Provedores Provedores De acordo com Chandrasekaran (2014),um provedor de PaaS hospeda hardware e software em sua própria infraestrutura, dispensando os desen- volvedores de realizarem a instalação de hardware e software internos para o desenvolvimento ou a execução de aplicações. Assim, o PaaS possibilita que os desenvolvedores criem e implementem seus aplicativos de maneira on- -line, e tanto os desenvolvedores quanto os consumidores de PaaS podem usar linguagem em tempo de execução, aplicativos frameworks, bancos de dados, filas de mensagens, ferramentas de teste e ferramentas de implantação como um serviço pela internet. Geralmente, os provedores típicos de PaaS fornecem linguagens de programação como Java e C#, aplicações de frameworks e bancos de dados como PostgreSQL (Figura 3). PaaS (plataforma como serviço)6 Figura 3. Serviços fornecidos por provedores de PaaS. Fonte: Adaptada de Chandrasekaran (2014). Linguagens de programação Aplicações de frameworks Outras ferramentasBanco de dados PaaS Esses serviços fornecidos por provedores PaaS também incluem colabora- ção da equipe de desenvolvimento, design e desenvolvimento de aplicativos, teste e implantação de aplicativos, integração de serviços da web, segurança da informação e integração de banco de dados. Abstrações De acordo com Buyya, Vecchiola e Selvi (2013), as soluções PaaS são dife- renciadas pelo alto nível de abstração que fornecem, o que significa dizer que toda a parte de infraestrutura de software e hardware não é apresentada em detalhes para os usuários, pois o foco do PaaS está nos aplicativos que a nuvem suporta, ou seja, as soluções PaaS disponibilizam uma maneira de implantar e gerenciar aplicativos na nuvem, em vez de várias VM que seriam necessárias para criar e configurar toda a infraestrutura de desenvolvimento. O objetivo dos provedores PaaS consiste em introduzir uma camada de abstração entre a infraestrutura e as várias instruções sobrepostas durante a execução de entrega de aplicativos, fornecendo uma plataforma na qual os desenvolvedores consigam implantar o aplicativo de maneira contínua e eficiente nos ambientes de desenvolvimento. 7PaaS (plataforma como serviço) Os provedores PaaS permitem que os desenvolvedores não se preocupem com infraestrutura de software nem hardware, pois as VM, o data center e a rede são abstraídos dos usuários para que os desenvolvedores possam se concentrem nos objetivos de desenvolver, testar e fornecer aplicativos e serviços. Conforme Sharma (2017), as plataformas PaaS fornecem ambientes bem definidos, arquitetados, contínuos, sempre disponíveis, resilientes e escalonáveis, ajustados para as necessidades específicas de seus aplicativos e serviços. Modos de cobrança Geralmente, os usuários pagam pelo PaaS conforme o uso, no entanto alguns provedores cobram uma taxa mensal fixa pelo acesso à plataforma e aos seus aplicativos, em um modelo de pagamento baseado com frequência nas especificações do servidor, do número de projetos e do tempo de utilização. O faturamento e a medição de PaaS são realizados de acordo com o uso dos usuários, pois os componentes da plataforma se diferenciam quanto à medida de uso de nível agregado e das instâncias (RAJ; RAMAN, 2018). Assim, parâmetros como a utilização de CPU, o uso do disco por transação e a largura de banda da rede podem determinar o custo do PaaS, sendo os principais parâmetros que definem o seu faturamento (RAJ; RAMAN, 2018): � uso da CPU por hora; � disponibilidade de serviço; � cobrança por serviço utilizado; � largura de banda da rede de entrada e saída. Segundo Raj e Raman (2018), uma das métricas mais usadas para definir a cobrança do PaaS é a largura de banda consumida, no entanto existe um problema em relação a esse parâmetro: é difícil calcular exatamente qual usuário da transação está consumindo uma quantidade específica de recursos de utilização da CPU por solicitação. Uma alternativa mais eficaz de cobrança e medição consiste em calcular a quantidade de dados armazenados que um usuário específico está consumindo e realizar a cobrança adequada do ser- viço. De acordo com Raj e Raman (2018), essa técnica é eficiente, pois pode ser empregada no armazenamento como serviço para acompanhar os dados armazenados nos servidores. PaaS (plataforma como serviço)8 Ainda, existem plataformas mais simples, cujo único critério reside no fato de ter requisitos de códigos seguros e sem transações demoradas na CPU (RAJ; RAMAN, 2018). Levando esses fatores em consideração, geralmente há dois modos de cobrança do PaaS: conforme o uso de cada usuário e os serviços utilizados; e a partir de uma taxa mensal fixa pelo acesso a plataforma e seus aplicativos, independentemente da quantidade de serviço utilizada. 3 Usabilidade e casos de uso, vantagens, desvantagens e a relação com IaaS Normalmente, plataformas em nuvem oferecem modelos de computação, armazenamento e comunicação para as aplicações contidas nelas. São exemplos de aplicações em PaaS a App Engine do Google, a Azure da Microsoft e o AWS Elastic Beanstalk da Amazon. Usabilidade e exemplos de uso Para aprofundarmos um pouco mais quanto à usabilidade, apresentando exem- plos de utilização, abordaremos as plataformas App Engine, do Google, e o sistema Azure, da Microsoft. A App Engine permite que o usuário escreva e faça deployment de suas aplicações na mesma infraestrutura dos aplicativos da companhia. Como o Google dispõe de uma estrutura localizada em diversos pontos do planeta, é natural pensar que uma aplicação sob seus servidores não esteja armazenada ou sendo executada em apenas um de seus servidores de hospedagem (sim, isso acontece). As aplicações armazenadas executam em sistemas de ambiente distribuídos. Em resumo, o processo de execução da aplicação pode estar dividido e distribuído em vários servidores, o que enfatiza o poder do Google em oferecer escalabilidade. Já o sistema Azure é desenvolvido como um PaaS primário, no qual os usuários gerenciam suas hospedagens e a escala das aplicações web em data centers da corporação, o que inclui algumas características do módulo de IaaS. Assim como o Google, a Azure fornece escalabilidade, além de balance- amento de carga e vários serviços de suporte, como identidade e autenticação, criptografia de mensagens, monitoramento e gerenciamento. O sistema da Azure utiliza uma combinação de tecnologia web, como REST, HTTP e XML, integrada à ferramenta Visual Studio, o que possibilita que os desenvolvedores criem serviços que contenham a framework .NET. 9PaaS (plataforma como serviço) Plataformas com código fonte aberto também têm espaço em meio a gigantes da tecnologia, como as que permitem a construção de sua própria versão de um PaaS: � o projeto denominado Kell usa a ferramenta de Kubernetes como base para um PaaS auto-hospedado e personalizado; � o projeto de Dokku se baseia no Docker e dispõe de ganchos para plug-ins para estender o pequeno núcleo do projeto e personalizar as implantações para seus aplicativos; � o projeto de Convox Rack é um PaaS de código aberto projetado para ser execu- tado com base nos serviços da AWS, da Amazon. Vantagens e desvantagens Segundo Chandrasekaran (2014), a principal vantagem em utilizar PaaS reside em sua discrição em relação às complexidades encontradas para sua manu- tenção, assim como sua infraestrutura, o que possibilita ao desenvolvedor se concentrar na tarefa proposta de desenvolvimento. Outras vantagens e desvantagens da utilização do PaaS estão descritas no Quadro 1. Vantagem Desvantagem Fácil desenvolvimento e implan- tação (deployment): o PaaS fornece as ferramentas de desenvolvimento e teste necessárias para desenvolver, testar e implantar software em um único local. Após o desenvolvimento, a maioria dos serviços de PaaS execu- tará automaticamente o processo de teste e implantação. Bloqueio de fornecedor: a principal razão para o bloqueio de fornecedor consiste na falta de padrões, já que não existe um padrão comum entrediferentes provedores de PaaS. Outro motivo são as tecnologias proprietá- rias usadas pelos provedores de PaaS, que impedem a migração dos aplica- tivos de um provedor PaaS a outro. Quadro 1. Vantagens e desvantagens no uso de PaaS (Continua) PaaS (plataforma como serviço)10 Vantagem Desvantagem Custo reduzido: não é necessária a compra de ferramentas de desenvol- vimento e teste se os serviços de PaaS forem selecionados. O modelo permite que os desenvolvedores aluguem o software, plataformas de desenvol- vimento e ferramentas de teste para desenvolver, criar e implantar o aplica- tivo. Além disso, não exige uma infra- estrutura de ponta para desenvolver o aplicativo, reduzindo, assim, o custo total de propriedade da empresa de desenvolvimento. Segurança: um dos principais problemas encontrados nos provedores de PaaS. Nesse sistema, normalmente os dados são armazenados em servidores de terceiros. Ao selecionar o provedor de PaaS, o desenvolvedor deve revisar as políticas de uso, de conformidade e de segurança do provedor de PaaS em relação aos seus próprios requisitos de segurança Suporte a desenvolvimento ágil: a maioria dos aplicativos desenvolvidos na nova geração usa metodologias ágeis, cenário em que os provedores de PaaS se destacam. Pouca flexibilidade: infelizmente, os provedores de PaaS não fornecem aos desenvolvedores sua própria pilha de ferramentas. Em sua maioria, é oferecido suporte a várias linguagens de programação, além de serviços a banco de dados e ferramentas de suporte à programação Trabalho em conjunto: os serviços PaaS oferecem suporte a desenvolve- dores de diferentes locais para traba- lharem juntos no mesmo projeto. Fácil uso: alguns desenvolvedores podem não estar familiarizados com as interfaces fornecidas pela plataforma de desenvolvimento de aplicativos, o que dificulta o trabalho. Contudo, o PaaS fornece uma ampla variedade de ferramentas clientes, como CLI, CLI da web, UI da web, API e IDE. Quadro 1. Vantagens e desvantagens no uso de PaaS (Continuação) (Continua) 11PaaS (plataforma como serviço) Vantagem Desvantagem Despesas de manutenção: em aplicativos locais, empresas de desenvolvimento ou fornecedores de software são responsáveis por manter o hardware subjacente, criando a necessidade de ter administradores qualificados para manter os servido- res. Essa sobrecarga é eliminada pelos serviços PaaS, pois a infraestrutura subjacente é mantida pelos provedo- res de infraestrutura. Isso dá liberdade aos desenvolvedores para trabalhar no desenvolvimento de aplicativos. Aplicativos escaláveis: a maioria dos aplicativos desenvolvidos usando serviços de PaaS é de web ou SaaS, com boa flexibilidade de acesso a re- cursos extras (conforme solicitado). Os serviços PaaS fornecem escalabilidade integrada ao aplicativo desenvolvido usando a própria plataforma de PaaS. Quadro 1. Vantagens e desvantagens no uso de PaaS (Continuação) Diferenças entre IaaS e PaaS Embora o PaaS integre o modelo IaaS, os desenvolvedores não precisam se preocupar quanto aos componentes de infraestrutura (p. ex., hardware, inter- net). Conforme Buyya, Vecchiola e Selvi (2013), em diversos provedores de PaaS, normalmente são inclusos pacotes de infraestrutura, e uma das maiores preocupações sobre soluções PaaS se dá pelo bloqueio desse serviço pelos fornecedores, o que não acontece normalmente em IaaS. Em sua maioria, fornecedores de IaaS provêm servidores que podem ser altamente customi- zados em relação à pilha de software instalados. Já em ambientes de PaaS, os provedores entregam uma plataforma para desenvolvimento de aplicações com um conjunto de bibliotecas e API bem definidas, embora possam ter um número muito específico sobre a quantidade de execuções, o que pode se tornar PaaS (plataforma como serviço)12 um desconforto caso o desenvolvedor não disponha de muitos recursos para manter ou ampliar o seu pacote. Ainda, do ponto de vista financeiro, Buyya, Vecchiola e Selvi (2013) ressaltam que, embora as soluções IaaS permitam mudar o custo do capital para os custos operacionais por meio da terceirização, as soluções PaaS pos- sibilitam conhecer o custo de desenvolvimento, implantação e gerenciamento de aplicativos, o que contribui no gerenciamento de redução dos riscos, visto a constante atualização das tecnologias, transferindo o custo de atualização da tecnologia para o fornecedor de PaaS. ANTONOPOULOS, N.; GILLAM, L. (ed.). Cloud computing: principles, systems and ap- plications. London: Springer, 2010. 382 p. (Computer communications and networks). BUYYA, R.; VECCHIOLA, C.; SELVI, S. T. Mastering cloud computing: foundations and applications programming. Waltham: Morgan Kaufmann, 2013. 468 p. CHANDRASEKARAN, K. Essentials of cloud computing. Boca Raton: CRC Press, 2014. 407 p. MAHMOOD, Z. (ed.). Cloud computing: methods and practical approaches. London: Springer, 2013. 347 p. RAJ, P.; RAMAN, A. Software-defined cloud centers: operational and management tech- nologies and tools. London: Springer, 2018. 242 p. SHARMA, S. The DevOps adoption playbook: a guide to adopting devops in a multi- -speed IT enterprise. New York: Wiley, 2017. 416 p. 13PaaS (plataforma como serviço)