PaaS – Platform as a Service (Plataforma como Serviço)
O PaaS fica entre o IaaS e o SaaS, e proporciona uma plataforma mais robusta e flexível para a utilização de diversos recursos de tecnologia.
O usuário pode instalar e gerenciar suas próprias aplicações, desenvolvidas por ele ou adquiridas de terceiros, utilizando as ferramentas e bibliotecas oferecidas pelo provedor. Isso dá muita flexibilidade na utilização de softwares.
Ou seja, as aplicações que rodam numa plataforma como serviço são desenvolvidas especificamente para ela.
Por exemplo, considere uma aplicação desenvolvida para a plataforma Google App Engine utilizando uma linguagem de programação padrão, digamos, Python. Para poder rodar em outra plataforma que suporte essa linguagem, como o Heroku, a aplicação precisaria ser adaptada.
O uso de PaaS elimina a necessidade de comprar, configurar e gerenciar recursos de hardware e software. A infraestrutura é invisível para o desenvolvedor, mas ele pode configurar as aplicações e, eventualmente, aspectos referentes ao ambiente utilizado por elas. Além dos já citados Google App Engine e Heroku, outro exemplo de PaaS é o Microsoft Azure Cloud Services.
Por onde começar a usar PaaS
PaaS, Plataform as a Service, é o segundo modelo de serviços clássico de computação em nuvem.
O que a empresa gerencia unicamente são suas aplicações e seus dados. Que rodam nos servidores remotos dos provedores. Há hoje em dia dezenas de provedores.
Alguns permitem a personalização de programas de software existentes para ambientes de desenvolvimento e “deployment” (instalação). Muito provedores, como a Microsoft, comercializam ambientes com “add-ons” para desenvolvimento em conjunto com seus programas de software.
Se quiser ter uma ideia rápida, basta consultar um site de comparação de provedores e será possível encontrar rapidamente aqueles que mais se adequam às suas necessidades.[1] Os sistemas que rodam na nuvem, nesse caso, vão de programas de contabilidade padrão até softwares desenvolvidos pela própria empresa.
Alguns dos benefícios e vantagens são iguais aos das demais plataformas, mas vale a pena reforçar.
Benefícios e Vantagens basicos do PaaS
São dois os maiores benefícios do PaaS: redução de custos e aumento da velocidade de desenvolvimento e deployment. Ganha-se agilidade com flexibilidade. Do ponto de vista do negócio, os benéficos do PaaS são claros:
- Aumento do foco no negócio e alavancagem do empreendedorismo interno: muitas empresas não querem gastar seu tempo e dinheiro com manutenção e seleção de sistemas, elas querem é realmente focar ainda mais de perto o seu negócio principal (core). PaaS viabiliza este objetivo e liberta os desenvolvedores de TI para fazer experiências com os recursos de computação em nuvem, buscando soluções novas e criativas que podem levar a empresa a fazer ainda mais diferença nos seus mercados de atuação. Ou seja, TI passa a ter um papel de agente de mudança versus manutenção do status quo;
- Aceleração do tempo de ida a mercado (“time to market”): as equipes de desenvolvimento ficam focadas na aplicação final e não em software de base e de testes, muito menos em questões de hardware, rede , segurança, etc.;
- A empresa torna-se mais flexível e rápida para reagir e acompanhar as mudanças e as oportunidade de mercado, pois é mais rápido testar e implantar aplicações. É possível testar diferentes configurações, usar múltiplas máquinas em diferentes localidades, rodar testes de “stress” e medir desempenhos, compatibilidades e tempo de resposta – de uma forma que seria praticamente impossível em um data center próprio. Resultado prático: maior rapidez na testagem e na instalação das aplicações;
- A empresa deixa de ter custos e investimentos que tipicamente são necessários quando se faz desenvolvimento e deployment usando o próprio data center.
- A diminuição de investimentos em hardware, softwares de base, redes etc. libera capital da empresa, tornando-a potencialmente mais competitiva.
- É possível ter um número menor de pessoal de TI trabalhando na empresa.
Outras Vantagens
Serviços completos para o Ciclo de Vida das aplicações
Os provedores oferecem serviços que contemplam o ciclo de vida completo das aplicações, desde sua construção até a produção efetiva, quando passam a ser entregues como aplicações web distribuídas na internet. Há serviços para “deploy”, testes e armazenamento no mesmo ambiente de desenvolvimento integrado (IDE). É possível ter múltiplos usuários simultaneamente utilizando a mesma IDE.
Custos Variáveis
Sendo uma oferta típica de computação em nuvem, também segue o modelo de “pay per use”, onde não há necessidade de comprar software de base (sistemas operacionais e outros), middleware ou mesmo pagar licenças anuais. O pagamento também é com base no uso.
Escalabilidade e Elasticidade – Alocação dinâmica
Estes serviços em nuvem também apresentam estas características, proporcionando aos usuários a mesma eficiência e experiência independentemente da carga das aplicações e de seu volume de uso. Os recursos alocados podem ser alterados e ampliados com a frequência necessária, inclusive geograficamente. Isso é importante para o ambiente cada vez mais competitivo das empresas. As equipes de TI precisam ter muita flexibilidade para testar e colocar no ar novos recursos numa aplicação ou simplesmente implementar um novo serviço no mercado. Ou ainda fazer testes num pequeno grupo de clientes antes de tornar os produtos e serviços disponíveis para o mundo.
Mobilidade dos Desenvolvedores
A mobilidade dos programadores aumenta, pois tudo é acessível via ferramentas WEB. Muitos desenvolvedores de software ágil buscam o ambiente de trabalho do PaaS, que ajuda a implementar aplicações que rapidamente são testadas e colocadas em produção. O amplo leque de ferramentas disponíveis torna possível adaptar o ambiente de programação num conceito de software que está sempre em evolução. Os desenvolvedores podem estar dispersos ou mudarem a vontade seu local de trabalho. Times de desenvolvimento dispersos geograficamente podem facilmente colaborar num mesmo projeto.
Casamento perfeito com desenvolvimento ágil de software
As metodologias de desenvolvimento ágil em geral se baseiam em desenvolvimentos interativos e incrementais. O progresso da aplicação demanda muitas interações com a plataforma, que tem que ser redimensionada para os serviços agregados. Além disso, os testes podem rodar temporariamente em plataformas que não afetam a plataforma que está sendo usada para a produção, até que se tenha certeza que a nova versão pode de fato entrar em produção. Isso acelera a construção e a implantação de novas aplicações.
Diminuição de Erros por Descuidos
Hoje em dia a pressão dos usuários sobre os desenvolvedores é muito forte, exigindo que mudanças sejam feitas e completadas rapidamente. Essa pressão sobre as equipes de desenvolvimento, que também gostariam de terminar tudo rapidamente, acaba provocando algumas imperfeições com relação aos softwares e à infraestrutura que juntos suportam as aplicações finais. Usando PaaS, essas imperfeições diminuem ou desaparecem uma vez que a plataforma pode ser totalmente testada. Desenvolvedores não ficam perdendo tempo com middleware e outras tarefas entediantes que potencializam erros.
Redução no TCO (“Total Cost of Ownership”)
Como não há necessidade de comprar todo o sistema, plataformas, ferramentas e kits necessários para construir, testar e rodar as aplicações finais (pois tudo é alugado com base no tempo de uso), isso também muda o modelo de investimentos (CAPEX) para despesas operacionais (OPEX). Liberando capital para investimentos mais nobres. Exemplos:
- “Overhead de servidores e armazenamento”: escrever e testar novas aplicações é uma atividade que naturalmente consome muitos recursos computacionais e espaço extra de armazenamento de dados. As condições de teste chegam a ser muito mais severas que as condições de uso efetivo. Quando os testes terminam, os equipamentos do data center próprio entram em hibernação e, mesmo que não estejam sendo usados, requerem ainda gastos com energia, refrigeração e mesmo manutenção. Resultado: a empresa gasta um dinheiro significativo com recursos que não estão sendo utilizados. Com o uso de PaaS, a necessidade desses recursos extras desaparece. Ferramentas de teste também podem ser alugadas – só gerando custos nos períodos de teste.
- Recursos de Banda de Comunicação/Rede: se feitos num data center próprio, os processos de deployment e testes podem consumir todos os recursos de banda da rede, afetando os sistemas em produção. Os desenvolvedores precisam forçar e sobrecarregar as novas aplicações em diferentes circunstâncias para saber como elas vão se comportar no futuro, em diferentes cenários de produção. Com PaaS tudo isso pode ser feito na nuvem e não no data center interno.
- Manutenção do Software e Hardware: os custos de gerenciar alterações e atualizações de software, bem como a manutenção do hardware, são geralmente significativos, consumindo muito tempo e dinheiro. No PaaS o provedor arca com todos esses compromissos para o hardware e todos os softwares de base, além de cuidar de vários aspectos de segurança para garantir o funcionamento contínuo de tudo, sem interrupções de seus serviços.
- Pessoal de Suporte: não há como manter os softwares e sistemas atualizados e rodando o tempo todo, bem como arrumar os “bugs” quando eles aparecem, sem que a empresa tenha uma parte da equipe de TI disponível para essa tarefa, que envolve não só a atualização dos softwares básicos como redes, segurança e assistência aos usuários com problemas em suas máquinas. Com o PaaS grande parte deste esforço é reduzido, simplificando e reduzindo esse tipo de suporte. A empresa pode reduzir a equipe ou redirecioná-la para atividades mais nobres.
- Qualificação de pessoal simplificada: ferramentas de desenvolvimento e middleware são complexas e não são padronizadas; fazer sucessivos deploys de uma aplicação requer um grau elevado de diferentes habilidades além de experiência acumulada. O PaaS diminui os requisitos de habilidades para o deploy das aplicações e remove gargalos causados pela espera da disponibilidade de especialistas para assistência com ferramentas específicas, que em geral demandam uma longa curva de aprendizagem.
Apesar das vantagens e benefícios que o PaaS traz para todo tipo e porte de empresa, curiosamente, o PaaS tem sido muito utilizado por empresas pequenas que desenvolvem e vendem seu próprio software através da internet. Uma possível explicação é o fato das empresas menores não terem condições financeiras de bancar os investimentos em infraestrutura e licenças de software necessárias para lançar ou ampliar a oferta de seus aplicativos próprios. Nesse sentido, os provedores de PaaS são uma excelente alternativa.
>>Leitura recomendada: Descubra por que adotar frameworks ágeis não é a mesma coisa que ter business agility
Barreiras para Adoção de PaaS
Um dos principais benefícios de Cloud Computing é a agilidade. Para a empresa, o valor agregado de levar novos serviços e produtos para o mercado, em tempo recorde, pode ser muito maior que o benefício de redução de custos.
PaaS por sua vez gera uma agilidade no desenvolvimento e na implantação de softwares como nunca foi possível, para qualquer número de clientes, sem qualquer preocupação com infraestrutura. Deixando a equipe de TI livre para focar nos requisitos do negócio muito mais do que ficar lidando com requisitos técnicos. Então fica a pergunta: se a agilidade é a rainha das vantagens em Cloud Computing e o modelo PaaS é o rei dos modelos de serviço, em agilidade, porque médias e grandes empresas são tão lentas para abraçar esse conceito, abrindo espaço para empresas menores se anteciparem no mercado???
Mensagens de Marketing Confusas (dos provedores)
Se você perguntar a 10 pessoas diferentes o que é PaaS terá 10 respostas diferentes. Porque há ofertas de mercado que vão do fornecimento de soluções para o desenvolvimento de aplicativos até ofertas muito mais fechadas, voltadas para áreas específicas, como BigData, Mobile, DevOps e outras. Provedores grandes como a Amazon (AWS) estão tornando difusa a linha que separa IaaS de PaaS, com a oferta de APIs robustas que permitem muitas personalizações e não funcionam de fato como uma plataforma de desenvolvimento “completa” e “pronta”. Para tornar as coisas ainda mais confusas, cada provedor tem sua própria definição do que seja PaaS, não havendo um padrão de definição – o que torna quase impossível comparar com exatidão as soluções que são oferecidas.
Maturidade do Padrão PaaS
Se analisar os 3 tipos de ofertas clássicas de computação em nuvem (IaaS, PaaS e SaaS), veremos que PaaS é o menos maduro no mercado. O SaaS tem sido adotado há anos pelas empresas para rodar fora de casa funções que não são core para o negócio, como CRM, folha de pagamento, contabilidade fiscal, etc. O SaaS está ainda no estágio inicial de maturidade, mas teve uma taxa de adoção muito elevada nos últimos anos, por empresas de todos os portes. Já o PaaS teve pouca penetração nas médias e especialmente nas grandes empresas.
Ausência de recursos operacionais
O fato da adoção em grandes empresas ser ainda muito pequena, as vezes restrita a pequenos times de desenvolvimento, talvez explique a ausência de alguns recursos que motivariam seu emprego em proporções muito maiores na área de produção – e não de desenvolvimento. A promessa original do PaaS foi tirar da frente dos desenvolvedores tudo que não fosse puramente escrever códigos de suas aplicações, deixando de lado infraestrutura e softwares para as operações. Empresas iniciantes (startups) e pequenas empresas amaram o conceito porque poderiam rapidamente construir e instalar suas aplicações com pouca gente, baixa complexidade e sem ter que investir e gerenciar um data center próprio.
Empresas maiores não abraçaram esse conceito na medida em que ele não dá garantias firmes de SLAs (“service level agreements”). Muitas empresas também não estão preparadas para mover para a nuvem pública toda a carga de seus sistemas – e acabaram adotando soluções privadas ou mesmo híbridas. E, convenhamos, quanto maior a empresa, mais recursos ela tem para investir, não sendo o fator investimento aquele que vai motivá-la de fato a migrar para a nuvem. As empresas maiores também são reconhecidamente menos ágeis – e agilidade neste caso não é um fator muito motivador. Segurança, certeza de entrega, disponibilidade dos serviços são mais importantes porque colocam mais em risco o seu negócio.
O problema dessas soluções híbridas ou privadas é que, essencialmente, elas atendem muito bem a área de desenvolvimento mas são ainda muito pobres para a área de produção, negligenciado as necessidades das equipes de operações.
Java versus .Net
A maioria dos provedores PaaS afirma dar suporte a muitas linguagens de desenvolvimento tais como Java, Ruby, PHP, Python, Perl, Node, .Net, etc. No mundo real, de grandes empresas, essencialmente Java e .Net são hoje as linguagens de desenvolvimento mais empregadas e que, por isso, realmente precisam de suporte. O fato é que nenhum provedor é excepcionalmente bom para dar verdadeiro suporte às duas linguagens. No mundo .Net, a Microsoft e a Apprenda and Microsoft são duas empresas que se destacam com o suporte .Net. As duas dão suporte a outras linguagens, mas seu ponto forte é mesmo .Net. O restante dos provedores PaaS providers dão suporte para a maioria das linguagens open source – mas oferecem um limitado (ou nenhum) suporte para .Net.
Segurança dos Dados
Como ocorre com as outras soluções de computação em nuvem, grande parte das empresas ainda tem baixa confiança no nível de segurança que é de fato oferecido pelos provedores de PaaS. Muitas empresas ainda são céticas e não conseguem sequer imaginar suas aplicações fora da empresa, em uma outra empresa. Algumas empresas privadas e mesmo públicas precisam assegurar níveis de governança de TI muito altos com relação a privacidade, segurança e retenção de dados – muito antes de se decidirem em favor do uso efetivo dos serviços de PaaS.
Flexibilidade “Limitada”
As soluções de PaaS ainda não tem toda a flexibilidade que as soluções de IaaS oferecem. Os contratantes de PaaS não podem criar e apagar múltiplas máquinas virtuais com total facilidade. Adicionalmente, se compararmos com as ofertas de SaaS (Software as a Service), PaaS não é um produto tão completo quanto é o SaaS. Porque a empresa precisa ainda colocar um pequeno esforço para projetar, criar e testar os programas antes de serem liberados para a produção e instalados para os usuários finais
Integração com outros sistemas rodando “in-house”
As vezes não é simples migrar uma aplicação para PaaS porque ela se relaciona ou está fortemente acoplada a outras aplicações da empresa. Essa integração da aplicação em nuvem com sistemas ainda rodando no data-center próprio pode tornar os trabalhos bastante complexos ou exigir uma outra estratégia de migração.
Cultura de TI na empresa
De todas as barreiras, talvez esta seja a maior. O fato da computação em nuvem potencializar agilidade e flexibilidade nas empresas não significa que ela as torna ágeis e flexíveis. Não existe essa relação de causa e efeito. Abraçar soluções da nuvem sem mudar práticas e processos tradicionais de TI pode levar, isso sim, a retornos sobre os investimentos que são irrisórios.
Esta questão pode ser melhor entendida se admitirmos que nas empresas existe um gap natural de expectativas entre pessoas de desenvolvimento e pessoas de operações. As expectativas dessas duas equipes, principalmente em empresas médias e grandes, não estão alinhadas. Os desenvolvedores querem sair da ideia para o código, do código para a produção, o mais rapidamente possível. O pessoal de operações quer implantações que sejam estáveis e duradouras, tanto quanto possível. Desenvolvedores contam com mudanças rápidas. Operadores contam com estabilidade e um mínimo de mudanças.
Essa dicotomia acaba fazendo com que a empresa se mova mais devagar. É cultural, é natural. A consequência, enquanto estas questões não são resolvidas internamente, é que isso causa uma espécie de paralisia na empresa que, se analisarmos bem, afeta seus resultados. Se evita adotar novas tecnologias, como o PaaS, deixando de abraçar novos métodos e ferramentas que acelerariam processos e procedimentos, alavancariam produtos e serviços. Ou ainda “empurram para a frente” (o futuro) a introdução de projetos importantes.
>>Leitura recomendada: Modelo de Tuckman: como construir equipes produtivas
Por onde começar?
As opções de PaaS no mercado incluem pacotes de desenvolvimento “standalone” que permitem a geração de ambientes de programação personalizados. As plataformas de entrega das aplicações tem foco no suporte à instalação de programas para clientes – e podem ou não incluir recursos e funcionalidades de desenvolvimento como “debugging” (depuração) e testes.
Pacotes mais abrangentes oferecem suporte “end-to-end”, que vão do ambiente de programação até servir as aplicações para os usuários.
Como há muita oferta, com muitas opções, a escolha do provedor é importante, pois precisa haver um casamento da oferta com o perfil de necessidades da sua empresa.
Um bom jeito de começar é mapeando as necessidades específicas de sua empresa e determinando um limite para gastos (budget) em PaaS.
Ao considerar alternativas:
- Leia artigos on-line e procure referências sobre o provedor na internet;
- Examine cuidadosamente fatores técnicos da oferta dos serviços, como disponibilidade dos servidores (“server uptime”);
- Assegure-se de que o modelo técnico de suporte do provedor vai ao encontro de suas necessidades de desenvolvimento, testes, instalação e disponibilização da aplicação para seu parque de usuários;
- Comece por sistemas que tem o menor grau de acoplamento ou interfaceamento com outros sistemas da empresa. Isso simplificará tudo: testes e instalação.
Se sua empresa desenvolve software ou tem uma equipe que personaliza programas de softwares já existentes, o modelo PaaS pode ajuda-lo a atingir seus objetivos dentro do orçamento e em tempo recorde. PaaS normalmente começa pequeno.
Mercado PaaS
Dos 3 tipos de ofertas na nuvem, PaaS representa o menor segmento de mercado hoje (15%) e deverá ter sua participação relativa diminuída para cerca de 13% em 2018 (ainda que sua taxa média anual de crescimento seja de 21%). Ou seja, seu crescimento é vertiginoso mas inferior ao das demais plataformas, como IaaS e SaaS.
Como os serviços de PaaS facilitam a implantação de aplicações sem o custo e a complexidade de comprar e gerenciar uma ampla gama de softwares e hardwares, as empresas utilizadoras ganham uma tremenda agilidade, o que vai garantir a sua oferta no mercado nos próximos anos. Pode ser que em mercados como o brasileiro, onde vivemos um momento recessivo, o PaaS tenha um crescimento bem maior que a taxa media mundial nos próximos anos, na medida em que as empresas dispõem de pouco capital para investimentos em hardware e software e o custo de capital está extremamente alto, se comparado a países desenvolvidos e outros países em desenvolvimento.
As empresas provavelmente evitarão diminuir riscos de imobilização como novos projetos – e esse modelo de oferta é o mais econômico para novas iniciativas.