"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como executar PHP na arquitetura AWS ServerLess? Parte O que é sem servidor?

Como executar PHP na arquitetura AWS ServerLess? Parte O que é sem servidor?

Publicado em 2024-11-04
Navegar:408

Lambda, o principal serviço sem servidor da AWS, permite executar código em vários tempos de execução. No entanto, o PHP não está explicitamente na descrição oficial do produto. Isso significa que você não pode executar código PHP em Lambdas? Não, não importa!

Nesta série (derivada de uma palestra que dei ao AWS User Group Poitiers), discutiremos o que é serverless e como fazer com que o PHP (se essa for sua linguagem favorita) seja executado no Lambda.

O que é sem servidor?

Serverless é um paradigma de hospedagem onde o provedor de nuvem dimensiona dinamicamente os recursos alocados para a carga de trabalho do cliente, enquanto gerencia não apenas a infraestrutura física (servidores, resfriamento de energia), mas também até o tempo de execução de execução (patching, ..).

How to run PHP on AWS ServerLess architecture ? Part  What

Em sentido estrito, a computação é alocada para cada solicitação, levando a um modelo de preços de "escala zero" (nenhum recurso é pago por hora, mas apenas proporcionalmente à demanda real), ao mesmo tempo em que fornece alta -disponibilidade.

Isso se soma a outros benefícios da nuvem, principalmente o fato de que tudo vem com uma API, tornando possível a automação.

A soma desses benefícios torna possível ter ambientes efêmeros de ramificação de recursos praticamente gratuitos, aumentando a produtividade do desenvolvedor e o lead time.

How to run PHP on AWS ServerLess architecture ? Part  What

Serverless não se trata apenas de computação!

Existem muitas soluções no ecossistema sem servidor. Quando a computação sem servidor (Lambda) apareceu, em 2014, as filas gerenciadas (SQS) já existiam há uma década e o S3, há 8 anos.

How to run PHP on AWS ServerLess architecture ? Part  What

Observe que no slide acima, o Aurora não corresponde à nossa definição estrita de Serverless, pois não é escalonável para zero (v1 escalonado para zero, mas pode levar alguns minutos para iniciar, com v2 você precisa ter em pelo menos 0,5 ACUs nas instâncias do gravador e do leitor para que o banco de dados esteja pronto para atender consultas.

Você encontrará abaixo uma arquitetura típica para hospedar uma aplicação web envolvendo apenas serviços serverless. Hospedar tal aplicativo pode custar menos de US$ 1/ano para um número limitado de usuários.

How to run PHP on AWS ServerLess architecture ? Part  What

O Serverless é apenas para microsserviços?

Sim.. e não. Ele foi projetado com microsserviços em mente, mas você ainda pode implantar uma arquitetura monolítica (desde que não tenha uma sequência de inicialização de longa duração sempre que um novo ambiente for iniciado).

How to run PHP on AWS ServerLess architecture ? Part  What

Opções sem servidor para resolver desafios comuns com microsserviços: orquestração e coreografia

A arquitetura de microsserviços permite reduzir o acoplamento entre componentes de aplicações (usando linguagens diferentes, por meio de padrões assíncronos, melhorando a escalabilidade ao remover o acoplamento em nível de infraestrutura).

No entanto, quando temos múltiplas funções de propósito único, a implementação da lógica de negócios pode exigir coordenação entre funções. Esta coordenação pode ser implementada usando dois padrões fundamentais.

  • Orquestração: neste padrão, controlamos as invocações da função de forma imperativa. Isso geralmente é usado dentro de um domínio de negócios, quando as funções são entregues por uma única equipe de serviço. Uma abordagem sem servidor para isso é o AWS StepFunction, um fluxo de trabalho/máquina de estado. Há um bom tutorial sobre como coordenar funções Lambda usando StepFunction aqui.
  • Coreografia: esse padrão é mais relevante em cenários entre domínios de negócios, com equipes de serviço separadas, para manter um acoplamento muito limitado. Um barramento de eventos permite que o aplicativo envie eventos por push e assine eventos. Vários consumidores podem se inscrever no mesmo evento e cada consumidor pode filtrar os eventos que precisar. O principal serviço da AWS para isso é o EventBridge. Você terá uma postagem no blog que escrevi sobre isso aqui.

Conhecendo o Lambda

Lambda é a solução de função como serviço da AWS. Com o Lambda, você pode implantar seu código e obter alta disponibilidade e escalabilidade instantâneas, sem se preocupar com a implantação de instâncias e o sistema operacional ou com patches de tempo de execução.

Lambda pode ser usado com invocações síncronas (por meio de um API Gateway, um Application Load Balancer ou um URL de função Lambda) ou invocações assíncronas (respondendo a eventos gerados pela AWS ou pelo usuário).

Ao implantar um Lambda, você escolhe quanta memória ele precisa para executar. A CPU alocada é proporcional. Você então paga com base no número de milissegundos usados. Por exemplo, um Lambda de 128 Mb custa 1,7*10^-9$/ms. São 164 horas de computação antes de você gastar seu primeiro dólar.

How to run PHP on AWS ServerLess architecture ? Part  What

E escalas Lambda. Rápido. Muito mais rápido do que qualquer outra coisa. Chega de erros 429s (ou 500 se sua carga de trabalho não estiver bem protegida) devido à alta variação de tráfego.

How to run PHP on AWS ServerLess architecture ? Part  What

Resolvendo o principal desafio com LambdaLiths: partidas a frio

Os ambientes de execução Lambda processam apenas uma única solicitação por vez e são reutilizados para solicitações subsequentes. Isso significa que, para que uma função Lambda seja dimensionada, ou quando uma função Lambda não for invocada por um tempo, o Lambda terá que iniciar um novo ambiente de execução: isso é uma inicialização a frio.

Se as inicializações a frio forem prejudiciais ao seu aplicativo (novamente, provavelmente é melhor que todo o tráfego fique lento ou atinja 429s), então existem algumas opções. A AWS tem um bom artigo sobre o uso de aquecedores Lambda ou a configuração de simultaneidade provisionada para resolver isso. Além disso, para usuários de Java, os recursos do Lambda SnapStart possibilitam oferecer um bom desempenho de inicialização a frio, capturando instantâneos do microVM após a inicialização da JVM.

E quanto ao suporte PHP?

O FAQ oficial do produto afirma que ele "suporta nativamente código Java, Go, PowerShell, Node.js, C #, Python e Ruby e fornece uma API Runtime que permite usar qualquer linguagem de programação adicional para criar suas funções."

Nas próximas postagens desta série, explicaremos como você pode executar PHP no Lambda aproveitando dois frameworks distintos, Bref e o Lambda Web Adaptor, e comparar as possibilidades oferecidas por cada um deles.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/aws-builders/how-to-run-php-on-aws-serverless-architecture-part-1-whats-serverless-3j3m?1 Se houver alguma violação , entre em contato com study_golang @163.comdelete
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3