# data[].attributes.headline
Lista de participantes com Num USP e nome

# data[].attributes.subject
Lista de participantes com Num USP e nome

# data[].attributes.body
Miguel Bragante Henriques - 13671894

Lucas Pereira Franco de Almeida - 12675020

Moniely Silva Barboza - 12563800

# data[].attributes.body
Mitiga problemas de escalabilidade vertical, reduz latências para usuários geograficamente distantes e aumenta a resiliência contra quedas locais

# data[].attributes.body
Escalabilidade;

Disponibilidade;

Tolerância a falhas;

# data[].attributes.body
Escolha Consistência vs. Disponibilidade (Teorema CAP)

Muito caro;

Maior complexidade para coordenar;

# data[].attributes.body
Resolvem-se dependências diretas entre componentes independentes, centralizando um ponto de persistência.

# data[].attributes.body
Modificabilidade: produtores e consumidores desacoplados

Testabilidade:

Integridade:

# data[].attributes.body
Desacoplamento: alterações mais faceis x consumidores não notificados

Desempenho: reúso x cópias de ler e escrever causam latência

Concorrência: sincronização pode causar gargalo

Escalabilidade: vulnerável a SPOF

Consistência: exige coordenação para alterações de schemas

# data[].attributes.body
Cada aluno deverá explicar para seus colegas de grupo o padrão sob sua responsabilidade.

Após as apresentações, o grupo deverá elaborar um quadro comparativo entre os padrões da categoria destacando:

o problema que ele resolve

requisitos de arquitetura (ex. atributos de qualidade) que esse padrão foca

os trade-offs do padrão

Discutir no grupo e fazer um resumo de possíveis situações onde cada padrão poderia ser útil.

# data[].attributes.body
Acoplamento excessivo entre serviços causado pelo compartilhamento de um banco de dados comum, o que dificulta a escalabilidade, a independência de deploys e a evolução dos serviços de forma autônoma. Escalabilidade limitada. Único banco (só SQL ou NoSQL). Problemas de segurança e acesso aos dados.

# data[].attributes.body
Desacoplamento;

Escalabilidade;

Manutenibilidade;

Deploy Independente;

Segurança;

# data[].attributes.body
Usar quando: quiser escalabilidade, disponibilidade e tolerância a falhas e tiver recursos financeiros e técnicos, devido à alto custo e complexidade.

Possíveis casos de uso:

Empresas com operações globais ou multi-regionais, pelo fato de reduzir latência e abrir a possibilidade de repartir dados localmente;

Aplicações com alto volume de dados, como redes sociais, em que disponibilidade é crucial

# data[].attributes.body
Consistência;

Serviços isolados: dados idependentes x possível redundância de dados;

Segurança: acesso de dados limitado ao serviço proprietário x mais endpoints para gerenciar;

Desempenho local: otimização específica para cada serviço x necessidade de replicação ou uso de APIs;

Maior complexidade de projeto;

Dificuldade em obter uma visã global;

# data[].attributes.body
Usar quando:

Quiser integridade e persistência dos dados, com componentes independentes.

Não usar quando:

Tiver poucos recursos técnicos para gerenciar a sincronização;

Precisar de confidencialidade de dados ou desacoplamento

Quiser alta escalabilidade/performance, que exige alto custo para replicação.

# data[].attributes.body
Usar quando: a autonomia, escalabilidade e independência dos serviços são prioridades. Ex: Sistemas com equipes distribuídas por domínio; Escalabilidade específica por serviço; Exigência de tecnologias de banco diferentes.