Abordagens de arquiteturaArchitecture approaches

Noções básicas sobre as abordagens existentes para arquitetar aplicativos empresariais ajuda a esclarecer o papel desempenhado sem servidor.Understanding existing approaches to architecting enterprise apps helps clarify the role played by serverless. Há muitas abordagens e padrões que evoluíram ao longo de décadas de desenvolvimento de software, e todas têm seus próprios prós e contras.There are many approaches and patterns that evolved over decades of software development, and all have their own pros and cons. Em muitos casos, a solução definitiva não pode envolver a decidir sobre uma abordagem única, mas pode integrar várias abordagens.In many cases, the ultimate solution may not involve deciding on a single approach but may integrate several approaches. Cenários de migração geralmente envolvem o deslocamento da abordagem de arquitetura de um para outro através de uma abordagem híbrida.Migration scenarios often involve shifting from one architecture approach to another through a hybrid approach.

Este capítulo fornece uma visão geral de ambos os padrões de arquitetura lógica e física para aplicativos corporativos.This chapter provides an overview of both logical and physical architecture patterns for enterprise applications.

Padrões de arquiteturaArchitecture patterns

Aplicativos de negócios modernos siga uma variedade de padrões de arquitetura.Modern business applications follow a variety of architecture patterns. Esta seção representa uma pesquisa de padrões comuns.This section represents a survey of common patterns. Os padrões listados aqui não são necessariamente todas as práticas recomendadas, mas ilustram diferentes abordagens.The patterns listed here aren't necessarily all best practices, but illustrate different approaches.

Para obter mais informações, consulte guia de arquitetura de aplicativo do Azure.For more information, see Azure application architecture guide.

MonolitosMonoliths

Muitos aplicativos de negócios seguem um padrão de monólito.Many business applications follow a monolith pattern. Os aplicativos herdados geralmente são implementados como monolitos.Legacy applications are often implemented as monoliths. No padrão de monólito, todas as preocupações de aplicativo estão contidas em uma única implantação.In the monolith pattern, all application concerns are contained in a single deployment. Tudo, desde a interface do usuário para chamadas de banco de dados está incluído na mesma base de código.Everything from user interface to database calls is included in the same codebase.

Arquitetura de monólito

Há várias vantagens para a abordagem de monólito.There are several advantages to the monolith approach. Geralmente é mais fácil puxe para baixo de uma única base de código e começar a trabalhar.It's often easy to pull down a single code base and start working. Tempo de aprendizado pode ser menor e criação de ambientes de teste é tão simple quanto fornecendo uma nova cópia.Ramp up time may be less, and creating test environments is as simple as providing a new copy. O monolito pode ser projetado para incluir vários componentes e aplicativos.The monolith may be designed to include multiple components and applications.

Infelizmente, o padrão de monolito tende a dividir em grande escala.Unfortunately, the monolith pattern tends to break down at scale. Principais desvantagens da abordagem monólito incluem:Major disadvantages of the monolith approach include:

  • Difícil de trabalhar em paralelo na mesma base de código.Difficult to work in parallel in the same code base.
  • Qualquer alteração, não importa como trivial, exige a implantação de uma nova versão do aplicativo inteiro.Any change, no matter how trivial, requires deploying a new version of the entire application.
  • Refatoração potencialmente afeta todo o aplicativo.Refactoring potentially impacts the entire application.
  • Geralmente a única solução para dimensionar é criar várias cópias de muitos recursos do monólito.Often the only solution to scale is to create multiple, resource-intensive copies of the monolith.
  • Como expandir de sistemas ou adquiridos de outros sistemas, integração pode ser difícil.As systems expand or other systems are acquired, integration can be difficult.
  • Pode ser difícil de testar devido à necessidade de configurar o monolito inteiro.It may be difficult to test due to the need to configure the entire monolith.
  • Reutilização de código é um desafio e outros aplicativos acabam tendo suas próprias cópias do código.Code reuse is challenging and often other apps end up having their own copies of code.

Muitas empresas olham para a nuvem como uma oportunidade para migrar aplicativos monólito e ao mesmo tempo refatorá-los para mais padrões utilizáveis.Many businesses look to the cloud as an opportunity to migrate monolith applications and at the same time refactor them to more usable patterns. É comum para quebrar a aplicativos individuais e componentes para permitir que eles possam ser mantida, implantados e dimensionados separadamente.It's common to break out the individual applications and components to allow them to be maintained, deployed, and scaled separately.

Aplicativos de N-camadasN-Layer applications

Lógica de aplicativo da partição de aplicativo de N camadas em camadas específicas.N-layer application partition application logic into specific layers. As camadas mais comuns incluem:The most common layers include:

  • Interface do usuárioUser interface
  • lógica de negóciosBusiness logic
  • Acesso aos dadosData access

Outras camadas podem incluir o middleware, processamento em lotes e API.Other layers may include middleware, batch processing, and API. É importante observar que as camadas são lógicas.It's important to note the layers are logical. Embora elas são desenvolvidas em isolamento, eles podem todos ser implantados para a mesma plataforma de destino.Although they're developed in isolation, they may all be deployed to the same target platform.

Arquitetura de N-camadas

Há várias vantagens para a abordagem de N-camadas, incluindo:There are several advantages to the N-Layer approach, including:

  • Refatoração é isolada em uma camada.Refactoring is isolated to a layer.
  • As equipes de forma independente podem criar, testar, implantar e manter a camadas separadas.Teams can independently build, test, deploy, and maintain separate layers.
  • Camadas podem ser alternadas, por exemplo a camada de dados pode acessar vários bancos de dados sem a necessidade de alterações para a camada de interface do usuário.Layers can be swapped out, for example the data layer may access multiple databases without requiring changes to the UI layer.

Sem servidor pode ser usada para implementar uma ou mais camadas.Serverless may be used to implement one or more layers.

MicrosserviçosMicroservices

Microsserviços arquiteturas contêm características comuns incluem:Microservices architectures contain common characteristics that include:

  • Aplicativos são compostos por vários serviços pequenos.Applications are composed of several small services.
  • Cada serviço é executado em seu próprio processo.Each service runs in its own process.
  • Os serviços são alinhados em torno de domínios de negócios.Services are aligned around business domains.
  • Os serviços se comunicam por APIs leves, normalmente usando HTTP como o transporte.Services communicate over lightweight APIs, typically using HTTP as the transport.
  • Serviços podem ser implantados e atualizados independentemente.Services can be deployed and upgraded independently.
  • Os serviços não são dependentes de um único armazenamento de dados.Services aren't dependent on a single data store.
  • O sistema foi projetado com falha em mente e o aplicativo poderá ser executado mesmo quando determinados serviços falham.The system is designed with failure in mind, and the app may still run even when certain services fail.

Microsserviços não precisam ser mutuamente exclusivos para outras abordagens de arquitetura.Microservices don't have to be mutually exclusive to other architecture approaches. Por exemplo, uma arquitetura de N camadas pode usar microsserviços para a camada intermediária.For example, an N-Tier architecture may use microservices for the middle tier. Também é possível implementar microsserviços em uma variedade de maneiras de diretórios virtuais em hosts do IIS para contêineres.It's also possible to implement microservices in a variety of ways, from virtual directories on IIS hosts to containers. As características dos microsserviços tornam especialmente ideais para implementações sem servidor.The characteristics of microservices make them especially ideal for serverless implementations.

Arquitetura de microsserviços

Os profissionais de arquiteturas de microsserviços incluem:The pros of microservices architectures include:

  • Refatoração geralmente é isolada em um único serviço.Refactoring is often isolated to a single service.
  • Os serviços podem ser atualizados independentemente uns dos outros.Services can be upgraded independently of each other.
  • Resiliência e a elasticidade podem ser ajustados à demanda de serviços individuais.Resiliency and elasticity can be tuned to the demands of individual services.
  • Desenvolvimento pode ocorrer em paralelo entre plataformas e equipes diferentes.Development can happen in parallel across disparate teams and platforms.
  • É mais fácil escrever testes abrangentes para os serviços isolados.It's easier to write comprehensive tests for isolated services.

Microsserviços vêm com seus próprios desafios, incluindo:Microservices come with their own challenges, including:

  • Determinando quais serviços estão disponíveis e como chamá-los.Determining what services are available and how to call them.
  • Gerenciando o ciclo de vida de serviços.Managing the lifecycle of services.
  • Noções básicas sobre como os serviços se encaixam no aplicativo geral.Understanding how services fit together in the overall application.
  • Testes de sistema completo de chamadas feitas entre diferentes serviços.Full system testing of calls made across disparate services.

Finalmente, há soluções para atender a todos esses desafios, incluindo tocar os benefícios sem servidor que serão discutidos posteriormente.Ultimately there are solutions to address all of these challenges, including tapping into the benefits of serverless that are discussed later.