アーキテクチャ設計の考え方

デジタルアーカイブのシステムアーキテクチャは、プロジェクトの規模、予算、技術力、運用体制、そして将来の拡張性を総合的に考慮して設計する必要があります。筆者はこれまで、AWS上でのサーバ構築やDockerを用いた環境構築など、さまざまなアーキテクチャパターンを実践してきました。本章では、その経験に基づいて解説します。

システムの構成要素

典型的なデジタルアーカイブシステムは、以下の構成要素から成り立っています。

[Web[[[IRID/IFF[[[(Virt((u(O((CoNmMSa(sgeyonSoikSlt3/naQraDxL/ly/S/ModAMrurp)aopaa]roe)cin)]hag])eDa])B)])]]

AWS / クラウドでの構築

Amazon Lightsailを用いた構築

小〜中規模のデジタルアーカイブにおいて、Amazon Lightsailは手軽なクラウドプラットフォームです。筆者はAmazon Lightsailを用いたOmeka Sサイトの構築(独自ドメイン+SSL化を含む)で、Lightsailを使ったOmeka Sの構築手順を詳しく解説しました。独自ドメインの設定からLet’s EncryptによるSSL化まで、一連の手順をカバーしています。

初期設定の自動化スクリプトも作成しました。Amazon LightsailでOmeka Sの初期設定を行うscriptでは基本的なスクリプトを、Amazon LightsailでOmeka Sの初期設定を行うscript(Easy Adminモジュールの追加)では、Easy Adminモジュールを含む拡張版のスクリプトを公開しています。

Omeka Classicの場合は、Amazon Lightsailを用いたOmeka Classicサイトの構築(独自ドメイン+SSL化を含む)Amazon LightsailでOmeka Classicの初期設定を行うscriptが参考になります。

Amazon EC2での構築

より高い柔軟性が必要な場合は、Amazon EC2を使用します。筆者はArchivematicaのEC2へのデプロイ(Amazon EC2にArchivematicaを立てる)を実践しています。また、RDFストアのVirtuosoをEC2上に構築する方法についてもAWS EC2を用いたVirtuoso RDFストアの構築で解説しました。

SESによるメール送信

Omeka Sからのメール送信にAmazon SESを使用する方法については、Amazon Lightsail上に立てたOmeka SからAmazon SESでメールを送信するで紹介しています。ユーザー登録通知やパスワードリセットなどのシステムメールの送信に使用できます。

Docker / コンテナ化

Omeka S Docker

筆者はOmeka S Docker の紹介:デジタルコレクションのための最新かつセキュアなソリューションで、Dockerを用いたOmeka Sの導入方法を紹介しました。Docker Composeを使うことで、Omeka S、MariaDB、Solrなどのコンポーネントを一括で起動できます。

# docker-compose.yml の基本構成
services:
  omeka-s:
    image: dodeeric/omeka-s:latest
    ports:
      - "80:80"
    depends_on:
      - mariadb

  mariadb:
    image: mariadb:10.11
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: omeka

CORS対応

IIIFイメージサーバやAPIを外部から利用する場合、CORS(Cross-Origin Resource Sharing)の設定が必要です。Docker版のOmeka SでCORS対応を行うでは、Dockerコンテナ内でのCORS設定方法を解説しました。IIIF Serverモジュールに関連するCORS問題については、Omeka SのIIIF ServerモジュールでのCORSエラーOmeka SのImage ServerでのCORS対応でも詳しく対処法を紹介しています。

サーバ移行

Docker環境のサーバ移行についても検証しています。Omeka-S Docker環境を別サーバーに移行する完全ガイドでは、データベースとファイルを含めた完全な移行手順を解説しました。

オブジェクトストレージの活用

デジタルアーカイブの画像ファイルやメディアファイルを効率的に管理するために、S3互換のオブジェクトストレージを活用できます。

Omeka Sとオブジェクトストレージ

Omeka Sのファイルをmdx.jpのオブジェクトストレージに保存するでは、Omeka Sのファイルストレージをmdx.jpのオブジェクトストレージに変更する方法を紹介しました。MDX.jpのオブジェクトストレージに対するIPアドレス制限の実装方法では、セキュリティ面での設定も解説しています。

IIIFイメージサーバとオブジェクトストレージ

mdx.jpのオブジェクトストレージとCantaloupe Image Serverを使ってIIIF画像を配信するでは、オブジェクトストレージに格納した画像をCantaloupeを通じてIIIF Image APIで配信する構成を紹介しました。

RDFストアの構築

Linked Open Dataとしてメタデータを公開するには、RDFストア(トリプルストア)が必要です。

Virtuoso

筆者はVirtuosoを用いたRDFストアの構築について複数の記事を執筆しています。AWS EC2を用いたVirtuoso RDFストアの構築では、EC2上でのVirtuosoの構築手順を解説しました。Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法では、データの投入・管理方法を紹介しています。

Virtuosoの運用では、ヘルスチェック(Amazon EC2に立てたVirtuosoのヘルスチェックを行う)や再起動手順(Virtuosoが停止した際の再起動のためのコマンド)も重要です。

URIにアクセスした際にSnorqlの画面にリダイレクトする設定については、[RDF] URIにアクセスしたらSnorqlの画面にリダイレクトさせる設定で解説しました。

Dydra

クラウドベースのRDFストアとしてDydraも選択肢の一つです。Pythonを使ってRDFデータをDydraに登録するDydraへのAPI経由でのRDFデータ登録ガイドで、Dydraの使い方を紹介しています。

その他のRDFストア

AllegroGraphを使ってみるでは、AllegroGraphの導入を検証しました。また、Apache Jena FusekiへのSPARQLクライアントの対応についてはSPARQL クライアントを Apache Jena Fuseki に対応させるときにハマった 3 つのことで注意点を紹介しています。

バックアップ

Omeka Sのバックアップ

デジタルアーカイブのバックアップは不可欠です。gdriveを用いたOmeka Sの簡易バックアップでは、Google Driveへの簡易バックアップ方法を紹介しました。より本格的なバックアップについては、AWS Copilotを用いたOmeka Sデータの定期バックアップでECSを活用した定期バックアップの構成を解説しています。

セキュリティ

HTTPS対応、アクセス制御、脆弱性管理などのセキュリティ対策は、デジタルアーカイブシステムの運用において不可欠です。Omeka Sの運用環境(productionとdevelopment)の違いについては、Omeka SのSetEnv APPLICATION_ENVのproductionとdevelopmentの違いで解説しました。

まとめ

本章では、デジタルアーカイブのシステムアーキテクチャについて、筆者の実践に基づいて解説しました。AWS LightsailやEC2でのクラウド構築、Dockerによるコンテナ化、オブジェクトストレージやRDFストアの活用など、プロジェクトの規模と要件に応じた多様な構成が可能です。

次章では、デジタルアーカイブシステムの核となるプラットフォームの選定について、具体的な製品の比較を行います。

関連記事