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:

  1. Prover durabilidade e segurança nas aplicações desenvolvidas através da adoção de tecnologias padrões de mercado, maduras e com grande suporte da comunidade.

  2. 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.

  3. 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.

  4. Prover alta produtividade através da disponibilização de bibliotecas que fornecerão configurações padrões e componentes comuns às aplicações.

  5. Permitir alta disponibilidade com zero downtime durante a atualização de versões da aplicação através da integração com Kubernetes.

  6. Permitir escalabilidade pela adoção de patterns relacionados à abordagem de desenvolvimento por microsserviços.

  7. 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:

Tecnologias

  • 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 pelo CNCF (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:

Componentes

  • Common Resources: São os recursos corporativos comuns a todos os ambientes, seja produção, teste ou desenvolvimento. Sugere-se o GitLab como ferramenta de SCM e CI/CD, o Nexus Repository como repositório de bibliotecas compartilhadas (Maven e NPM) e de imagens Docker (Docker Registry).

  • Cluster Kubernetes: Podendo ser a distribuição oficial, composta pelo Calico como driver de rede e NGINX 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.