O blog da AWS

Arquitetura do SEI (Sistema Eletrônico de Informações) na AWS

Por Jairo da Silva Junior, Senior Solutions Architect e Karlos Correia, Senior Solutions Architect

 

O Sistema Eletrônico de Informações (SEI), desenvolvido pelo Tribunal Regional Federal da 4ª Região (TRF4), é responsável pela gestão de processos e documentos eletrônicos. É cedido gratuitamente para instituições públicas e permite transferir a gestão de documentos e de processos eletrônicos administrativos para um mesmo ambiente virtual.

Neste contexto, diversos órgãos do Governo têm buscado formas de aumentar a disponibilidade, segurança, lidar com o aumento da demanda e reduzir custo com infraestrutura e gerenciamento de suas instalações do SEI. Neste blog falaremos de uma proposta de arquitetura para o SEI na AWS para atender estes requisitos.

 

Arquitetura

O SEI é uma solução construída em Java e PHP baseada em componentes de código aberto como Apache HTTPD, Apache Tomcat, LibreOffice, memcached, Apache Solr e MySQL. Os binários e códigos fonte são oferecidos no Portal do Software Público Brasileiro mediante cessão de uso junto ao Tribunal Regional Federal da 4ª Região (TRF4).

Quando planejamos a implantação na AWS, podemos nos beneficiar com a adoção de serviços gerenciados que reduzem o esforço de tarefas operacionais que não adicionam valor a missão dos órgãos, e nos permitem focar em melhorias dos serviços prestados para os cidadãos e servidores públicos. Dessa forma, precisamos investir menos esforço para manter as luzes ligadas e mais em entregar novas funcionalidades, garantindo que a aplicação se comporte de acordo com a expectativa dos usuários finais.

Para sistemas de missão crítica, como o SEI, um conceito importante é uma arquitetura com Múltiplas Zonas de Disponibilidade (Multi-AZ). Uma zona de disponibilidade (AZ) corresponde a um ou mais datacenters distintos com energia, rede e conectividade redundantes em uma região da AWS. As AZ’s proporcionam aos clientes a capacidade de operar aplicativos e bancos de dados de produção com alta disponibilidade, tolerância a falhas e escalabilidade em níveis superiores aos que um único datacenter pode oferecer. A escolha dos serviços corretos é fundamental para tirar o máximo proveito do conceito de Multi-AZ, por isso descreveremos a seguir algumas características dos serviços escolhidos para a arquitetura abaixo.

Figura 1 – Arquitetura do SEI em AWS

 

Para garantir alta disponibilidade (HA) da aplicação, o conceito de Multi-AZ é empregado para todas as camadas da aplicação:

  1. Rede de Entrega de Conteúdo: O Amazon CloudFront pode acelerar a entrega de sites, quer sejam de objetos estáticos (por exemplo, imagens, folhas de estilo, JavaScript, etc.) ou conteúdo dinâmico (por exemplo, vídeos, áudio, gráficos em movimento, etc.), para visualizadores em todo o mundo. Por padrão, o CDN oferece um cache multicamada que reduz a latência e a carga dos servidores de origem quando o objeto ainda não está no cache da borda. A integração com serviços como Application Load Balancerreduz a quantidade de requisições ao SEI, principalmente de conteúdo que está armazenado em cache e por consequência reduzindo a quantidade de recursos na camada de aplicação.
  2. Balanceamento de Carga: O Application Load Balancer pode ser provisionado automaticamente em múltiplas zonas de disponibilidade, permitindo distribuir automaticamente o tráfego entre as instâncias do SEI, além de escalar de forma automática, inclui mecanismos de segurança como integração com AWS WAF e AWS ACM, permitindo que seja feito o SSL Offload.
  3. Aplicação: O AWS Auto Scaling monitora os aplicativos e ajusta automaticamente a capacidade para manter um desempenho constante e previsível pelo menor custo possível. Com o AWS Auto Scaling, é fácil configurar a escalabilidade de aplicativos em poucos minutos. Utilizamos esse conceito para componentes que escalam horizontalmente como o SEI e SIP (Sistema de Permissões), permitindo que novas instâncias sejam adicionadas para aumentar a capacidade de atendimento de requisições da aplicação, e garantir que novos servidores sejam alocados em casa de falha, recurso que também pode ser utilizado para o Solr e JOD Converter.
  4. Caching: O Amazon ElastiCache, permite configurar, executar e escalar de forma transparente, conhecidos repositórios de dados em memória compatíveis com código aberto na nuvem. O Amazon ElastiCache é uma opção popular para casos de uso em tempo real, como armazenamento em cache, armazenamentos de sessão, jogos, serviços geoespaciais, análises em tempo real e filas. Isso permite que o SEI utilize o Memcached para acelerar o acesso a dados na sua camada de aplicação.
  5. Banco de Dados: O Amazon Relational Database Service (Amazon RDS) facilita a configuração, a operação e a escalabilidade de bancos de dados relacionais na nuvem. O serviço oferece capacidade econômica e redimensionável e automatiza tarefas demoradas de administração, como provisionamento de hardware, configuração de bancos de dados, aplicação de patches e backups. O Amazon RDS está disponível em vários tipos de instância de banco de dados – com otimização para memória, performance ou E/S – e oferece seis mecanismos de bancos de dados comuns, incluindo Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database e SQL Server.

Vale destacar dentre as opções o Amazon Aurora, que oferece as opções de compatibilidade com MySQL e PostgreSQL, criado especificamente para a nuvem e que combina a performance e a disponibilidade de bancos de dados empresariais tradicionais com a simplicidade e a economia de bancos de dados de código aberto. Dentre as características ressaltamos a separação da camada de armazenamento e computação, com o dado sendo replicado 6 vezes e distribuído em 3 zonas de disponibilidade. O failover em caso de falha em uma instância ocorre em menos de 30 segundos, oferecendo um alto nível de serviço e disponibilidade para o SEI. Além disso é possível escalar a capacidade e a performance de leitura com até 15 réplicas de leitura de baixa latência nas três zonas de disponibilidade. Essa arquitetura permite obter um throughput cinco vezes maior que o MySQL padrão e três vezes maior que o PostgreSQL padrão.

Figura 2 – Arquitetura de Armazenamento do Aurora em Multi-AZ

 

  1. Armazenamento de Documentos: Os sistemas de arquivo do Amazon EFS podem escalar automaticamente de gigabytes para petabytes de dados sem a necessidade de provisionar o armazenamento. Dezenas, centenas ou até mesmo milhares de instâncias de computação podem acessar um sistema de arquivos do Amazon EFS ao mesmo tempo, e ainda disponibiliza uma performance consistente para cada instância de computação. O Amazon EFS foi criado para ser resiliente e altamente disponível.

O Amazon EFS foi construído para uma escala massiva, com múltiplos acessos simultâneos em diferentes zonas de disponibilidade. Essa característica permite que aplicações como o SEI sejam construídas na AWS para tirar todo o proveito da Disponibilidade e Durabilidade dos serviços em nuvem. Além disso, o recurso de controle de ciclo de vida permite que arquivos com acessos pouco frequentes sejam movidos para uma classe de armazenamento de menor custo, de forma transparente para a aplicação e seus usuários. Quanto a performance, o serviço escala acompanhando o crescimento do sistema de arquivos, podendo alcançar uma performance superior a 10 GB/s e mais de 500.000 IOPS.

 

Figura 3 – Arquitetura do EFS em Multi-AZ

 

Segurança

Controle de Tráfego na Borda: O Amazon CloudFront é uma CDN altamente segura que oferece proteção para redes e aplicações. Todas as suas distribuições do CloudFront são protegidas por padrão contra os ataques de DDoS na camada de transporte e rede que ocorrem com mais frequência e visam os sites ou aplicações com o AWS Shield Standard. Para se defender contra ataques mais complexos, é possível adicionar um perímetro de segurança flexível e em camadas integrando o CloudFront com o AWS Shield Advanced e o AWS Web Application Firewall (WAF). As regras de firewall, selecionadas e gerenciadas por especialistas em segurança da Amazon, para proteção contra os CVEs comuns e os 10 principais riscos de segurança da OWASP são fornecidas com o AWS Managed Rules para AWS WAF. Além disso o WAF através da funcionalidade Bot Control, também oferece visibilidade e controle sobre o tráfego de bot comum e invasivo que pode consumir recursos em excesso, distorcer métricas, causar tempo de inatividade ou realizar outras atividades indesejadas.

Camadas de Rede: Componentes que compartilham os mesmos requisitos de acessibilidade são agrupados em camadas, por exemplo, os balanceadores de carga são colocados em sub-redes, enquanto o cluster de banco de dados, sem necessidade de acesso à Internet, deve ser colocados em sub-redes sem nenhuma rota para/da Internet. Também é possível implementar NAT gateway’s, caso exista a necessidade de baixar pacotes da Internet, permitindo que realizem o acesso em uma única direção, sem expor as instâncias.

Monitoramento e registro de log: O AWS CloudTrail aumenta a visibilidade sobre as atividades de usuários e recursos ao registrar as ações e as chamadas de API do Console de Gerenciamento da AWS. Você pode identificar quais usuários e contas chamaram a AWS, a origem dos endereços IP de onde as chamadas foram feitas e quando as chamadas ocorreram. Adicionalmente, é possível habilitar o registro em log dos fluxos de rede com VPC Flow Logs, registro de solicitações HTTP realizadas ao Application Load Balancer e CloudFront, e registro de solicitações inspecionadas pelo WAF diretamente para o S3, permitindo ter uma visão de momento ou histórica dos acessos a aplicação do SEI.

 

Proteção de dados

Criptografia em Trânsito: AWS fornece endpoints HTTPS usando o protocolo TLS (Transport Layer Security) para comunicação, proporcionando criptografia em trânsito quando você usar APIs da AWS. É possível usar o serviço AWS Certificate Manager (ACM) para gerar, gerenciar e implantar os certificados privados e públicos que você usa para estabelecer transporte criptografado entre sistemas para suas cargas de trabalho. Diversos serviços da AWS compatíveis com TLS, como Amazon Elastic Load Balancing, são integrados ao ACM para fornecer certificados X.509 públicos e privados e, em alguns casos, para alternar automaticamente os certificados em seu nome. Caso seu conteúdo seja distribuído por meio do Amazon CloudFront, ele também é compatível com endpoints criptografados e certificados gerenciados pelo ACM.

Criptografia em Repouso: O AWS KMS é um serviço gerenciado que permite criar e controlar com facilidade as chaves usadas para operações criptográficas. O serviço oferece uma solução de geração, armazenamento, gerenciamento e auditoria de chaves altamente disponível para que você criptografe ou assine digitalmente dados nos suas próprias aplicações ou controle a criptografia de dados nos serviços da AWS. Estas chaves podem ser utilizadas para garantir que dados armazenados no Amazon RDS e Amazon EFS, de forma que não sejam passíveis de leitura por nenhum usuário ou aplicativo sem a autorização adequada, que inclui uma chave válida.

 

Migração

A migração do SEI de um ambiente on-premises para AWS pode utilizar diferentes estratégias como Re-host (Lift and shift), onde move-se a aplicação sem mudanças, e ferramentas como o AWS Application Migration Service (AWS MGN) podem ser utilizadas para automatizar este processo, porém, neste blog iremos focar numa estratégia de Re-platform (Lift, Tinker and Shift), onde poderemos realizar algumas otimizações de Nuvem para obter os benefícios descritos na Arquitetura de Referência.

A migração de dados requer planejamento de forma a garantir que a transferência inicial e incremental dos dados aconteça no menor tempo possível, sem aumentar significativamente a carga na origem dos dados e com o mínimo de interrupção no serviço. Na AWS podemos contar com serviços para simplificar e otimizar as tarefas de migração do Servidor de Arquivos (NFS) e Banco de Dados:

  1. AWS DataSync permite transferir arquivos de um servidor on-premises para um serviço gerenciado na AWS como o Amazon EFS. Com o DataSync, é possível transferir dados rapidamente da rede para a AWS. Ele usa um protocolo de rede especialmente criado e uma arquitetura paralela e multithread para acelerar as transferências.
  2. AWS Snowball**, é um dispositivo de computação, migração de dados e armazenamento de borda, que é enviado diretamente para o local onde se encontram os dados e permite a cópia com performance de rede local. Os dispositivos do Snowball Edge Storage Optimized fornecem armazenamento de blocos e armazenamento de objetos compatível com o Amazon S3, com capacidade para 80TB. Concluída a cópia dos dados é só remeter de volta para a AWS.
    **Ele é ideal para transferência de dados em larga escala, especialmente quando as condições de rede impedem cronogramas realistas para transferir grandes quantidades de dados para e da AWS.
  3. O AWS Database Migration Service ajuda você a migrar bancos de dados para a AWS de modo rápido e seguro. O banco de dados de origem permanece totalmente operacional durante a migração, minimizando o tempo de inatividade de aplicativos que dependem do banco de dados. O AWS Database Migration Service pode migrar dados de/para a maioria dos bancos de dados comerciais e de código aberto mais usados. O AWS Database Migration Service viabiliza migrações homogêneas, como de Oracle para Oracle, além de migrações heterogêneas entre plataformas de banco de dados diferentes, como de Oracle ou de Microsoft SQL Server para Amazon Aurora.

Figura 4 – Migração de dados do SEI (on-premises) para AWS

 

As ferramentas acima permitem realizar tanto a carga inicial dos dados, quanto a replicação contínua/diferencial. No caso do AWS DMS é utilizado o mecanismo de CDC (Change Data Capture) para capturar mudanças no log de transações das bases de dados e aplicá-las diretamente em uma base de dados destino, já com o DataSync é possível realizar a comparação entre um sistema de arquivos on-premises com outro na AWS e replicar apenas as diferenças desde a última sincronização. Permitindo que seja realizado o cut over para a Nuvem com o mínimo de indisponibilidade.

Com o processo de migração de dados estabelecido, é possível iniciar o provisionamento e configuração dos componentes da camada de aplicação, como Imagem de máquina da Amazon (AMI) e Grupos Auto Scaling para o SEI/SIP e Solr, Application Load Balancer, CloudFront e WAF.

Após os testes iniciais e validação do ambiente pode-se programar uma interrupção, garantir que a sincronização de banco de dados e servidor de arquivos foram concluídas e realizar a atualização do registro no DNS para o nome da distribuição CloudFront.

 

Conclusão

Nesta postagem, falamos sobre a Arquitetura do SEI (Sistema Eletrônico de Informações) na AWS, onde levamos em consideração as melhores práticas do AWS Well-Architected Framework, apresentando uma solução com segurança, excelência operacional, resiliência, confiabilidade e eficiência de custos. A arquitetura proposta permite elevar o nível de serviço do SEI a um patamar raramente encontrado em ambientes on-premise e com um processo de implementação e migração simplificado. Além disso o uso mais extenso de serviços gerenciados da AWS, diminuem substancialmente as atividades operacionais de manutenção e crescimento do SEI, permitindo que mais recursos sejam direcionados para tarefas mais aderentes a missão do órgão.

 


Sobre os Autores

Jairo Silva Junior é Arquiteto de Soluções na AWS no time de Public Sector com foco em Governo. Anteriormente atuou em diversos papéis no ciclo de entrega de software, como desenvolvimento, arquitetura e operação, em diversos tipos de empresas. Possui Mestrado em Ciência da Computação e é apaixonado por viagens e comida.

 

 

 

 

Karlos Correia é Arquiteto de Soluções da Amazon Web Services para o setor público e atua especificamente com Governo Federal. Trabalhou anteriormente com arquitetura e planejamento de infraestrutura em empresas do setor de telecomunicações e um é apaixonado por aviação.