Arquitetura de Software

Começar. É Gratuito
ou inscrever-se com seu endereço de e-mail
Arquitetura de Software por Mind Map: Arquitetura de Software

1. Um dos padrões mais conhecidos. A ideia é dividir o software em "camadas", onde cada camada tem uma certa responsabilidade e fornece um serviço para uma camada superior.

1.1. VANTAGENS: Grande familiaridade por parte dos desenvolvedores, fácil de escrever um aplicativo bem organizado.

1.2. DESVANTAGENS: Tende a levar aplicações monolíticas.

1.3. IDEAL: Para para aplicativos de linha de negócios padrão, que fazem mais do que apenas operações CRUD.

2. Em Camadas

3. CQRS

3.1. É conseguir separar as operações de leitura e gravação em bancos de dados, ou seja, uma parte da aplicação só faz consulta e outra parte só faz escrita.

3.1.1. •VANTAGENS: Os modelos de consulta podem se concentrar na lógica e validação dos negócios, enquanto os modelos de leituras podem ser personalizados para cenários específicos de dados; •Pode evitar consultas complexas; •Ganha escalabilidade e disponibilidade. Se um dos bancos de leitura sair do ar, você tem outros, assim, mais difícil de perder tudo, pois tem várias máquinas diferentes com dados replicados.

3.1.2. DESVANTAGENS: Complexidade e dificuldade na sincronização das bases de escrita e leitura.

3.1.3. IDEAL: É bom para aplicações que tem mais leitura do que escrita e é bom também para aplicativos com domínios complexos.

4. Arquitetura Híbrida: é quando se usa mais de uma arquitetura de software num mesmo software.

5. Conjunto de estruturas necessárias para raciocinar sobre o sistema, que compreende elementos de software, as relações entre eles e as propriedades de ambos.

6. Micro Núcleo

6.1. O sistema Microkernel vai conectando plug-ins, é ele quem controla a entrada e saída de dados. Ele não sabe exatamente como funciona o plug-in, mas ele sabe mandar e receber dados para o plug-in.

6.1.1. VANTAGENS: • Fornece grande flexibilidade e extensibilidade, podendo adaptar o seu aplicativo central pra textos diferentes de forma muito fácil. • Também permitem adicionar plug-ins enquanto o app roda e podem ser desenvolvidos por equipes separadas.

6.1.2. DESVANTAGENS: É difícil decidir o que faz parte de micro núcleo e o que não faz, o que fica fora pode acabar crescendo muito, e ele precisa apenas de responsabilidades básicas e permitir acoplar outros pedaços de forma fácil.

6.1.3. IDEAL: • Para aplicativos que pegam dados de diferentes fontes, transformam esses dados e os gravam em destinos diferentes; • Aplicativos de workflow; • Aplicativos de agendamento de tarefas e trabalhos.

7. Microservices

7.1. Cada microservice tem uma responsabilidade única, bem distinta e é desenvolvido de forma independente. Você constrói vários microservices e a dependência entre eles é a comunicação

7.1.1. •VANTAGENS: É possível gravar, manter e implementar cada microservice separadamente, com várias equipes distintas trabalhando em microservices; •Uma arquitetura de microservice deve ser mais fácil de dimensionar; •Não há necessidade de escalar as partes menos usadas do aplicativo; •É mais fácil reescrever partes do aplicativo, pois elas são menores e menos acopladas a outras partes.

7.1.2. •DESVANTAGENS: Muito difícil debugar os microservices e possui preocupações extras como: comunicação, coordenação, compatibilidade, registro log etc... •Mais difícil de testar, porque um depende do outro; •Uma única ação do usuário pode passar por vários microservices; •Há pontos de falhas e quando algo dá errado, pode levar mais tempo pra identificar o problema, porque um microservice está dentro do outro.

7.1.3. •IDEAL: Aplicações em que determinadas partes serão usadas intensivamente e uns precisam ser escalados e outros não, pelo uso que ocorre em cada cada parte da aplicação; •Serviços podem funcionar para mais de uma aplicação ou aplicativos e facilita integração entre aplicações; •Aplicações que seriem muito complexas se fossem em monólito; •É fácil definir o papel de cada aplicação, para desacoplar ela é legal usar microservices.