日常業務におけるドキュメントの保存は、通常、オンライン生産性ソフトウェアやクラウドストレージを利用して行われます。しかし、大量の文書を処理、保存、検索する必要があるアプリケーションでは、より困難な作業となります。電子文書管理システム(EDMS)は、文書の保存、索引付け、検索を高いパフォーマンスと可用性で行うように設計されており、カスタマイズ可能なメタデータやバージョン管理などの機能を備えているため、より良いソリューションとなります。
SaaSベースのEDMSソリューションは数多くありますが、独自のオープンソースEDMSを導入して、データを完全に管理することも可能です。この記事では、PostgreSQLデータベースに支えられた高可用性のMayan EDMSをセットアップする方法について説明します。
EDMSのメリット
この設定は、大量の文書を保管・処理し、クライアント側のインストールを必要としないWebベースのアプリケーションに接続されたEDMSを必要とする場合に最適です。EDMSをセントラルハブとして運用することで、以下のことが可能になります。
- セキュリティ、プライバシー、そしてデータの完全なコントロールを実現します。
- サードパーティ製ソフトウェアとの統合が容易であること
- ビジネスプロセスにおけるドキュメントワークフローの自動化。
なぜPostgreSQLなのか?
PostgreSQLは強力なオープンソースのオブジェクトリレーショナルデータベース管理システムであり、その拡張性、セキュリティ、性能は高く評価されています。アプリケーションのエンドツーエンドのスケーリングをサポートするために、データベースも高可用性である必要があります。そこで、このアーキテクチャ例では、PostgreSQL専用のレプリケーションツールを組み込んでいます。
メイアンEDMSを始めるにあたって
Mayanは、Python で書かれたウェブベースのオープンソースEDMSです。Mayanはデフォルトで(設計上)単一のシステムにインストールして実行します。アプリケーションとデータベースのコンポーネントはすべて、単一のサーバーまたは複数のDockerコンテナに格納することができます。これはテストや些細な環境には最適ですが、本番環境では高可用性と、SoC(Separation of Concern)原則と呼ばれる広く知られ、採用されているコンセプトが必要です。これは、階層化されたスケーラブルなアプリケーションを構築するための重要なベストプラクティスです。このリファレンス アーキテクチャは、Mayanでそれを実現する方法を示しています。
長所
- オープンソースのため、ライセンス料が不要
- ドキュメントのバージョンを簡単に保存、表示、元に戻すことができます。
- カスタマイズ可能なユーザー定義メタデータを用いたドキュメントの全文検索
- 柔軟なアクセスコントロールにより、効果的なユーザーの役割と権限を設計することができます。
- カスタマイズ可能なワークフローとイベントトリガーにより、ドキュメントを常に最新の状態に保つことが可能
短所
- 小規模なユースケースには複雑
- 他のソリューションに比べ、ユーザーインターフェースが直感的でない
- 光学式文字認識(OCR)が動作するCPUではリソースが重い
アプリケーションリファレンスアーキテクチャ
実世界のアプリケーションでMayanの能力を最適化するために、私たちのアーキテクチャは利用されています。
- NGINX:ウェブサーバー
- Prometheus& GrafanaMonitoring と観測可能性ツール
- PostgreSQLです。データベース
- Bucardo: PostgreSQLの双方向データベースレプリケーション
- LinodeObject Storage :S3-互換性と可用性の高いストレージ
- keepalivedIPフェイルオーバー
NodeBalancerは、アプリケーション・ノードにトラフィックを分散させます。もしあるアプリケーションサーバーがダウンした場合、負荷分散サービスは健全なノードにのみトラフィックを誘導するようになります。負荷分散サービスは、アプリケーションサーバーが停止した場合、正常なノードにのみトラフィックを誘導し、正常でないノードが回復するとすぐに、以前のように接続の分散を再開します。これにより、PostgreSQLデータベースノードへの接続を維持したまま、ダウンタイムなしにアプリケーションサーバの追加、削除、更新を簡単に行うことができます。
アプリケーションの「頭脳」としては、MayanとNGINX が同じ仮想マシン上にデプロイされており、Mayanのストレージバックエンドとしてのs3boto3のサポートを活用して、LinodeのS3-compatibleObject Storage にドキュメントをアップロードすることができる。
アプリケーションがミッションクリティカルで、プライマリバックエンドデータベースとしてPostgreSQLを使用している場合、Bucardoを組み込むことで、より優れたアップタイム保証とフォールトトレラントなデータベースを実現することができます。
PostgreSQLをサポートするマネージドデータベースサービスでも高可用性とレプリケーションを実現できますが、ほとんどのDBaaSサービスはPostgreSQLバージョンの更新とデータベースクラスタのオンライン化と利用可能性の維持に焦点を当てていることに留意してください。Bucardoを実装することで、PostgreSQLデータベースは2つ以上のデータベースノード間で双方向のレプリケーションを行うことができ、データベースの高可用性を確保することができます。
この例では、すべてのノードはパブリック・インターネットから保護するためにクラウド・ファイアウォールで保護され、内部ではプライベートVLAN を介して通信します。アプリケーション・サーバーは、フェイルオーバーを容易にするため、keepalivedの共有フローティングVLAN IPアドレスを介してデータベースに接続する。
Keepalived、またはFRR(FRouting)のような他のIPフェイルオーバーシステムは、健全なデータベースノードがアプリケーションノードのクラスタに接続されるように、データベースレベルで実装されています。
重要ファイルのフォールトトレランスの実現
EDMSは、多くの場合、日々の業務の中心的なハブとして機能し、お客様の組織の最も重要なファイルのいくつかをホストしています。私たちのアプリケーションは、フォールトトレランスのベースラインとパフォーマンスを最適化するために、あらゆるレベルで冗長性を持って構築されています。
- ドキュメントはLinodeの高可用性Object Storage に保存されます。
- データベースは別のノードに設置し、パフォーマンスを向上させ、 単一障害点を持つことを防いでいます。
- Bucardoは、Postgresのノード間で自動的にデータベースのレプリケーションを実行します。
技術コンテンツとアーキテクチャーをもっと見る
私たちのソリューションエンジニアリングチームは、開発者がソフトウェアアーキテクチャのベストプラクティスに従ったアプリケーションを簡単に構築できるように、このようなフレームワーク、ガイド、ツールを共有しています。高可用性MySQL/MariaDBアーキテクチャのGaleraクラスタリファレンスアーキテクチャをチェックしたり、Linode Docsで利用可能なリファレンスアーキテクチャの例を参照したりすることができます。
コメント (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.