Introdução
O que é o Cloudsupport?
A Arquitetura de Referência Cloudsupport
é um conjunto Full Stack de tecnologias (linguagens de programação,
bibliotecas, frameworks, ferramentas) e padrões técnicos (protocolos, regras, convenções) para o desenvolvimento de
aplicações web e móveis baseadas em microsserviços. As linguagens principais são Java e JavaScript e os frameworks
de base são Spring Boot, React e React Native, abrangendo do back ao frontend, incluindo soluções
para API Gateway e Observabilidade.
O Cloudsupport não engessa o projeto: os frameworks selecionados podem ser utilizados sem limitações. Contudo, seguir os padrões definidos neste manual e utilizar as estruturas que tornam o código mais enxuto e produtivo facilitará a manutenção e evolução do sistema.
Premissas
São premissas adotadas na elaboração da arquitetura Cloudsupport
:
-
Prover
durabilidade
esegurança
nas aplicações desenvolvidas através da adoção de tecnologias padrões de mercado, maduras e com grande suporte da comunidade. -
Prover
manutenibilidade
por meio da definição de padrões técnicos e aplicação de boas práticas que viabilizam código-fonte de baixo acoplamento, alta coesão, modular e de boa legibilidade. -
Prover
resiliência
à rotatividade de profissionais, fruto da alta manutenibilidade, que facilita a compreensão do código-fonte em razão de sua homogeneidade entre os vários projetos desenvolvidos. -
Prover alta
produtividade
através da disponibilização de bibliotecas que fornecerão configurações padrões e componentes comuns às aplicações. -
Permitir
alta disponibilidade
com zero downtime durante a atualização de versões da aplicação através da integração com Kubernetes. -
Permitir
escalabilidade
pela adoção de patterns relacionados à abordagem de desenvolvimento por microsserviços. -
Reduzir custo
com licenças atráves da utilização tecnologias opensource.
Escopo
O manual do desenvolvedor (a presente documentação) descreve os padrões técnicos, regras e convenções adotadas
na arquitetura de referência Cloudsupport
.
São oferecidos, adicionalmente, na forma de código-fonte opensource e gratuito:
-
Biblioteca
cloudsupport
, para backend, que contém os frameworks e módulos comuns aos microsserviços, com destaque a:-
Complementos que facilitam o desenvolvimento de webservices.
-
Motor de execução de rotinas em background com suporte multihreading, padrão Produtor-Consumidor, agendamentos, monitoramento, gerenciamento via Java e via endpoints Actuator, persistência e controle de falhas.
-
Padrões e boas práticas para garantir um código-fonte documentado, coeso e bem encapsulado, em especial a abordagem de implementação orientada ao requisito funcional.
-
Integração com Kubernetes para provimento de alta disponibilidade.
-
-
Extensão OpenTelemetry
cloudsupport-otel-javaagent-extension
, que complementa o Agente instrumentador OpenTelemetry para Java para captura das camadas de software definidas na arquitetura. -
Biblioteca
react-cloudsupport
, para frontend web, que contém os frameworks e módulos comuns aos aplicativos web, com destaque a:-
Módulo para gerenciamento de configurações por ambiente (profile) em tempo de execução.
-
Complementos para facilitar a gestão de atualizações da aplicação client-side.
-
Integração OIDC, com suporte a renovação automática de JWT, injeção automática do token nas requisições para o backend via API nativa do JavaScript, configuração facilitada de redirects pós-login e pós-logoff do SSO OIDC e componentes React para proteger o acesso a páginas que requerem autenticação.
-
Componentes de UI e Hooks suplementares para maior produtividade.
-
-
Biblioteca
react-native-cloudsupport
, para frontend mobile, que contém os frameworks e módulos comuns aos aplicativos móveis (OS e Android), com destaque a:- Suite com mais de 50 componentes de UI, que inclui tipografia, campos de entrada, menus, overlays, mídias, gráficos, etc, com suporte a temas e framework de validação de formularios, extensível.
-
Biblioteca
react-native-cloudsupport-storage
, que oferece uma solução simplificada para persistência de dados em apps móveis. -
Arquétipos ou templates, que são exemplos simples e funcionais de aplicações desenvolvidas em
Cloudsupport
. Podem ser clonados como ponto de partida para novos projetos.
Além disso, em consonância com os padrões estabelecidos nesta arquitetura, sugere-se:
-
Adotação do fluxo de trabalho baseado em branches, conforme capítulo Git Workflow desta documentação.
-
Infraestrutura e ambiente DevOps, baseados em Kubernetes.
-
Metodologia de desenvolvimento ágil.
Solicite o link de download das bibliotecas e arquétipos via bernardo.dias@gmail.com. Política de Privacidade e Termos de Uso são aplicados.
Tecnologias
São marcas importantes que proveem tecnologias alicerce da arquitetura:
-
Spring Boot e suite de frameworks Spring, um dos maiores projetos enterprise para Java, mantido pela
VMware
. -
Facebook
React e React Native, frameworks de frontend mantidos pela Meta (anterior Facebook). -
Google
Kubernetes, ferramenta para orquestração de containers, graduada peloCNCF
(Cloud Native Computing Foundation). O CNCF é um projeto membro da Linux Foundation criado por grandes empresas a citar Google, Red Hat, Twitter, Intel, Cisco e IBM. -
Uber
Jaeger, uma solução de tracing distribuído para APM (Application Performance Management).
Todas as tecnologias utilizadas são opensource
e permitem uso governamental e comercial.
Visão Geral
Estes são os principais componentes de uma solução baseada em Cloudsupport
:
-
Common Resources
: São os recursos corporativos comuns a todos os ambientes, seja produção, teste ou desenvolvimento. Sugere-se oGitLab
como ferramenta deSCM
eCI/CD
, oNexus Repository
como repositório de bibliotecas compartilhadas (Maven
eNPM
) e de imagens Docker (Docker Registry
). -
Cluster
Kubernetes
: Podendo ser a distribuição oficial, composta peloCalico
como driver de rede eNGINX
como proxy ingress. Outros clusters podem ser utilizados, como Amazon EKS, Google GKS e Azure AKS. Réplica do cluster pode existir para fins do ambiente de teste e homologação. -
No ambiente do
User
estão as aplicações de frontend, sejam Web ou móveis. -
DB
: O banco de dados, preferencialmente clusterizado. -
Storage
: O storage, preferencialmente clusterizado. -
Workstation
: Estação de trabalho do desenvolvedor, composta essencialmente pelo IDE (Ambiente de Desenvolvimento Integrado).
As Gerações
O Websupport
, geração anterior dessa arquitetura, foi base para muitos sistemas ao longo de quase duas
décadas, com mais de 200 mil Pontos de Função produzidos. Foi baseado em bibliotecas e tecnologias
acertadas, as quais são mantidas até então. Entretanto, para novos projetos, indica-se a nova geração da
arquitetura: Cloudsupport
. Acesse aqui o quadro comparativo
entre Websupport e Cloudsupport.
Próximos Passos
O capítulo Como Começar contém as instruções para iniciar
o projeto de aplicações usando o Cloudsupport
.