Nami Cloudは、分散ストレージと対話するための2つの方法を提供しています。両方のサービスはWalrusを基盤としたストレージレイヤーを使用していますが、異なるインターフェースと機能セットを提供します。このガイドは、特定の要件に基づいてS3互換ストレージとWalrusパブリッシャーRaw APIのどちらを選択するかを決定するのに役立ちます。

サービス比較概要

機能S3互換ストレージWalrusパブリッシャーAPI
レイテンシ数百ミリ秒~10秒のアップロード + 10秒の可用性
ストレージ更新自動(ハンズフリー)手動エポック管理
APIスタイル標準S3 REST APIカスタムWalrusプロトコル
学習曲線最小(馴染みのあるS3)中程度(新しい概念)
既存ツールサポート完全なAWS SDKサポートカスタム統合が必要
パフォーマンスRailgunによる高速化(ベータ)直接ネットワークアクセス
分析とモニタリングメトリクスをサポートメトリクスをサポート
ストレージエポック制御自動化(ハンズフリー)手動制御が可能
Web3統合抽象化されたレイヤー直接ブロックチェーンアクセス

詳細サービス分析

S3互換ストレージ

S3互換を選ぶべき時

  • AWS S3からの移行 - コード変更はゼロ
  • 迅速なプロトタイピング - 馴染みのあるツールですぐに開始
  • シンプルなストレージニーズ - 複雑さなしにファイルをアップロード/ダウンロード
  • チームの馴染み - 開発者はすでにS3 APIを知っている
  • サードパーティ統合 - S3エンドポイントを期待するツールを使用

利点

  • 移行の摩擦ゼロ - 既存のS3コードとツールで動作
  • 自動管理 - 組み込みの暗号化、更新、最適化
  • 馴染みのあるインターフェース - 標準S3オペレーション(PUT、GET、DELETE、LIST)
  • Railgun加速(ベータ) - 組み込みのパフォーマンス最適化
  • SDKサポート - すべての主要言語でAWS SDKと連携
  • 迅速なセットアップ - 数分でデータの保存を開始

欠点

  • 限られた可視性 - 基盤となるWalrusオペレーションへの洞察が少ない
  • S3の制限 - S3 API設計パターンに制約される

WalrusパブリッシャーRaw API

パブリッシャーAPIを選ぶべき時

  • Web3アプリケーション - 直接的なブロックチェーン検証と制御が必要
  • カスタムワークフロー - 専門的なストレージ統合を構築

利点

  • マルチエンドポイント管理 - 複数のパブリッシャーを地域ごとに制御
  • 包括的な分析 - 詳細なメトリクス、ログ、パフォーマンスデータ
  • 直接Walrusアクセス - ストレージエポックとブロックチェーンオペレーションの完全な制御
  • 柔軟な設定 - 特定のユースケースに合わせたカスタム設定

欠点

  • 高いレイテンシ - 10秒のアップロード + 10秒の可用性
  • 手動管理 - ストレージエポックを管理する必要がある
  • 急な学習曲線 - Walrusプロトコルの概念を理解する必要がある
  • カスタム統合 - 既存のSDKサポートがなく、自分のクライアントを構築する必要がある
  • より複雑なセットアップ - エンドポイントとモニタリングの設定が必要
  • S3ツールサポートなし - 既存のS3 CLIツールやライブラリを使用できない
  • 高い開発コスト - 実装により多くの時間が必要

パフォーマンスとスケーラビリティの比較

レイテンシとスループット

S3互換ストレージ

  • Railgun加速(ベータ):グローバルで100ms未満
  • シングルエンドポイント:シンプルさのために最適化
  • 自動キャッシング:組み込みのエッジ加速
  • 標準オペレーション:S3セマンティクスでのPUT/GET

WalrusパブリッシャーAPI

  • 直接ネットワークアクセス:ネイティブWalrusパフォーマンス
  • マルチエンドポイント:パブリッシャー間での負荷分散
  • 地理的最適化:最寄りのパブリッシャーへのルーティング
  • バッチオペレーション:効率的な一括アップロード/ダウンロード

コード例の比較

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

const s3Client = new S3Client({
endpoint: "https://my-bucket.storage.nami.cloud",
credentials: {
accessKeyId: "your-access-key",
secretAccessKey: "your-secret-key"
}
});

// ファイルをアップロード - 標準S3 API
await s3Client.send(new PutObjectCommand({
Bucket: "my-bucket",
Key: "file.jpg",
Body: fileBuffer
}));