Arquitetura sem servidorServerless architecture

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

Hosts sem servidor geralmente usam um existentes baseados em contêiner ou a camada do PaaS 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, o Azure Functions se baseia serviço de aplicativo do Azure.For example, Azure Functions is based on Azure App Service. O serviço de aplicativo é usado para expandir as instâncias e gerenciar o tempo de execução que executa o código do Azure Functions.The App Service is used to scale out instances and manage the runtime that executes Azure Functions code. Para funções com base em Windows, as execuções de host como PaaS e escalas de reduzir 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 com base em Linux, o host utiliza contêineres.For Linux-based functions, the host leverages containers.

Arquitetura de funções do Azure

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 tempo de execução de linguagem executa scripts, executa a 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 do JavaScript e o .NET Framework é usado para executar funções do c#.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 idioma e plataforma neste capítulo.You'll learn more about language and platform options later in this chapter.

Alguns projetos podem se beneficiar de adotar uma abordagem "totalmente em" para o sem servidor.Some projects may benefit from taking an "all-in" approach to serverless. Aplicativos que dependem muito de microsserviços podem implementar todos os microsserviços usando a tecnologia sem servidor.Applications that rely heavily on microservices may implement all microservices using serverless technology. A maioria dos aplicativos são híbridas, seguindo um design de N camadas e usando sem servidor para os componentes que fazem sentido porque os componentes são modular e escalonável de maneira 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 dar sentido a esses cenários, esta seção orienta por meio de alguns exemplos comuns de arquitetura que usar sem servidor.To help make sense of these scenarios, this section walks through some common architecture examples that use serverless.

Back-end completa sem servidorFull serverless back end

O back-end completa sem servidor é ideal para vários tipos de cenários, especialmente ao criar novos ou aplicativos 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 das APIs pode se beneficiar com a 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. Os aplicativos baseados em arquitetura de microsserviços são outro exemplo que pode ser implementado como um back-end sem servidor completo.Apps that are based on microservices architecture are another example that could be implemented as a full serverless back end. Os microsserviços se comunicam por meio de vários protocolos entre si.The microservices communicate over various protocols with each other. Cenários específicos incluem:Specific scenarios include:

  • Produtos de SaaS baseado em API (exemplo: processador de pagamentos financeiro).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 voltados para a integração entre serviços (exemplo: aplicativo de reservas de companhia aérea).Apps focused on integration between services (example: airline booking application).
  • Processos executados periodicamente (exemplo: banco de dados baseado em temporizador limpeza).Processes that run periodically (example: timer-based database clean-up).
  • Aplicativos voltados para transformação de dados (exemplo: importação disparada pelo upload de arquivo).Apps focused on data transformation (example: import triggered by file upload).
  • Extraia os processos de transformação e carregamento (ETL).Extract Transform and Load (ETL) processes.

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

Monolitos e "privando a fera"Monoliths and "starving the beast"

Um desafio comum está migrando um aplicativo monolítico existente para a nuvem.A common challenge is migrating an existing monolithic application to the cloud. A abordagem menos arriscada é "lift and shift" inteiramente em máquinas virtuais.The least risky approach is to "lift and shift" entirely onto virtual machines. Vários departamentos de preferem usar a migração como uma oportunidade para 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 "privando a fera".A practical approach to migration is called "starving the beast." Nesse cenário, o monolito é migrado "como está" para começar.In this scenario, the monolith is migrated "as is" to start with. Em seguida, os serviços selecionados serão modernizados.Then, selected services are modernized. Em alguns casos, a assinatura do serviço é idêntica ao original: ele simplesmente está hospedado 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 monólito.Clients are updated to use the new service rather than the monolith endpoint. Enquanto isso, etapas, como replicação de banco de dados permitem microsserviços hospedar seu próprio armazenamento, mesmo quando as transações ainda são manipuladas pelo monólito.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 monolito está "sem" (seus serviços não é mais chamados) até que toda a funcionalidade foi substituída.The monolith is "starved" (its services no longer called) until all functionality has been replaced. A combinação de sem servidor e proxies podem facilitar grande parte da migração.The combination of serverless and proxies can facilitate much of this migration.

Migração de monólito sem servidor

Para saber mais sobre essa abordagem, assista ao vídeo: Traga o seu aplicativo para a nuvem com o 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

Aplicativos Web são bons candidatos para aplicativos sem servidor.Web apps are great candidates for serverless applications. Há duas abordagens comuns para aplicativos web hoje: orientado para servidor e controlado por cliente (como 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 orientado para servidor normalmente usam uma camada de middleware emitir chamadas de API para renderizar a interface da web.Server-driven web apps typically use a middleware layer to issue API calls to render the web UI. Aplicativos SPA fazem chamadas à API REST diretamente do navegador.SPA applications make REST API calls directly from the browser. Em ambos os cenários sem servidor pode acomodar a solicitação da API REST ou middleware, 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 do navegador.The Single Page Application (SPA) serves HTML, CSS, JavaScript, and other browser assets. O aplicativo web, em seguida, se conecta a um back-end de microsserviços.The web app then connects to a microservices back end.

Back-ends móveisMobile back ends

O paradigma de aplicativos sem servidor orientada a eventos torna ideal como o 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 às solicitações.The mobile device triggers the events and the serverless code executes to satisfy requests. Tirando proveito de um modelo sem servidor permite que os desenvolvedores aperfeiçoar a lógica de negócios sem a necessidade de implantar uma atualização de aplicativo completo.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 equipes compartilhar pontos de extremidade e trabalhem em paralelo.The serverless approach also enables teams to share endpoints and work in parallel.

Desenvolvedores de aplicativos 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 aos serviços de local.Traditionally, mobile apps connected to on-premises services. Criando a camada de serviço necessária Noções básicas sobre a plataforma de 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 resolvidos por sem servidor.All of these challenges are addressed by serverless.

Serverless 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 compila aplicativos usando uma estrutura JavaScript pode criar funções sem servidor com o JavaScript também.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 de 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 é fornecido 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. Eles, em seguida, podem se concentrar em criar e testar a lógica de negócios.They then can focus on building and testing the business logic. Eles são, portanto, podem 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."

Término de volta móveis sem servidor

A maioria dos provedores de nuvem oferecem produtos sem servidor com base em mobile que simplificam o ciclo de vida inteiro de 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 manter os dados, lidar com preocupações de DevOps, fornecer baseado em nuvem compilações e testes de estruturas e a capacidade de processos de negócios de script usando o desenvolvedor o idioma preferencial.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 centrada em mobile de sem servidor 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)

IoT refere-se aos objetos físicos que são conectados em rede.IoT refers to physical objects that are networked together. Eles são chamados de "dispositivos conectados" ou "dispositivos inteligentes".They're sometimes referred to as "connected devices" or "smart devices." Tudo, de carros e máquinas de venda automáticas podem ser conectados e enviar informações variando de inventário para 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, IoT fornece melhorias no processo de negócios por meio de monitoramento e automação.In the enterprise, IoT provides business process improvements through monitoring and automation. Dados de IoT podem ser usados para regular a clima em um depósito grande ou acompanhar o inventário por meio da cadeia de fornecimento.IoT data may be used to regulate the climate in a large warehouse or track inventory through the supply chain. IoT pode detectar vazamentos químicos e chamar o departamento de incêndio quando fumaça é detectada.IoT can sense chemical spills and call the fire department when smoke is detected.

O volume total de dispositivos e informações geralmente determina uma arquitetura orientada a eventos para mensagens de rota e de processo.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:

  • Escala permite que o volume de dados e dispositivos 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 podem atualizar a lógica de negócios para 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 menor tempo de inatividade.Resiliency and less downtime.

A abrangência do IoT resultou em vários produtos sem servidor que se concentram especificamente em questões de IoT, tais como IoT Hub do Azure.The pervasiveness of IoT has resulted in several serverless products that focus specifically on IoT concerns, such as Azure IoT Hub. Serverless automatiza tarefas, como o registro de dispositivos, imposição de política, acompanhamento e até mesma implantação de código nos dispositivos em borda.Serverless automates tasks such as device registration, policy enforcement, tracking, and even deployment of code to devices at the edge. A borda refere-se aos dispositivos, como sensores e atuadores que estão conectados ao, mas não uma Active Directory faz parte da Internet.The edge refers to devices like sensors and actuators that are connected to, but not an active part of, the Internet.