Introdução

O que é 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 escaláveis baseadas em microsserviços. As linguagens principais são Java e JavaScript e os frameworks principais são Spring Boot, Next.js e React Native, abrangendo do backend ao frontend, incluindo soluções para API Gateway e Observabilidade.

A arquitetura Cloudsupport define padrões que promovem um código-fonte enxuto, coeso, organizado e de fácil manutenção, favorecendo a produtividade e a evolução contínua do sistema. Ela também estabelece diretrizes e boas práticas para o uso eficiente dos frameworks selecionados.

Todos os frameworks podem ser utilizados sem limitações!

Clique aqui e começe a desenvolver seguindo as boas práticas da arquitetura Cloudsupport!

Escopo

A arquitetura Cloudsupport contempla:

  • Manual do Desenvolvedor - a presente documentação - que descreve os padrões técnicos, regras e convenções adotadas.

  • Bibliotecas de apoio que simplificam o desenvolvimento e a adoção dos padrões recomendados.

    • Basta adicionar a biblioteca no seu projeto Java ou React que os frameworks recomendados são importados automaticamente, além de componentes extras providos pela arquitutura que viabilizam um o código-fonte mais enxuto da aplicação.
  • Arquétipos de aplicações, que são exemplos simples e funcionais de aplicações desenvolvidas na arquitetura Cloudsupport. Podem ser copiados como ponto de partida para novos projetos. É muito simples começar!

Todas as bibliotecas e arquitétipos são open source e gratuitos.

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 [email protected]. Política de Privacidade e Termos de Uso são aplicados.

Bibliotecas

As bibliotecas de apoio da arquitetura Cloudsupport são:

  • Biblioteca Java para backend, que extende o Spring Boot com:

    • Motor para implementação de rotinas (jobs) em background com suporte a: multihreading, processo Produtor-Consumidor, agendamento, monitoramento, gerenciamento programático ou via endpoints Actuator, persistência do progresso e controle de falhas.

    • Integrações com Kubernetes para provimento de alta disponibilidade.

    • Complementos que auxiliam a implementação orientada ao requisito funcional, uma abordagem da arquitetura que visa garantir código-fonte mais coeso e bem encapsulado.

  • Extensão OpenTelemetry, que complementa o instrumentador OpenTelemetry Java Agent para captura de tracing das camadas de software definidas na arquitetura.

  • Biblioteca JavaScript para frontend web, que extende o React e Next.js com:

    • 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 JavaScript para frontend mobile, que extende o React Native com:

    • Suite com mais de 50 componentes de UI, contemplando tipografia, campos de entrada, menus, overlays, exibição de imagens, gráficos, suporte a temas e framework extensível de validação de formularios.
  • Biblioteca JavaScript, que oferece uma solução simplificada para persistência de dados em aplicações móveis.

Tecnologias

São players importantes que proveem tecnologias alicerce da arquitetura Cloudsupport:

Tecnologias

  • VMware: Mantém o Spring Boot e seus frameworks, um dos maiores projetos enterprise para Java.

  • Meta: Mantém o React e React Native, frameworks amplamente utilizados para web, iOS e Android.

  • Google: Desenvolveu o Kubernetes, ferramenta para orquestração de containers, que alcançou nível graduado no CNCF (Cloud Native Computing Foundation). O CNCF é um projeto da Linux Foundation criado por grandes empresas como Google, Twitter, Intel, Cisco, IBM, Red Hat.

Todas as tecnologias utilizadas são open source e permitem uso governamental e comercial.

Conheça também a ferramenta web Kubepit, que automatiza a publicação de aplicações em ambiente Kubernetes através de um fluxo de solicitação e aprovação de mudança, garantido rastreabilidade, segurança e auditoria. Com Kubepit o time não precisa conhecer o Kubernetes. A ferramenta monitora a implantação e emite notificações do andamento.

Visão Geral

Estes são os principais componentes de uma solução baseada na arquitetura Cloudsupport:

Componentes

  • Common Resources: São os recursos corporativos comuns a todos os ambientes, seja produção, teste ou desenvolvimento. Para on-premises, 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).

  • Kubernetes: Podendo ser a distribuição oficial, proprietária (ex: OpenShift) ou serviços em cloud como Amazon EKS, Google GKS, Azure AKS. Réplicas do cluster pode, existir para fins do ambiente de teste ou homologação.

  • User: Representa o ambiente do usuário, onde estão as aplicações de frontend, sejam Web ou móveis.

  • DB: Banco de dados, como PostgreSQL, Oracle, Aurora, Cassandra, etc.

  • Storage: Armazenamento de arquivos, como NFS, S3, etc.

  • Workstation: Estação de trabalho do desenvolvedor, composta essencialmente por IDEs (Ambientes de Desenvolvimento Integrado), como IntelliJ, Visual Studio Code, Xcode e por SDKs (Software Development Kit).

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 open source.

Próximos Passos

Leia o capítulo Como Começar, que contém as instruções para iniciar o desenvolvimento de aplicação usando a arquitetura Cloudsupport.