Arquitetura sem servidorServerless architecture

Há muitas abordagens ao uso de arquiteturas sem servidor .There are many approaches to using serverless architectures. Este capítulo explora exemplos de arquiteturas comuns que se integram sem servidor.This chapter explores examples of common architectures that integrate serverless. Ele também aborda preocupações que podem apresentar desafios adicionais ou exigir uma consideração extra ao implementar sem servidor.It also covers concerns that may pose additional challenges or require extra consideration when implementing serverless. Por fim, são fornecidos vários exemplos de design que ilustram vários casos de uso sem servidor.Finally, several design examples are provided that illustrate various serverless use cases.

Os hosts sem servidor geralmente usam uma camada de PaaS ou baseada em contêiner existente para gerenciar as instâncias sem servidor.Serverless hosts often use an existing container-based or PaaS layer to manage the serverless instances. Por exemplo, Azure Functions se baseia no serviço Azure app.For example, Azure Functions is based on Azure App Service. O serviço de aplicativo é usado para expandir instâncias e gerenciar o tempo de execução que executa Azure Functions código.The App Service is used to scale out instances and manage the runtime that executes Azure Functions code. Para funções baseadas no Windows, o host é executado como PaaS e dimensiona o tempo de execução do .NET.For Windows-based functions, the host runs as PaaS and scales out the .NET runtime. Para funções baseadas em Linux, o host aproveita contêineres.For Linux-based functions, the host leverages containers.

Arquitetura de Azure Functions

O núcleo de trabalhos Web fornece um contexto de execução para a função.The WebJobs Core provides an execution context for the function. O Language Runtime executa scripts, executa bibliotecas e hospeda a estrutura para o idioma de destino.The Language Runtime runs scripts, executes libraries and hosts the framework for the target language. Por exemplo, Node. js é usado para executar funções JavaScript e o .NET Framework é usado para executar C# funções.For example, Node.js is used to run JavaScript functions and the .NET Framework is used to run C# functions. Você aprenderá mais sobre as opções de linguagem e plataforma mais adiante neste capítulo.You'll learn more about language and platform options later in this chapter.

Alguns projetos podem se beneficiar com a criação de uma abordagem "tudo" para servidor.Some projects may benefit from taking an "all-in" approach to serverless. Os aplicativos que dependem muito de microservices podem implementar todos os microserviços usando a tecnologia sem servidor.Applications that rely heavily on microservices may implement all microservices using serverless technology. A maioria dos aplicativos é híbrida, seguindo um projeto de N camadas e usando servidores para os componentes que fazem sentido, pois os componentes são modulares e escalonáveis de forma independente.The majority of apps are hybrid, following an N-tier design and using serverless for the components that make sense because the components are modular and independently scalable. Para ajudar a entender esses cenários, esta seção descreve alguns exemplos comuns de arquitetura que usam sem servidor.To help make sense of these scenarios, this section walks through some common architecture examples that use serverless.

Back-end completo sem servidorFull serverless back end

O back-end completo sem servidor é ideal para vários tipos de cenários, especialmente ao criar aplicativos novos ou "de campo verde".The full serverless back end is ideal for several types of scenarios, especially when building new or "green field" applications. Um aplicativo com uma grande área de superfície de APIs pode se beneficiar da implementação de cada API como uma função sem servidor.An application with a large surface area of APIs may benefit from implementing each API as a serverless function. Aplicativos baseados na arquitetura de microserviços são outro exemplo que podem ser implementados como um back-end completo sem servidor.Apps that are based on microservices architecture are another example that could be implemented as a full serverless back end. Os microserviços se comunicam por vários protocolos entre si.The microservices communicate over various protocols with each other. Os cenários específicos incluem:Specific scenarios include:

  • Produtos SaaS baseados em API (exemplo: processador de pagamentos financeiros).API-based SaaS products (example: financial payments processor).
  • Aplicativos orientados a mensagens (exemplo: solução de monitoramento de dispositivo).Message-driven applications (example: device monitoring solution).
  • Aplicativos focados na integração entre serviços (exemplo: aplicativo de reservas de viagens).Apps focused on integration between services (example: airline booking application).
  • Processos que são executados periodicamente (exemplo: limpeza de banco de dados baseada em temporizador).Processes that run periodically (example: timer-based database clean-up).
  • Aplicativos focados na transformação de dados (exemplo: importação disparada por upload de arquivo).Apps focused on data transformation (example: import triggered by file upload).
  • Extrair processos de ETL (transformação e carregamento).Extract Transform and Load (ETL) processes.

Há outros casos de uso mais específicos que são abordados posteriormente neste documento.There are other, more specific use cases that are covered later in this document.

Monolítico e "privando o fera"Monoliths and "starving the beast"

Um desafio comum é migrar um aplicativo monolítico existente para a nuvem.A common challenge is migrating an existing monolithic application to the cloud. A abordagem menos arriscada é "mover e deslocar" totalmente para máquinas virtuais.The least risky approach is to "lift and shift" entirely onto virtual machines. Muitas lojas preferem usar a migração como uma oportunidade de modernizar sua base de código.Many shops prefer to use the migration as an opportunity to modernize their code base. Uma abordagem prática para a migração é chamada de "privar o fera".A practical approach to migration is called "starving the beast." Nesse cenário, o monolítico é migrado "no estado em que se encontra" para começar.In this scenario, the monolith is migrated "as is" to start with. Em seguida, os serviços selecionados são modernizados.Then, selected services are modernized. Em alguns casos, a assinatura do serviço é idêntica à original: ela simplesmente é hospedada como uma função.In some cases, the signature of the service is identical to the original: it simply is hosted as a function. Os clientes são atualizados para usar o novo serviço em vez do ponto de extremidade monolítico.Clients are updated to use the new service rather than the monolith endpoint. No ínterim, as etapas como replicação de banco de dados permitem que os microserviços hospedem seu próprio armazenamento mesmo quando as transações ainda são tratadas pelo monolítico.In the interim, steps such as database replication enable microservices to host their own storage even when transactions are still handled by the monolith. Eventualmente, todos os clientes são migrados para os novos serviços.Eventually, all clients are migrated onto the new services. O monolítico é "privado" (seus serviços não são mais chamados) até que toda a funcionalidade tenha sido substituída.The monolith is "starved" (its services no longer called) until all functionality has been replaced. A combinação de proxies e sem servidor pode facilitar grande parte dessa migração.The combination of serverless and proxies can facilitate much of this migration.

Migração monolítica sem servidor

Para saber mais sobre essa abordagem, Assista ao vídeo: Traga seu aplicativo para a nuvem com Azure Functions sem servidor.To learn more about this approach, watch the video: Bring your app to the cloud with serverless Azure Functions.

Aplicativos WebWeb apps

Os aplicativos Web são excelentes candidatos para aplicativos sem servidor.Web apps are great candidates for serverless applications. Atualmente, há duas abordagens comuns para aplicativos Web: orientado por servidor e controlado por cliente (como um aplicativo de página única ou SPA).There are two common approaches to web apps today: server-driven, and client-driven (such as Single Page Application or SPA). Aplicativos Web baseados em servidor normalmente usam uma camada de middleware para emitir chamadas de API para renderizar a interface do usuário da Web.Server-driven web apps typically use a middleware layer to issue API calls to render the web UI. Os aplicativos SPA fazem chamadas à API REST diretamente do navegador.SPA applications make REST API calls directly from the browser. Em ambos os cenários, o servidor pode acomodar o middleware ou a solicitação da API REST fornecendo a lógica comercial necessária.In both scenarios, serverless can accommodate the middleware or REST API request by providing the necessary business logic. Uma arquitetura comum é criar um servidor Web estático leve.A common architecture is to stand up a lightweight static web server. O aplicativo de página única (SPA) serve HTML, CSS, JavaScript e outros ativos de navegador.The Single Page Application (SPA) serves HTML, CSS, JavaScript, and other browser assets. O aplicativo Web então se conecta a um back-end de microserviço.The web app then connects to a microservices back end.

Back-ends móveisMobile back ends

O paradigma controlado por eventos de aplicativos sem servidor os torna ideal como back-ends móveis.The event-driven paradigm of serverless apps makes them ideal as mobile back ends. O dispositivo móvel dispara os eventos e o código sem servidor é executado para atender a solicitações.The mobile device triggers the events and the serverless code executes to satisfy requests. Tirar proveito de um modelo sem servidor permite que os desenvolvedores aprimorem a lógica de negócios sem precisar implantar uma atualização completa do aplicativo.Taking advantage of a serverless model enables developers to enhance business logic without having to deploy a full application update. A abordagem sem servidor também permite que as equipes compartilhem pontos de extremidade e trabalhem em paralelo.The serverless approach also enables teams to share endpoints and work in parallel.

Os desenvolvedores móveis podem criar lógica de negócios sem se tornar especialistas no lado do servidor.Mobile developers can build business logic without becoming experts on the server side. Tradicionalmente, os aplicativos móveis conectados a serviços locais.Traditionally, mobile apps connected to on-premises services. Criar a camada de serviço exigida entendendo a plataforma do servidor e o paradigma de programação.Building the service layer required understanding the server platform and programming paradigm. Os desenvolvedores trabalharam com operações para provisionar servidores e configurá-los adequadamente.Developers worked with operations to provision servers and configure them appropriately. Às vezes, dias ou até mesmo semanas foram gastos na criação de um pipeline de implantação.Sometimes days or even weeks were spent on building a deployment pipeline. Todos esses desafios são abordados por servidor.All of these challenges are addressed by serverless.

Sem servidor abstrai as dependências do lado do servidor e permite que o desenvolvedor se concentre na lógica de negócios.Serverless abstracts the server-side dependencies and enables the developer to focus on business logic. Por exemplo, um desenvolvedor móvel que cria aplicativos usando uma estrutura JavaScript também pode criar funções sem servidor com JavaScript.For example, a mobile developer who builds apps using a JavaScript framework can build serverless functions with JavaScript as well. O host sem servidor gerencia o sistema operacional, uma instância do node. js para hospedar o código, as dependências do pacote e muito mais.The serverless host manages the operating system, a Node.js instance to host the code, package dependencies, and more. O desenvolvedor recebe um conjunto simples de entradas e um modelo padrão para saídas.The developer is provided a simple set of inputs and a standard template for outputs. Em seguida, eles podem se concentrar na criação e no teste da lógica de negócios.They then can focus on building and testing the business logic. Portanto, eles são capazes de usar habilidades existentes para criar a lógica de back-end para o aplicativo móvel sem precisar aprender novas plataformas ou se tornar um "desenvolvedor do lado do servidor".They're therefore able to use existing skills to build the back-end logic for the mobile app without having to learn new platforms or become a "server-side developer."

Back-end móvel sem servidor

A maioria dos provedores de nuvem oferece produtos sem servidor baseados em móveis que simplificam todo o ciclo de vida do desenvolvimento móvel.Most cloud providers offer mobile-based serverless products that simplify the entire mobile development lifecycle. Os produtos podem automatizar o provisionamento de bancos de dados para persistirem, lidar com preocupações DevOpss, fornecer compilações baseadas em nuvem e estruturas de teste e a capacidade de gerar scripts de processos comerciais usando a linguagem preferencial do desenvolvedor.The products may automate the provisioning of databases to persist data, handle DevOps concerns, provide cloud-based builds and testing frameworks and the ability to script business processes using the developer's preferred language. Seguir uma abordagem sem servidor voltada para dispositivos móveis pode simplificar o processo.Following a mobile-centric serverless approach can streamline the process. Sem servidor remove a enorme sobrecarga de provisionamento, configuração e manutenção de servidores para o back-end móvel.Serverless removes the tremendous overhead of provisioning, configuring, and maintaining servers for the mobile back end.

IoT (Internet das Coisas)Internet of Things (IoT)

A IoT refere-se a objetos físicos que estão em rede.IoT refers to physical objects that are networked together. Às vezes, eles são chamados de "dispositivos conectados" ou "dispositivos inteligentes".They're sometimes referred to as "connected devices" or "smart devices." Tudo, desde carros e máquinas de vendas, pode estar conectado e enviar informações que vão desde o inventário até dados de sensor, como temperatura e umidade.Everything from cars and vending machines may be connected and send information ranging from inventory to sensor data such as temperature and humidity. Na empresa, a IoT fornece melhorias de processos de negócios por meio de monitoramento e automação.In the enterprise, IoT provides business process improvements through monitoring and automation. Os dados de IoT podem ser usados para regulamentar o clima em um grande depósito ou acompanhar o inventário por meio da cadeia de suprimentos.IoT data may be used to regulate the climate in a large warehouse or track inventory through the supply chain. A IoT pode detectar derramamentos químicos e chamar o departamento de incêndio quando a fumaça for detectada.IoT can sense chemical spills and call the fire department when smoke is detected.

O enorme volume de dispositivos e informações geralmente determina uma arquitetura orientada por eventos para rotear e processar mensagens.The sheer volume of devices and information often dictates an event-driven architecture to route and process messages. Sem servidor é uma solução ideal por vários motivos:Serverless is an ideal solution for several reasons:

  • Habilita o dimensionamento conforme o volume de dispositivos e dados aumenta.Enables scale as the volume of devices and data increases.
  • Acomoda a adição de novos pontos de extremidade para dar suporte a novos dispositivos e sensores.Accommodates adding new endpoints to support new devices and sensors.
  • Facilita o controle de versão independente para que os desenvolvedores possam atualizar a lógica de negócios de um dispositivo específico sem precisar implantar o sistema inteiro.Facilitates independent versioning so developers can update the business logic for a specific device without having to deploy the entire system.
  • Resiliência e menos tempo de inatividade.Resiliency and less downtime.

A disseminação da IoT resultou em vários produtos sem servidor que se concentram especificamente em preocupações com a IoT, como o Hub IOT do Azure.The pervasiveness of IoT has resulted in several serverless products that focus specifically on IoT concerns, such as Azure IoT Hub. O servidor automatiza tarefas como registro de dispositivos, imposição de políticas, acompanhamento e até mesmo implantação de código para dispositivos na borda.Serverless automates tasks such as device registration, policy enforcement, tracking, and even deployment of code to devices at the edge. A borda se refere a dispositivos como sensores e atuadores que estão conectados a, mas não a uma parte ativa do, à Internet.The edge refers to devices like sensors and actuators that are connected to, but not an active part of, the Internet.