A computação sem servidores é um modelo de execução baseado em nuvem que permite que os aplicativos sejam hospedados como um serviço, sem a necessidade de manter um servidor.

O provedor de serviços mantém a alocação de recursos no servidor e o usuário é faturado com base na utilização real. O foco muda para a aplicação central que se está criando e a infra-estrutura é tratada exclusivamente pelo provedor de serviços. A computação sem servidor também é conhecida como Função como Serviço (FaaS).

Em outras palavras, PHP sem servidor é a implementação de computação sem servidor com um backend PHP para lhe dar um exemplo.

Neste guia, vamos ver de perto o que significa PHP sem Servidor, suas principais características e prós versus contras para lhe proporcionar uma melhor compreensão desta abordagem em relação à computação em nuvem.

Especificamente, vamos analisar o conceito de computação sem servidor, seus casos de uso e escopo, vantagens e desvantagens, uma simples implementação do PHP sem servidor com Bref e o status do PHP sem servidor nos três grandes (Amazon, Microsoft, e Google).

Pronto? Vamos começar!

Tradicionalmente, você precisava do hardware de um servidor para configurar uma aplicação na Internet. A máquina (ou máquinas) do servidor estaria fisicamente conectada à Internet para que alguém pudesse acessar sua aplicação. A manutenção do servidor era um assunto caro.

Em seguida, a evolução dos serviços de hospedagem permitiu aos webmasters comprar espaço de hospedagem – cada servidor poderia conter várias aplicações. Isto reduziu os custos.

Com o aumento da computação em nuvem, as economias de escala reduziram ainda mais os custos, pois você poderia alugar uma pequena quantidade de espaço em uma grande fazenda de servidores remotos. Na verdade, a computação sem servidor permite que você pague apenas pelos serviços que utiliza. Quando não está em uso, você praticamente não está utilizando nenhum espaço ou recurso na nuvem.

A computação sem servidores simplifica o processo de desenvolvimento de software: permite a uma organização focada unicamente no desenvolvimento sem se preocupar com a implantação, manutenção e dimensionamento do servidor.

PHP Sem Servidor: O Básico

Tendências para o termo "sem servidor" no Google
Tendências para o termo “sem servidor” no Google

Para implantar uma aplicação PHP sem servidor, você deve primeiro explorar o conceito de computação sem servidor. Embora o termo serverless tenha aparecido pela primeira vez neste artigo sobre o futuro do desenvolvimento de software a partir de 2012 no ReadWrite, ganhou popularidade com o lançamento do AWS Lambda em 2014.

Nesta seção, vamos nos concentrar em alguns conceitos-chave relacionados à computação sem servidor e tentar responder a uma pergunta comum que envolve esta tecnologia: é realmente um “menos” servidor?

Características do PHP sem Servidor

A implementação é uma tarefa fácil sem a gestão do servidor. Você simplesmente carrega o seu código para o servidor e o resto é tratado pelo fornecedor. A tecnologia Serverless permite que você tenha funções agnósticas de linguagem, interagindo uns com os outros.

Por exemplo, se você tiver uma aplicação de mensagens, o módulo de login pode ser codificado em um idioma e a função que atualiza seu status pode ser codificada em um idioma diferente.

Embora isto ainda seja possível sem hospedagem sem servidor, é definitivamente mais difícil de interagir. Sempre que uma ação aciona a sua função, uma instância se desdobra para lidar com ela.

Este processo de desova de uma instância pode ser “quente”, onde você usa uma instância existente, ou “frio”, onde você inicia uma nova instância. Há um ligeiro atraso neste processo, especialmente um início frio, em comparação com a hospedagem tradicional, onde o seu servidor está sempre em modo standby para lidar com os pedidos.

No entanto, a situação entre a hospedagem sem servidor e o tradicional torna-se exactamente o oposto quando se tem um grande número de pedidos para tratar. A escalabilidade vem inerentemente com a tecnologia serverless. Se você tiver uma necessidade repentina de mil pedidos simultâneos, o fornecedor irá cuidar deles sem nenhum esforço ou configuração extra da sua parte.

O PHP Sem Servidor é Mesmo Sem Servidor?

Não deixe que o termo “sem servidor” o confunda. Isso não significa que o termo “server” não existe. Quando você usa uma aplicação sem servidor, há um servidor em segundo plano que processa sua entrada e calcula a saída necessária.

O “-less” está presente no termo sob a perspectiva do desenvolvedor, que nunca está exposto a vários elementos do servidor. Portanto, se você implantar uma aplicação PHP sem servidor, há um servidor real rodando na nuvem que atende às solicitações.

BaaS vs Arquiteturas sem Servidor

Embora “computação sem servidor” não esteja bem definida, também pode se referir a aplicativos BaaS (Backend as a Service). BaaS também se refere a um modelo de computação em nuvem, no qual as operações do servidor são terceirizadas e um desenvolvedor só precisa se concentrar na criação e manutenção do software.

A principal semelhança entre BaaS e Serverless é o fato de que o desenvolvedor não se concentra no gerenciamento do servidor. Muitas organizações fornecem pacotes BaaS e FaaS sob o mesmo guarda-chuva.

Aqui estão as principais diferenças entre o BaaS e a computação sem servidor:

  • Componentes: As aplicações BaaS são semelhantes às suas contrapartidas tradicionais, um desenvolvedor não pode fazer alterações na sua estrutura para se adaptar ao BaaS. No serverless, a aplicação é dividida em partes lógicas chamadas funções, e cada uma destas funções responde a um evento e realiza uma tarefa específica.
  • Escalabilidade: A escalabilidade é um componente crucial em uma aplicação sem servidor – mais recursos são alocados com um aumento no tráfego. Não é um módulo necessário para aplicações BaaS, embora alguns provedores de serviços o forneçam como um add-on.
  • Gatilhos: Uma aplicação sem servidor é ativada por eventos, o que significa que uma determinada atividade aciona a aplicação toda vez que ela ocorre. Por outro lado, uma aplicação BaaS pode estar rodando em segundo plano, utilizando recursos continuamente como uma aplicação tradicional.
  • Arquitectura Modular: Na arquitetura sem servidor, é possível que várias funções de uma aplicação residam e sejam executadas em diferentes servidores, mas rodem sem problemas devido à sua integração. Uma aplicação BaaS pode ou não seguir esta estrutura.

PHP Sem Servidor: Casos de Uso

Temos discutido vários aspectos da computação sem servidor, e como ela é diferente do BaaS. Embora tenhamos abordado o básico da computação sem servidor, deixe-nos explorar situações em que você pode desejar empregar tal arquitetura.

Talvez você tenha percebido que pode não ser uma boa idéia hospedar aplicações complexas em tecnologias sem servidor. Entretanto, mesmo se você decidir não implantar uma aplicação completa através do PHP sem servidor, você pode implantar módulos.

Nesta seção vamos discutir dois exemplos de implementações de uma pilha sem servidor: bancos de dados e armazenamento de arquivos.

Uma base de dados sem servidor é uma base de dados on-demand que lhe permite executar consultas sempre que precisar delas. O escalonamento é fácil devido à pilha sem servidor e o fornecedor cobra do usuário apenas pelo tempo em que ele utiliza o recurso.

Amazon Aurora e Google Cloud Datastore são exemplos de bancos de dados sem servidores disponíveis no mercado atualmente. Um sistema de armazenamento de arquivos sem servidor é implementado como lojas de objetos. Os arquivos não são tratados como uma hierarquia em um sistema de arquivos, mas como objetos, que contêm os dados do próprio arquivo e seus metadados. O armazenamento e a recuperação são feitos através de uma API do tipo REST.

O IBM Cloud fornece um serviço de armazenamento de objetos. Outros casos de uso comum de aplicações sem servidor são APIs e backends móveis, cujos desenhos são baseados em pequenas funções lógicas e interdependentes.

PHP Sem Servidor: Vantagens

Nesta seção, nós observamos as principais vantagens da computação sem servidor e porque ela está ganhando força nos últimos anos.

Custos Reduzidos do Servidor

Teoricamente, a computação sem servidor leva a custos mais baixos em comparação com a hospedagem tradicional. A razão inerente é simples: você está usando o serviço por quantidades específicas de tempo e não há custos de manutenção durante o tempo ocioso. No entanto, se você enfrentar tráfego constante ao longo do tempo, a adoção de uma arquitetura sem servidor pode não levar a muita diferença nos custos.

Implementação mais Fácil

A implementação de um serviço sem servidor não requer que você configure o seu servidor. A implementação de uma aplicação sem servidor também é feita através de funções simples. É mais fácil criar uma versão da aplicação e torná-la disponível na nuvem. Todo o processo de implantação, portanto, é mais fácil e mais eficiente.

Escalabilidade

Em uma configuração tradicional, é preciso fazer muitos esforços para aumentar a escala para atender a um tráfego maior. Por outro lado, o prestador de serviços cuida da alocação de recursos quando há um aumento no tráfego. Consequentemente, é mais fácil escalar para cima quando você implanta uma arquitetura sem servidor.

PHP Sem Servidor: Desvantagens

Embora a computação sem servidor tenha seu conjunto justo de vantagens, é preciso estar ciente de seus potenciais inconvenientes antes de se comprometer com ela.

Desempenho

A principal questão que os usuários destacam com a computação sem servidor é a queda de desempenho. Enquanto ela é orientada por eventos, leva algumas centenas de milissegundos para gerar uma micro-instância para atender a uma solicitação.

Este atraso pode revelar-se significativo para aplicações críticas em termos de tempo. Com o aumento da complexidade de uma aplicação, os componentes que residem em vários locais acrescentam a este retardamento. Esse retardamento pode ser prejudicial à experiência do usuário.

(Leitura sugerida: Introdução à Construção de Websites com Gatsby e WordPress)

Vendor Lock-In

Enquanto a arquitetura sem servidor permite que você se concentre apenas no seu código, o fornecedor obtém o controle total da infra-estrutura. Portanto, você não pode mudar o seu fornecedor se você for sem servidor, pois a migração pode ser uma tarefa difícil.

Depuração

Os fornecedores cuidam da implantação de aplicações sem servidor de ponta a ponta. Portanto, um desenvolvedor deve depender do fornecedor para fornecer logs apropriados para a depuração. O processo de depuração de uma aplicação sem servidor para identificar a causa raiz também é difícil.

PHP Sem Servidor: Começando com Bref na Lambda

Embora tenhamos explorado a arquitetura serverless, veremos agora o que você precisa para implantar uma aplicação PHP através de um serviço serverless.

Como você já deve ter adivinhado, a implantação de uma aplicação sem servidor é altamente específica para o fornecedor. Portanto, este post tenta abordar as implementações de uma aplicação PHP sem servidor na Amazon AWS. Bref, ou breve em francês, é um pacote Composer que permite que você implemente aplicações PHP no AWS através do Lambda.

Bref está em constante evolução, portanto você provavelmente deve verificar a matriz de maturidade do Bref para avaliar se é uma boa idéia portar sua aplicação para uma arquitetura sem servidor.

Pré-Requisitos para PHP Sem Servidor com Bref

Primeiro, vá para a Amazon AWS e crie uma conta. Você vai precisar dela para implantar sua aplicação. Em seguida, precisa de instalar a estrutura sem servidor para gerir a sua implementação.

npm install -g serverless

Em seguida, gere o seu par de chaves públicas-privadas no AWS e configure localmente a estrutura sem servidor.

serverless config credentials --provider aws --key  --secret 

A seguir, instale o Bref através do Composer:

composer require bref/bref

Antes da implantação, você precisa instalar as dependências do Composer.

composer install --prefer-dist --optimize-autoloader --no-dev

Crie uma Aplicação Hello World em PHP sem Servidor com Bref

Para criar uma simples aplicação “olá mundo” com Bref, vamos escrever uma função que é acionada por um evento e retorna a string “Olá Mundo”.

Primeiro, você deve incluir o script autoload.php do Bref e depois usar sua função lambda. Opcionalmente, você pode declarar uma variável de contexto se quiser acessar dados do contexto.

require __DIR__.'/vendor/autoload.php';
lambda(function ($event) {
 return 'Hello world');
});

Enquanto a função está pronta, você precisa criar um arquivo de configuração serverless.yml. Aqui está um arquivo de configuração básica do guia do Bref.

service: app
provider:
 name: aws
 runtime: provided
plugins:
 - ./vendor/bref/bref
functions:
 hello:
 handler: index.php
 layers:
 - ${bref:layer.php-73}

Bref cria este arquivo de configuração automaticamente quando você executa o seguinte comando.

vendor/bin/bref init

Agora que você está pronto com sua função e a configuração, você pode invocar a função para verificar se ela funciona como pretendido usando o comando invoke do pacote serverless:

serverless invoke -f hello

Aqui está um guia sobre a implementação local de aplicações sem servidor usando a mesma ferramenta de linha de comando do AWS. Quando seu projeto estiver pronto, você pode implantá-lo usando o comando de implantação de serverless. Use a opção --verbose para obter detalhes sobre o processo de implantação:

serverless deploy

Outras Opções de Implantação para PHP Sem Servidor

O Bref PHP na AWS Lambda é uma escolha popular. No entanto, existem algumas outras opções para as suas aplicações PHP sem servidor.

O Vapor, lançado pela Laravel em Julho de 2019, é uma plataforma de implementação sem servidores para a Laravel na AWS Lambda. Vapor converte sua aplicação Laravel em uma única função lambda. Enquanto o Azure serverless não suporta oficialmente PHP, você ainda pode tentar usar este exemplo de implantação.

Resumo

Aqui estão aspectos chave que você deve tirar deste guia em PHP sem servidor:

  • Antes de considerar usar o PHP sem servidor para sua aplicação, certifique-se de que você está totalmente ciente do que é computação sem servidor, suas vantagens e inconvenientes.
  • Há três fatores primários que você deve considerar ao portar sua aplicação para um framework PHP sem servidor. Considere a complexidade da aplicação, a criticidade temporal dos seus componentes, e a escalabilidade no futuro.
  • O PHP sem servidor ainda é bastante novo no mercado. Certifique-se de rodar um piloto com Bref em um dos fornecedores antes de se comprometer totalmente com ele.

Embora o serverless esteja a tornar-se muito popular, também requer uma profunda compreensão de como a tecnologia funciona para tirar partido dela.

Para todos os outros casos, o uso de serviços gerenciados de hospedagem WordPress como Kinsta pode simplificar tremendamente o seu fluxo de trabalho.

 

Shaumik Daityari

Shaumik is a data analyst by day, and a comic book enthusiast by night (or maybe, he's Batman?) Shaumik has been writing tutorials and creating screencasts for over five years. When not working, he's busy automating mundane daily tasks through meticulously written scripts!