> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nami.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# 서비스 비교

> S3-호환 스토리지와 Walrus 퍼블리셔 원시 API 간의 선택을 돕기 위한 가이드

> [!NOTE]
>
> Nami Cloud는 분산 스토리지와 상호작용하는 두 가지 방법을 제공합니다. 두 서비스 모두 Walrus를 기본 스토리지 계층으로 사용하지만, 서로 다른 인터페이스와 기능 세트를 제공합니다. 이 가이드는 특정 요구 사항에 따라 S3-호환 스토리지와 Walrus 퍼블리셔 원시 API 중에서 선택하는 데 도움을 줍니다.

## 서비스 비교 개요

| 기능 | S3-호환 스토리지 | Walrus 퍼블리셔 API |
| - | - | - |
| 지연 시간 | 수백 밀리초 | \~10초 업로드 + 10초 가용성 |
| 스토리지 갱신 | 자동 (핸즈프리) | 수동 에포크 관리 |
| API 스타일 | 표준 S3 REST API | 커스텀 Walrus 프로토콜 |
| 학습 곡선 | 최소 (익숙한 S3) | 보통 (새로운 개념) |
| 기존 도구 지원 | 완전한 AWS SDK 지원 | 커스텀 통합 필요 |
| 성능 | Railgun (베타)와 함께 빠름 | 직접 네트워크 접근 |
| 분석 및 모니터링 | 메트릭 지원 | 메트릭 지원 |
| 스토리지 에포크 제어 | 자동화 (핸즈프리) | 수동 제어 가능 |
| Web3 통합 | 추상화된 레이어 | 직접 블록체인 접근 |

## 상세 서비스 분석

### **S3-호환 스토리지**

#### S3-호환 스토리지를 선택해야 할 때

* **AWS S3에서 마이그레이션** - 코드 변경 없음
* **빠른 프로토타이핑** - 익숙한 도구로 즉시 시작
* **간단한 스토리지 요구** - 복잡성 없이 파일 업로드/다운로드
* **팀의 익숙함** - 개발자들이 이미 S3 API를 알고 있음
* **타사 통합** - S3 엔드포인트를 기대하는 도구 사용

#### 장점

<ul>
  <li>**제로 마이그레이션 마찰** - 기존 S3 코드 및 도구와 작동</li>
  <li>**자동 관리** - 내장된 암호화, 갱신 및 최적화</li>
  <li>**익숙한 인터페이스** - 표준 S3 작업 (PUT, GET, DELETE, LIST)</li>
  <li>**Railgun 가속** (베타) - 내장된 성능 최적화</li>
  <li>**SDK 지원** - 모든 주요 언어에서 AWS SDK와 작동</li>
  <li>**빠른 설정** - 몇 분 안에 데이터 저장 시작</li>
</ul>

#### 단점

<ul>
  <li>**제한된 가시성** - 기본 Walrus 작업에 대한 통찰력이 적음</li>
  <li>**S3 제한** - S3 API 설계 패턴에 의해 제약받음</li>
</ul>

### **Walrus 퍼블리셔 원시 API**

#### 퍼블리셔 API를 선택해야 할 때

* **Web3 애플리케이션** - 직접 블록체인 검증 및 제어 필요
* **커스텀 워크플로우** - 전문화된 스토리지 통합 구축

#### 장점

<ul>
  <li>**다중 엔드포인트 관리** - 여러 퍼블리셔를 지역별로 제어</li>
  <li>**종합적인 분석** - 상세 메트릭, 로그 및 성능 데이터</li>
  <li>**직접 Walrus 접근** - 스토리지 에포크 및 블록체인 작업에 대한 완전한 제어</li>
  <li>**유연한 구성** - 특정 사용 사례에 대한 커스텀 설정</li>
</ul>

#### 단점

<ul>
  <li>**높은 지연 시간** - 10초 업로드 + 10초 가용성</li>
  <li>**수동 관리** - 스토리지 에포크 관리 필요</li>
  <li>**가파른 학습 곡선** - Walrus 프로토콜 개념 이해 필요</li>
  <li>**커스텀 통합** - 기존 SDK 지원 없음, 자체 클라이언트 구축 필요</li>
  <li>**더 복잡한 설정** - 엔드포인트 및 모니터링 구성 필요</li>
  <li>**S3 도구 지원 없음** - 기존 S3 CLI 도구나 라이브러리 사용 불가</li>
  <li>**높은 개발 비용** - 구현에 더 많은 시간 필요</li>
</ul>

## 성능 및 확장성 비교

### 지연 시간 및 처리량

> **S3-호환 스토리지**
>
> * **Railgun 가속** (베타): 전 세계적으로 100ms 이하
> * **단일 엔드포인트**: 단순성을 위해 최적화됨
> * **자동 캐싱**: 내장된 엣지 가속
> * **표준 작업**: S3 의미론을 가진 PUT/GET

> **Walrus 퍼블리셔 API**
>
> * **직접 네트워크 접근**: 네이티브 Walrus 성능
> * **다중 엔드포인트**: 퍼블리셔 간 로드 밸런싱
> * **지리적 최적화**: 가장 가까운 퍼블리셔로 라우팅
> * **배치 작업**: 효율적인 대량 업로드/다운로드

### 코드 예제 비교

```javascript S3-호환 스토리지 theme={null}
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
}));
```

```javascript Walrus 퍼블리셔 API theme={null}
// Walrus 퍼블리셔에 대한 직접 HTTP API 호출
const endpointKey = 'your-endpoint-key';
const response = await fetch(
  `https://walrus-mainnet-publisher.nami.cloud/${endpointKey}/v1/blobs?epochs=5`, 
  {
    method: 'PUT',
    body: fileBuffer
  }
);

const result = await response.json();
if (result.newlyCreated) {
  console.log(`저장 위치: ${result.newlyCreated.blobObject.blobId}`);
  console.log(`유효 기간: ${result.newlyCreated.blobObject.storage.endEpoch}`);
  console.log(`스토리지 비용: ${result.newlyCreated.cost}`);
} else if (result.alreadyCertified) {
  console.log(`이미 존재함: ${result.alreadyCertified.blobId}`);
  console.log(`유효 기간: ${result.alreadyCertified.endEpoch}`);
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.