Referências¶
A plataforma TOTVS Apps foi construída com base em conceitos, princípios, práticas, estilos e padrões arquiteturais aplicados à construção de aplicações modernas.
Os próximos tópicos listam esses principais conceitos que são utilizados como referência para construção da plataforma TOTVS Apps e de suas aplicações.
Arquiteturas evolucionárias¶
Uma arquitetura evolucionária oferece suporte à construção de sistemas que permitem que arquitetos e desenvolvedores façam mudanças radicais nas partes mais importantes de seus sistemas com confiança. Abrange práticas que permitem aos desenvolvedores construir arquiteturas contínuas, que evoluem de forma limpa, sem a necessidade de uma bola de cristal.
Onde se atende e se procura ter:
- Funções de Aptidão: Uma função de aptidão arquitetônica fornece uma avaliação de integridade objetiva de algumas características arquitetônicas;
- Engenharia da Mudança Incremental: Uma arquitetura evolucionária oferece suporte à mudança incremental guiada em várias dimensões;
- Acoplamento: A arquitetura evolucionária se concentra no acoplamento apropriado - de como identificar quais dimensões da arquitetura devem ser acopladas para fornecer o máximo de benefício com despesas e custos mínimos;
- Dados Evolucionários: O design evolucionário em bancos de dados ocorre quando os desenvolvedores podem construir e desenvolver a estrutura do banco de dados conforme os requisitos mudam com o tempo;
- Anti-padrões: Passamos muito tempo discutindo os níveis adequados de acoplamento em arquiteturas. No entanto, também vivemos no mundo real e vemos muitos acoplamentos que prejudicam a capacidade de evolução de um projeto;
Cloud Native¶
Aplicações construídas de forma escalável e distribuída, que se aproveitam do modelo de entrega e execução da computação em núvem
Conceitos como os citados abaixo, exemplificam esse modelo de arquitetura e construção de aplicações:
- Containers:
Contêineres são uma unidade de software padronizada que empacota código-fonte e todas as suas dependências de modo que a aplicação possa ser executada de forma rápida e confiável de um ambiente computacional para outro.
- Microsserviços:
Uma arquitetura de microsserviço é um estilo de arquitetura que estrutura uma aplicação como uma coleção de serviços que são:
- Implantado independentemente; - Pertencente a um time pequeno; - Organizado através de capacidades de negócio; - Com baixo acoplamento; - Altamente manutenível e testável;
Essa arquitetura permite uma entrega rápida, frequente e confiável de aplicações complexas. Permitindo também que a organização evolua sua stack de tecnologia.
- Service mesh:
Service Mesh é uma infraestrutura distribuída de software que lida com a comunicação entre os microsserviços, entregando mensagens de forma confiável e segura e acrescentando a essa comunicação visibilidade e recursos de controle e gerenciamento. Normalmente implementada através de sidecars que fazem o papel de proxy de comunicação entre as aplicações e da aplicação com o mundo externo.
- Infraestrutura imutável:
Uma infraestrutura imutável é um modelo onde nenhuma atualização, patch de segurança ou mudança de configuração acontece "localmente" em um sistema em produção. Se alguma mudança é necessária, uma nova versão da arquitetura é construída e implantada em produção, sempre baseado em códigos-fonte e automação.
Princípios e práticas¶
Aplicações que seguem princípios e práticas que procuram manter a arquitetura limpa e reconhecível, através da aplicação de:
- Clean Architecture
Separação de responsabilidades das camadas e blocos de um sistema de software;
- Domain Driven Design
Onde:
- O foco primário do software é atender o coração do negócio e suas regras de negócio; - A linguagem utilizada pelo sistema de software segue a mesma linguagem utilizada pelo negócio; - A complexidade do negócio é colocada em modelos de domínio.
- Teorema CAP
Entende-se da relação entre consistência, disponibilidade e tolerância a partição;
- DevOps
DevOps é um conjunto de práticas que combina o desenvolvimento de software e as operações de TI. Seu objetivo é diminuir o ciclo de vida do desenvolvimento e prover uma entrega contínua de software com alta qualidade. DevOps se complementa com o desenvolvimento ágil.
Estilos e padrões¶
- Application Patterns
Padrões que auxiliam na definição da estratégia de implementação do núcleo do domínio de negócios
!!! info "Informação" As caixas apresentadas no diagrama acima são links para os seus respectivos conteúdos.
- Application Infrastructure Patterns
Padrões voltados para criação de funcionalidades intermediárias que suportam os padrões de implementação das regras de negócio
!!! info "Informação" As caixas apresentadas no diagrama acima são links para os seus respectivos conteúdos.
- Infrastructure Patterns
Padrões que auxiliam a criação de funcionalidades básicas e necessárias ao funcionamento de quaisquer microsserviços.
!!! info "Informação" As caixas apresentadas no diagrama acima são links para os seus respectivos conteúdos.