fbpx

Arquiteturas de Baixo Acoplamento são arquiteturas construídas através de componentes que podem ser alterados e escalados de forma independente.

Imagine que você tem 3 componentes: A, B, C e que esses componentes trabalham juntos para executar algum tipo de necessidade de negócio, e que esses três componentes possam ser escalados verticalmente (aumentar capacidade do servidor) ou horizontalmente (aumentar o número de servidores) de forma independente.

Se o componente A estiver levando em média 2s para ser executado, o B, 15s e o C 1s, você poderia, por exemplo, aumentar o poder computacional apenas do serviço B sem impactar os demais e assim reduzir o tempo de resposta do componente B, e melhorar a experiência de seus usuários.

Arquietura Desacoplada
Arquitetura Desacoplada – Fonte: Martin Fowler

Uma maneira mais simples de se fazer Arquiteturas de Baixo Acoplamento é utilizando Microsserviços (microservices) ou funções Serverless.

Seguindo nosso exemplo, esses componentes poderiam ser microsserviços Java com Spring Boot, ou funções AWS Lambda.

Oferta

Arquiteturas Reativas

Uma característica de aplicações com arquiteturas de baixo acoplamento é que geralmente não se comunicam diretamente de forma síncrona, mas através de eventos e filas.

As Arquiteturas Reativas são exemplos de arquiteturas com baixo acoplamento.

Arquiteturas reativas tem as seguintes características:

  • Responsiva: respondem a eventos.
  • Resiliente: não param de funcionar se outro componente falhar.
  • Elástica: aumenta e reduzem a capacidade de acordo com a demanda.
  • Guiada por Mensagens: componentes são desacoplados e colaboram através da troca de mensagens e filas.
Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications (English Edition)
  • Tomasz Nurkiewicz, Ben Christensen
  • O'Reilly Media
  • eBook Kindle
  • Edition no. 1 (10/06/2016)
  • Inglês

Escalando Automaticamente: Autoscaling

A AWS oferece uma série de serviços para escalar horizontalmente de forma automática, como o AWS Autoscaling.

O AWS Auto Scaling monitora os aplicativos e ajusta automaticamente a capacidade para manter um desempenho constante e previsível pelo menor custo possível.

É possível, por exemplo, aumentar o número de servidores de uma aplicação quando o nível de CPU atingir um certo percentual, ou então quando o tráfego da rede aumentar, ou quando o número de elementos numa fila aumentar.

Também é possível determinar o número mínimo e máximo de servidores para que você não perca o controle do seu orçamento de infra-estrutura em nuvem.

Também é possível agendar para que o auto-scaling aumente o número de servidores num determinado período que você sabe que vai precisar de mais poder computacional (numa Black Friday, por exemplo).

Para cada grupo de Auto-Scaling, você pode determinar um período de desaquecimento (cooldown) que ajuda a garantir que o seu grupo do Auto Scaling não execute nem encerre instâncias adicionais antes que a ação de escalabilidade tenha sido concluída.

Depois que o grupo do Auto Scaling é escalado dinamicamente usando uma política de escalabilidade, ele aguarda que o desaquecimento seja concluído para retomar ações de escalabilidade. 


Share This