Arquitetura de Hardware
O E-Docs possui uma arquitetura de hardware robusta, composta por vários servidores e serviços que trabalham juntos para garantir o funcionamento do sistema. A seguir, descreveremos os principais componentes da arquitetura de hardware do E-Docs.
Servidores WEB/API
Atualmente, são compostos por quatro servidores Windows Server com IIS. Estes servidores são responsáveis por sustentar as aplicações WEB, API e DevArea do E-Docs. Cada servidor possui uma instância do E-Docs instalada para cada serviço, com as aplicações WEB e API configuradas para atender as requisições dos usuários e sistemas integrados, respectivamente.
Há um dimensionamento para atender a demanda média do sistema com apenas duas instâncias, com o ambiente completo servindo de escalabilidade horizontal e, também, para permitir atualizações online sem impacto para os usuários.
Servidores Background
Atualmente, são compostos por quatro servidores Windows Server com IIS. Estes servidores são responsáveis por sustentar as aplicações Background do E-Docs. Cada servidor possui uma instância do E-Docs instalada para cada serviço, sendo eles atualmente:
- BackgroundJobs
- ProcessJobs
- API de Certificado
- API de PDF
Cluster Kubernetes
Para permitir a execução de aplicações em containers, o E-Docs utiliza um cluster Kubernetes RedHat Openshift, composto por vários nós que executam os containers das aplicações. Este cluster é responsável por garantir a escalabilidade e disponibilidade das aplicações, permitindo que novas instâncias sejam criadas automaticamente em caso de falhas ou aumento de demanda.
Atualmente, as seguintes aplicações executam em containers no cluster Kubernetes:
- API Negócio Query
- API Agente Query
- API Elastic Query
- API Notificações Composer
- API Negócio Base
- API Classificação Query
- API de Document Models
- Redis (cache distribuído)
Para os próximos anos, a ideia é migrar todas as aplicações para containers, permitindo uma maior flexibilidade e escalabilidade do sistema, bem como padronizando o ambiente operacional do PRODEST.
Banco de Dados
O E-Docs utiliza um banco de dados SQL Server para armazenar os dados transacionais do sistema. O banco de dados é responsável por armazenar informações sobre processos, documentos, agentes, grupos, entre outros. O banco de dados é replicado no formato AlwaysOn para garantir a disponibilidade e integridade dos dados, além de permitir a recuperação em caso de falhas. Esse mesmo mecanismo de replicação poderá, futuramente, sustentar a separação física entre cargas de leitura e escrita prevista pelo padrão CQRS, descrito em E-Docs Next-Gen Architecture.
Como evolução da arquitetura, estamos trabalhando a segregação do banco de dados para atendimento de especificidades de cada aplicação, de forma a separar os dados do negócio principal dos dados auxiliares, estes utilizados como estratégia de cache persistente, funções administrativas e outras tarefas auxiliares.
ElasticSearch
O E-Docs utiliza o ElasticSearch para armazenar dados não transacionais, como caixas de documentos, processos, encaminhamentos, entre outros. O ElasticSearch é responsável por armazenar e indexar os dados de forma a permitir consultas rápidas e eficientes, garantindo que as informações sejam acessadas de forma rápida e consistente.
Atualmente, utilizamos um cluster de sete nós para garantir a disponibilidade e escalabilidade do ElasticSearch, com a replicação dos dados para garantir a integridade e recuperação em caso de falhas. Para os próximos anos, temos planos para migrar para a versão mais recente do ElasticSearch, revisando a arquitetura atual e aproveitando as novas funcionalidades e melhorias de desempenho.
MinIO
O E-Docs utiliza o MinIO para armazenar arquivos e documentos de forma distribuída e escalável. O MinIO é responsável por armazenar os arquivos de forma segura e eficiente, garantindo que os documentos sejam acessados de forma rápida e consistente. Atualmente, utilizamos um cluster para garantir a disponibilidade e escalabilidade do MinIO, com a replicação dos dados para garantir a integridade e recuperação em caso de falhas. O cluster armazena, atualmente, cerca de 56 TB em arquivos.
Redis
O E-Docs utiliza o Redis como solução de cache distribuído de alta velocidade, executado no cluster Kubernetes. Ele cumpre dois papéis principais: o armazenamento compartilhado dos dados de sessão dos usuários, de forma que a pessoa permaneça autenticada independentemente de qual instância atendeu a requisição (importante em cenários de balanceamento de carga); e o cache de respostas de APIs externas, como Acesso Cidadão e Organograma, evitando novas chamadas desnecessárias ao mesmo recurso.
Capacidade e Dimensionamento
Para sustentar o volume de uso do sistema, a infraestrutura do E-Docs opera com cerca de 184 vCPUs e quase 1 TB de memória RAM, distribuídos entre servidores de aplicação, bancos de dados e clusters de busca. O volume de dados sob gestão ultrapassa 100 TB, dos quais aproximadamente 56 TB correspondem a arquivos armazenados no MinIO e 40 TB a logs de auditoria.
Estes valores são um retrato de um momento específico e crescem continuamente, conforme novos órgãos e municípios passam a usar o sistema. Para os números de operação do E-Docs (como volume de documentos, páginas e requisições diárias), consulte a seção de números em E-Docs Next-Gen Architecture.