Abordagens de arquiteturaArchitecture approaches

Entender as abordagens existentes para arquitetar aplicativos corporativos ajuda a esclarecer o papel desempenhado por sem servidor.Understanding existing approaches to architecting enterprise apps helps clarify the role played by serverless. Existem muitas abordagens e padrões que evoluíram ao longo de décadas de desenvolvimento de software, e todos 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 final pode não envolver a decisão de uma única abordagem, 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. Os cenários de migração geralmente envolvem a mudança de uma abordagem de arquitetura para outra 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 dos 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

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

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

MonólitosMonoliths

Muitas aplicações de negócios seguem um padrão de monólito.Many business applications follow a monolith pattern. Os aplicativos legados são frequentemente implementados como monólitos.Legacy applications are often implemented as monoliths. No padrão do monólito, todas as preocupações com a aplicação 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 até as 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 monolito

Há várias vantagens para a abordagem do monolito.There are several advantages to the monolith approach. Muitas vezes é fácil puxar para baixo 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. O tempo de rampa pode ser menor, e criar ambientes de teste é tão simples quanto fornecer uma nova cópia.Ramp up time may be less, and creating test environments is as simple as providing a new copy. O monólito pode ser projetado para incluir vários componentes e aplicações.The monolith may be designed to include multiple components and applications.

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

  • Difícil trabalhar em paralelo na mesma base de código.Difficult to work in parallel in the same code base.
  • Qualquer mudança, por mais trivial que seja, requer a implantação de uma nova versão de todo o aplicativo.Any change, no matter how trivial, requires deploying a new version of the entire application.
  • A refatoração impacta potencialmente toda a aplicação.Refactoring potentially impacts the entire application.
  • Muitas vezes, a única solução para escalar é criar cópias múltiplas e intensivas em recursos do monólito.Often the only solution to scale is to create multiple, resource-intensive copies of the monolith.
  • À medida que os sistemas se expandem ou outros sistemas são adquiridos, a integração pode ser difícil.As systems expand or other systems are acquired, integration can be difficult.
  • Pode ser difícil testar devido à necessidade de configurar todo o monólito.It may be difficult to test due to the need to configure the entire monolith.
  • O reaproveitamento de códigos é desafiador e muitas vezes outros aplicativos acabam tendo suas próprias cópias de 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 de migrar aplicativos de monolito e, ao mesmo tempo, refatorá-los para padrões mais 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 quebrar os aplicativos e componentes individuais para permitir que sejam mantidos, 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 N-LayerN-Layer applications

Lógica do aplicativo de partição de aplicativo de camada n 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 de dadosData access

Outras camadas podem incluir middleware, processamento de lotes e API.Other layers may include middleware, batch processing, and API. É importante notar que as camadas são lógicas.It's important to note the layers are logical. Embora sejam desenvolvidos isoladamente, podem ser todos implantados na mesma plataforma alvo.Although they're developed in isolation, they may all be deployed to the same target platform.

Arquitetura N-Camada

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

  • A refatoração é isolada a uma camada.Refactoring is isolated to a layer.
  • As equipes podem construir, testar, implantar e manter camadas separadas de forma independente.Teams can independently build, test, deploy, and maintain separate layers.
  • As camadas podem ser trocadas, por exemplo, a camada de dados pode acessar vários bancos de dados sem exigir alterações na camada de IA.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 usado para implementar uma ou mais camadas.Serverless may be used to implement one or more layers.

MicrosserviçosMicroservices

As arquiteturas de microserviços contêm características comuns que incluem:Microservices architectures contain common characteristics that include:

  • As aplicações são compostas por vários pequenos serviços.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 estão alinhados em torno de domínios de negócios.Services are aligned around business domains.
  • Os serviços se comunicam através de APIs leves, normalmente usando HTTP como transporte.Services communicate over lightweight APIs, typically using HTTP as the transport.
  • Os serviços podem ser implantados e atualizados de forma independente.Services can be deployed and upgraded independently.
  • Os serviços não dependem de um único armazenamento de dados.Services aren't dependent on a single data store.
  • O sistema é projetado com falha em mente, e o aplicativo ainda pode ser executado mesmo quando certos serviços falham.The system is designed with failure in mind, and the app may still run even when certain services fail.

Os microserviços não têm que ser mutuamente exclusivos de outras abordagens de arquitetura.Microservices don't have to be mutually exclusive to other architecture approaches. Por exemplo, uma arquitetura N-Tier pode usar microsserviços para o nível intermediário.For example, an N-Tier architecture may use microservices for the middle tier. Também é possível implementar microsserviços de várias maneiras, desde diretórios virtuais em hosts IIS até 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 microserviços 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 prós das arquiteturas de microsserviços incluem:The pros of microservices architectures include:

  • A refatoração é muitas vezes isolada a 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.
  • A resiliência e a elasticidade podem estar sintonizadas com as demandas dos serviços individuais.Resiliency and elasticity can be tuned to the demands of individual services.
  • O desenvolvimento pode acontecer em paralelo entre equipes e plataformas diferentes.Development can happen in parallel across disparate teams and platforms.
  • É mais fácil escrever testes abrangentes para serviços isolados.It's easier to write comprehensive tests for isolated services.

Os microserviç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 dos serviços.Managing the lifecycle of services.
  • Entender como os serviços se encaixam na aplicação geral.Understanding how services fit together in the overall application.
  • Teste completo do sistema de chamadas feitas em serviços diferentes.Full system testing of calls made across disparate services.

Em última análise, existem soluções para enfrentar todos esses desafios, incluindo aproveitar os benefícios dos sem servidor que são discutidos posteriormente.Ultimately there are solutions to address all of these challenges, including tapping into the benefits of serverless that are discussed later.