キャッシュ設定

dewyはアーティファクトをローカルキャッシュに保存することで、同じバージョンのアプリケーションを再度ダウンロードする際の時間を大幅に短縮します。このキャッシュ機能により、ネットワーク負荷の軽減と高速なデプロイメントが実現できます。キャッシュはファイルシステム上で自動的に管理され、ユーザーが意識することなく効率的な運用が可能です。

キャッシュの仕組み

dewyのキャッシュシステムは、ダウンロードしたアーティファクトを一意のキーで管理し、重複するダウンロードを自動的に回避します。

キャッシュキー

各アーティファクトは tag--artifact の形式で一意のキーが生成されます。このキーにより、バージョンとアーティファクト名の組み合わせで正確にキャッシュが管理されます。

# キャッシュキーの例
v1.2.3--myapp_linux_amd64.tar.gz
v2.0.0--frontend_linux_amd64.zip
v1.5.1--backend_darwin_arm64.tar.gz

このキー形式により、同じアプリケーションでも異なるバージョンやプラットフォーム用のアーティファクトが適切に区別されます。

現在バージョン管理

dewyは current という特別なキーを使用して、現在実行中のアプリケーションのバージョンを追跡します。この情報により、新しいバージョンが利用可能かどうかを効率的に判断できます。

# キャッシュディレクトリ内の例
.dewy/cache/
├── current                              # 現在のバージョン情報
├── v1.2.3--myapp_linux_amd64.tar.gz    # キャッシュされたアーティファクト
└── v1.2.2--myapp_linux_amd64.tar.gz    # 過去のバージョン

現在のバージョンと新しいバージョンが同じ場合、dewyは自動的にダウンロードをスキップし、既存のキャッシュを使用します。

重複デプロイの回避

キャッシュシステムにより、同じバージョンのアプリケーションが既にデプロイされている場合、不要な処理を自動的にスキップします。これにより、システムリソースの節約と安定した運用が実現できます。

ただし、サーバーモードでアプリケーションの起動に失敗している場合は、キャッシュが存在してもデプロイ処理が実行され、問題の解決が図られます。

キャッシュディレクトリの設定

キャッシュファイルの保存場所は、環境や運用要件に応じて柔軟に設定できます。

デフォルト設定

特別な設定を行わない場合、dewyは実行時の作業ディレクトリ内に .dewy/cache ディレクトリを自動作成します。

# デフォルトのキャッシュディレクトリ
./dewy/cache/

# 実際の配置例
/opt/myapp/.dewy/cache/
├── current
├── v1.2.3--myapp_linux_amd64.tar.gz
└── v1.2.2--myapp_linux_amd64.tar.gz

このデフォルト設定により、アプリケーションごとに独立したキャッシュ領域が確保され、相互干渉を防ぐことができます。

環境変数による設定

DEWY_CACHEDIR 環境変数を使用することで、キャッシュディレクトリを明示的に指定できます。この機能は、複数のアプリケーション間でキャッシュを共有したい場合や、特定のディスク領域を使用したい場合に有効です。

# 環境変数でキャッシュディレクトリを指定
export DEWY_CACHEDIR=/var/cache/dewy
dewy server --registry ghr://myorg/app --port 8080 -- /opt/app/current/app

# 複数アプリケーションでの共有キャッシュ
export DEWY_CACHEDIR=/shared/cache/dewy

共有キャッシュを使用する場合、同じアーティファクトを複数のアプリケーションで再利用できるため、ディスク使用量の削減とダウンロード時間の短縮が期待できます。

フォールバック機能

指定されたキャッシュディレクトリの作成に失敗した場合、dewyは自動的に一時ディレクトリにフォールバックします。この機能により、権限問題やディスク容量不足などの状況でも、システムの動作継続が保証されます。

# フォールバック時の一時ディレクトリ例
/tmp/dewy-123456789/

ただし、一時ディレクトリを使用した場合、システム再起動時にキャッシュが失われるため、恒久的なキャッシュディレクトリの設定が推奨されます。

キャッシュの運用

dewyのキャッシュは完全に自動管理されており、通常の運用では特別な操作は不要です。

自動管理

キャッシュの読み書き、サイズ管理、古いファイルの削除など、すべての操作がdewyによって透明に実行されます。ユーザーはキャッシュの存在を意識することなく、高速なデプロイメントの恩恵を受けることができます。

新しいバージョンのアーティファクトがダウンロードされると、自動的にキャッシュに保存され、以降の同じバージョンへのアクセスでは即座にキャッシュから読み込まれます。

サイズ制限

デフォルトでは、キャッシュディレクトリのサイズは64MBに制限されています。この制限により、ディスク使用量の無制限な増大を防ぎ、システムの安定した運用が保証されます。

# デフォルトの最大サイズ: 64MB
# 一般的なアプリケーションアーティファクトの場合、複数バージョンのキャッシュが可能

サイズ制限に達した場合、新しいアーティファクトの保存時にエラーが発生しますが、dewyは既存のキャッシュを活用して可能な限り効率的な動作を継続します。

アーカイブ展開機能

キャッシュされたアーティファクトは、デプロイ時に自動的に展開されます。dewyは以下のアーカイブ形式をサポートしており、形式を自動判別して適切な展開処理を実行します。

  • tar.gz / tgz: gzip圧縮されたtarアーカイブ
  • tar.bz2 / tbz2: bzip2圧縮されたtarアーカイブ
  • tar.xz / txz: xz圧縮されたtarアーカイブ
  • tar: 無圧縮のtarアーカイブ
  • zip: ZIP形式のアーカイブ

展開処理では、アーカイブ内のファイル権限や構造が適切に保持され、アプリケーションが正常に動作するための環境が整備されます。