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.
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, ..).
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.
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.
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.
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).
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.
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.
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.
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.
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.
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