Para o trabalho diário, o armazenamento de documentos é normalmente feito através de software de produtividade on-line e armazenamento em nuvem. Fica mais desafiador à medida que uma aplicação precisa processar, armazenar e recuperar volumes maiores. Usar um Sistema de Gerenciamento Eletrônico de Documentos (EDMS) é uma solução melhor, pois eles são projetados para armazenar, indexar e recuperar documentos com alto desempenho e disponibilidade, e alguns incluem recursos como metadados personalizáveis e controle de versão.
Embora haja muitas soluções EDMS baseadas em SaaS disponíveis, você pode implantar seu próprio EDMS de código aberto para manter o controle completo sobre seus dados. Neste post, você aprenderá como configurar um EDMS maia altamente disponível, apoiado por um banco de dados PostgreSQL.
Benefícios do EDMS
Esta configuração é ideal se você armazena e processa um grande número de documentos e precisa de um EDMS que esteja anexado a uma aplicação baseada na web, eliminando a necessidade de qualquer instalação do lado do cliente. A execução de um EDMS como um hub central garante:
- segurança, privacidade e controle total de seus dados;
- fácil integração com software de terceiros; e
- automação de fluxos de trabalho de documentos para processos comerciais.
Por que PostgreSQL?
O PostgreSQL é um poderoso sistema de gerenciamento de banco de dados de código aberto de código aberto que é altamente valorizado por sua escalabilidade, segurança e desempenho. A fim de suportar escalabilidade de ponta a ponta para sua aplicação, seu banco de dados também precisa estar altamente disponível, de modo que este exemplo de arquitetura incorpora uma ferramenta de replicação especificamente para o PostgreSQL.
Começando com o EDMS maia
Mayan é um EDMS de código aberto baseado na web escrito em Python. Os padrões maias (por projeto) para instalação e execução em um único sistema; todos os componentes de sua aplicação e banco de dados podem viver em um único servidor ou dentro de vários containers Docker. Embora isto seja ótimo para testes ou ambientes triviais, para um ambiente de produção queremos alta disponibilidade e um conceito amplamente conhecido e adotado conhecido como o princípio SoC (Separation of Concern). Esta é a melhor prática crucial para a construção de aplicações em camadas e escaláveis. Esta arquitetura de referência demonstra como fazer isso com o Mayan.
Prós
- Código aberto significa sem taxas de licenciamento
- Armazenar, visualizar e reverter facilmente versões de documentos
- Busca de texto completo de documentos usando metadados personalizáveis definidos pelo usuário
- Controles de acesso flexíveis para projetar funções e permissões de usuário eficazes
- Fluxos de trabalho personalizáveis com acionadores de eventos para manter os documentos atualizados
Contras
- Complexo para casos de uso menor
- A interface do usuário é menos intuitiva do que outras soluções
- Recurso pesado para CPUs com reconhecimento óptico de caracteres (OCR)
Arquitetura de referência de aplicação
Para otimizar as capacidades dos maias em aplicações do mundo real, nossa arquitetura utiliza:
- NGINX: Servidor Web
- Prometheus & Grafana: Monitoring e ferramentas de observabilidade
- PostgreSQL: Base de dados
- Bucardo: replicação bi-direcional de banco de dados PostgreSQL
- Linode Object Storage: S3-armazenamento compatível e altamente disponível
- mantidos vivos: IP failover
Um NodeBalancer distribui o tráfego para nossos nós de aplicação. Se um servidor de aplicação for desligado, o serviço de balanceamento de carga começará apenas a direcionar o tráfego para o nó saudável. Assim que o nó insalubre se recuperar, ele retomará as conexões de balanceamento como antes. Isto facilita a adição, remoção ou atualização de servidores de aplicação sem tempo de inatividade, tudo enquanto mantém as conexões com os nós do banco de dados PostgreSQL.
Para o "cérebro" do aplicativo, o Mayan e o NGINX são implantados nas mesmas máquinas virtuais e podemos aproveitar o suporte do Mayan para o s3boto3 como um backend de armazenamento para fazer upload de nossos documentos para o S3 compatível com o Linode Object Storage.
Se sua aplicação é de missão crítica e utiliza o PostgreSQL como um banco de dados backend primário, a incorporação do Bucardo oferece uma melhor garantia de tempo de funcionamento e torna seu banco de dados tolerante a falhas.
Você também pode conseguir alta disponibilidade e replicação com um serviço gerenciado de banco de dados que suporta PostgreSQL, mas tenha em mente que a maioria das ofertas DBaaS focam na atualização das versões do PostgreSQL e em manter seu cluster de banco de dados online e disponível. A implementação do Bucardo dá ao seu banco de dados PostgreSQL replicação bidirecional entre dois ou mais nós de banco de dados, garantindo que seu banco de dados esteja altamente disponível.
Neste exemplo, todos os nós são protegidos com Cloud Firewalls para proteção contra a Internet pública e se comunicam internamente por meio de VLAN privado. Os servidores de aplicativos se conectam aos bancos de dados por meio de um endereço IP flutuante compartilhado VLAN com keepalived para facilitar o failover.
Keepalived, ou outro sistema de failover IP como o FRRouting (FRR), é implementado no nível do banco de dados para que um nó de banco de dados saudável seja conectado ao cluster de seus nós de aplicação.
Atingir tolerância a falhas para arquivos críticos
Um EDMS servirá freqüentemente como um núcleo central para as operações diárias e hospedará alguns dos arquivos mais críticos de sua organização. Nossa aplicação é construída com redundância em todos os níveis para tolerância a falhas de base e otimização do desempenho:
- Os documentos são armazenados no site Object Storage altamente disponível da Linode.
- O banco de dados está em um nó separado para aumentar o desempenho e evitar ter um único ponto de falha.
- Bucardo realiza a replicação automática do banco de dados entre os nós Postgres.
Explorar mais Conteúdo Técnico e Arquiteturas
Nossa equipe de Engenharia de Soluções compartilha estruturas, guias e ferramentas como esta para facilitar aos desenvolvedores a construção de aplicações que seguem as melhores práticas para a arquitetura de software. Confira nossa arquitetura de referência do cluster Galera para uma arquitetura MySQL/MariaDB altamente disponível, ou consulte nossos exemplos de arquitetura de referência disponíveis no Linode Docs.
Comentários (2)
How much those it cost to implement the mayan edms in a month and in a year.
Your swift response is best appreciated
If you’re using the Terraform script in our guide , you will deploy four 2GB compute instances ($48.00) and an Object Storage Bucket ($5.00). Additionally, as mentioned in the guide, you will want to deploy an additional node for Prometheus and Grafana ($5.00) as well as a NodeBalancer ($10.00). These services together would be roughly $68.00/month before taxes. This is assuming the amount of data your Object Storage was not more than 250GB and you stayed within your Network Transfer Allowance. Again, based on these assumptions, your yearly cost would be roughly $812.00.
You have the option to edit the Terraform script and change the default compute instance to a Nanode, however, I can’t guarantee the performance of the deployment with that plan.