Sem servidor
O modelo de computação sem servidor é o serviço de nuvem totalmente gerenciado no qual o provedor de nuvem gerencia a infraestrutura subjacente e aloca e desaloca automaticamente recursos para executar e dimensionar para a demanda imediata do aplicativo. Isso significa que os desenvolvedores não precisam se preocupar com a forma como a infraestrutura de computação subjacente é provisionada. Em vez disso, eles podem se concentrar na implementação de recursos e funcionalidades de negócios no aplicativo. Em suma, os desenvolvedores precisam se concentrar em escrever código para sua lógica de aplicativo, que será implantada em funções e executada em eventos acionados pelo aplicativo ou pelo usuário. O modelo de computação sem servidor é cobrado de acordo com o uso e cobrado de acordo, tornando-o uma escolha mais econômica quando ocorrem alterações inesperadas na carga do aplicativo com frequência.
A computação sem servidor é um desenvolvimento recente na computação em nuvem, que ganhou popularidade significativa nos últimos anos. É popular para o conceito subjacente de execução de código sem gerenciar ou provisionar servidores. As funções da Oracle Cloud Infrastructure (OCI) para implementação de plataformas sem servidor são baseadas no Fn Project de código aberto, que é de código aberto, nativo de contêiner e sem servidor, com a capacidade de ser executado em qualquer nuvem e on-premises.
Benefícios
O Serverless oferece vários benefícios em relação a outros serviços disponíveis na nuvem e tem uma vantagem por causa de:
- Redução da sobrecarga operacional: A computação sem servidor removeu a sobrecarga de gerenciamento de infraestrutura, servidores e rede e mantém as equipes de desenvolvimento focadas em escrever código e desenvolver novas funcionalidades de negócios.
- Tempo de lançamento mais rápido: A computação sem servidor permite um tempo de lançamento mais rápido no mercado, pois as aplicações podem ser implementadas mais rapidamente do que outros serviços de computação oferecidos na nuvem.
- Escalabilidade aumentada: A computação sem servidor é dimensionada automaticamente com base nas demandas de carga de trabalho para ampliação e redução. Qualquer pico de carga cuida de si mesmo.
- Custo efetivo: A computação sem servidor é econômica porque você só precisa pagar pelo tempo em que o código da aplicação está em execução, resultando em economia de custos em relação aos modelos de computação tradicionais.
- Confiabilidade aprimorada: A computação sem servidor tem mecanismos integrados de redundância e failover, o que melhora a confiabilidade das aplicações.
- Maior flexibilidade: A computação sem servidor suporta várias linguagens de programação populares para fornecer flexibilidade aos desenvolvedores. Ele também suporta modelos de implantação, como contêineres e código de gravação implantado na computação sem servidor.
Como Funciona
A computação sem servidor, muitas vezes referida como função como um serviço, permite que os desenvolvedores se concentrem em escrever código e implantar código sem se preocupar com a infraestrutura subjacente necessária para executar o código do aplicativo. Use as etapas a seguir para executar código em implementações sem servidor, como funções da OCI.
- Escreva seu código na linguagem de programação preferida e empacote-o em uma imagem de contêiner da função.
- Forneça a definição da função em func.yaml, incluindo tempo máximo de execução e consumo de memória.
- Envie a imagem do contêiner ao registro do contêiner para extrair antes da execução.
- Faça upload dos metadados da função (restrições de memória e tempo) para o Fn Server.
- Adicione a função à lista de funções na Console.
- Trigger a partir do comando CLI ou trigger externo como solicitação http, programação e serviço de Evento
- Na função de trigger, identifique a imagem do contêiner e extraia-a do registro do contêiner.
- Execute a lógica definida na imagem do contêiner em uma instância de uma sub-rede associada ao aplicativo ao qual a função pertence.
- Após a execução ou o período de inatividade, a imagem do contêiner é removida e os recursos são liberados.
Plataformas
O OCI suporta serverless como função como serviço, conhecido como OCI Functions e OCI Container Instances.
- Funções: Funções é uma plataforma de serviço totalmente gerenciada, multitenant, altamente escalável, sob demanda, que funciona como uma plataforma de serviço criada em infraestrutura de nível empresarial e acionada pelo mecanismo de código aberto Fn Project. Com funções, você pode escrever código em Java, Python, Node, Go, Ruby e C#.
- Instâncias do Contêiner: Instâncias do Contêiner é um serviço de computação sem servidor que permite executar contêineres de maneira rápida e fácil sem gerenciar nenhum servidor. Ele fornece o mesmo nível de isolamento que as máquinas virtuais.
Práticas Recomendadas
O Serverless foi projetado para acomodar picos imprevisíveis na demanda de recursos de carga de trabalho, mas deve ser projetado e implementado com as melhores práticas recomendadas para aproveitar a utilização eficiente.
- Rápido e otimizado: Ele deve ser implementado para executar rapidamente, utilizar recursos com eficiência e evitar dependências desnecessárias.
- Conduzido por evento: O serverless é mais adequado para arquitetura orientada a eventos para iniciar o processamento a partir do gatilho do evento para reduzir custos e melhorar a escalabilidade.
- Implemente com serviços gerenciados: A integração sem servidor com serviços gerenciados reduz as necessidades de complexidade e escalabilidade. Serviços gerenciados, como banco de dados, armazenamento e mensagens, geralmente interagem com serviços sem servidor.
- Monitoramento: Monitore o desempenho e o custo do serverless para otimizar funcionalidades lentas e caras. Aproveite a implementação de monitoramento recomendada pela OCI.
- Segurança: os dados em repouso e em trânsito devem ser criptografados com acesso ao controle para minimizar os riscos e ataques de segurança.
Casos de Uso
O Serverless tem vários casos de uso para necessidades funcionais e de negócios individuais. Os casos de uso comum são:
- Ordens de produção em lote: Processo acionado na programação e frequência predefinidas.
- Aplicativo orientado por evento: Processo iniciado a partir de evento externo, como mensagem ou solicitação http.
- Microsserviços: Implementação de serviço independente fina.
- Modelo de machine learning: Implante modelos em pontos finais de API econômicos e escaláveis.
Movendo sua Carga de Trabalho para Sem Servidor
Mover sua carga de trabalho existente para sem servidor pode ajudar a reduzir custos, aumentar a resiliência e melhorar a escalabilidade. As informações a seguir descrevem as etapas para mover sua carga de trabalho de local para sem servidor.
- Identifique a carga de trabalho que você deseja mover para sem servidor e identifique tamanho, complexidade e dependências.
- Avalie a plataforma sem servidor se uma função for mais adequada ou se uma instância de contêiner for mais apropriada.
- Determine dependências de serviço externo, como banco de dados, armazenamento e mensagens para a carga de trabalho.
- Refatorar o código do aplicativo para otimizar o desempenho e conteinerizado, se necessário.
- Teste o aplicativo quanto à funcionalidade esperada no ambiente sem servidor. Use o ambiente de teste recomendado ou similar.
- Implante o aplicativo na plataforma sem servidor para execução.
- Monitore as métricas de desempenho do aplicativo e a utilização de recursos.
- Otimize o aplicativo, se necessário, para melhorar o desempenho daqui para frente com base nas métricas capturadas do monitoramento.
- Automatize tudo o que for possível usando o pipeline DevOps para build e implantação.
Desafios e limitações
Serverless tem vantagens, mas considere os itens a seguir para implantação de carga de trabalho.
- Início a frio: Serverless são projetados para acionar com base no evento, para que não estejam prontamente disponíveis para iniciar o processamento. Mesmo que eles exijam quantidades significativamente insignificantes de tempo para começar, considere as demandas de latência ultrabaixa.
- Timeout de execução: Serverless é criado para realizar funcionalidade rápida e liberação de recursos. Como resultado, há um tempo limite associado para serverless lidar com cenários imprevistos de bloqueio inativo ou loops e encerramentos infinitos. Esses cenários podem levar à perda de dados e a cenários de estado instáveis.
- Acesso Limitado à Infraestrutura: A computação sem servidor tem acesso mínimo à infraestrutura na qual está sendo executada; portanto, ela precisa depender de serviços externos de gerenciamento de estado ou armazenamento para que as informações persistam.
- Complexidade: A arquitetura tradicional com fluxos de trabalho e dependências complexos pode aumentar o tratamento de complexidade com serverless para depuração e solução de problemas.
Futuro do Serverless
O futuro do serverless envolve eliminar a necessidade de gerenciar infraestruturas complexas e dimensionar manualmente os desafios. Também envolve o tratamento de aumentos inesperados na carga do aplicativo, pagando apenas pela utilização. Existem várias estruturas e soluções sendo desenvolvidas e evoluindo sem servidor para minimizar o esforço do desenvolvedor para lidar com cenários corporativos prontos para uso. Revise o cenário CNCF para obter mais ferramentas, estruturas e plataformas instaláveis sem servidor.