Skip to main content

Arquitetura inicial da solução

 A definição da arquitetura é um passo muito importante para o desenvolvimento de uma solução para guiar o desenvolvimento e utilização do sistema produzido. Após as conversas iniciais com os representantes da CPTM, está claro que além de uma boa experiência para o usuário do aplicativo é de extrema importância que o sistema seja seguro e escalável, assim, necessitando de uma arquitetura que comporte um grande volume de usuários e garanta a segurança dos dados tanto dos sistemas da CPTM quanto dos dados dos usuários.

Desta forma, a representação da proposta de arquitetura a seguir foi pensada para suprir estas necessidades:

Diagrama de blocos

Arquitetura inicial
(Imagem 1: diagrama de blocos da aplicação)

Para entendermos o diagrama acima, é necessário entender os blocos que o compõem. Assim, os blocos são:

  1. Aplicativo

    • Função: método de interação dos usuários, permite verificar a situação das linhas, solicitar ajuda, entre outras funcionalidades.
    • Descrição: aplicação para dispositivos móveis que auxilia na utilização dos serviços da CPTM.
  2. Servidor dinâmico

    • Função: mediar as interações entre o aplicativo e o servidor principal.
    • Descrição: containers de servidor que são criados dinamicamente conforme o número de usuários, garantindo o funcionamento do servidor principal mesmo com alta carga e dificultando o acesso aos dados por meios externos.
  3. Servidor principal

    • Função: processar as requisições da API e do aplicativo e comunicar com o banco de dados.
    • Descrição: núcleo principal da aplicação. Gere todo o fluxo de dados, centralizando as requisições dos usuários e operadores.
  4. Banco de dados

    • Função: guardar os dados utilizados na aplicação como as credenciais dos usuários, linhas favoritas, entre outras informações guardar os dados utilizados na aplicação como as credenciais dos usuários, linhas favoritas, entre outras informações.
    • Descrição: bloco responsável pelo armazenamento das informações necessárias para o funcionamento da aplicação e métricas importantes para os operadores.
  5. API para operadores

    • Função: acesso facilitado ao banco de dados para a utilização em outros sistemas internos.
    • Descrição: rotas exclusivas para os operadores da CPTM para fornecer os dados da solução que podem ser conectadas a outros serviços utilizados.

Explicação da estrutura

Com o entendimento sobre as partes que compõem o sistema, é possível explicar a lógica para a utilização da estrutura proposta. A estrutura descrita no item anterior não difere consideravelmente da arquitetura padrão de uma solução para aplicativos móveis (app, servidor e banco de dados), contudo, as alterações feitas (inclusão do servidor dinâmico e API de operadores) foram pensadas para garantir as diretrizes de escalabilidade e segurança.

O servidor dinâmico permite que os usuários sejam separados em blocos menores de processamento para o servidor principal ao realizar um processamento inicial da requisição e criar uma fila de processamento para o servidor principal, garantindo que mesmo sobre um alto volume de requisições o sistema completo não seja sobrecarregado. O diagrama a seguir ilustra a separação feita pela arquitetura descrita:

Escalabilidade
(Imagem 2: diagrama de escalabilidade do projeto)

Outro ponto positivo desta arquitetura é o aumento da segurança da aplicação ao permitir o uso de diferentes tipos de criptografia para diferentes partes da aplicação, além de distanciar a camada de interação do usuário do banco de dados. Esta separação do app e do banco de dados é de extrema importância pois diminui a chance de ataques comuns como SQL injections e ataques DDoS afetarem todo o sistema, diminuindo o risco de vazamentos de dados e sequestros de sistemas.

Portanto, a arquitetura proposta foi desenvolvida com foco prioritário na escalabilidade e na segurança da aplicação. A separação entre as camadas de aplicação e banco de dados, aliada ao uso estratégico de criptografia, fortalece significativamente a proteção contra ataques comuns e minimiza os riscos de comprometimento de dados, oferecendo uma base robusta e segura para o crescimento sustentável do sistema.