탈중앙화 컴퓨팅에서 Garage S3 호환 오브젝트 스토리지를 실행하는 방법

오브젝트 스토리지는 어디에나 있습니다. 애플리케이션은 이미지, 백업, 문서, 애플리케이션 에셋, 데이터셋 등 애플리케이션 외부 어딘가에 보관해야 하는 거의 모든 파일을 오브젝트 스토리지에 저장합니다.
많은 개발자에게 이는 클라우드에서 실행되는 S3 호환 스토리지 서비스를 쓴다는 뜻입니다.
하지만 S3는 위치가 아니라 인터페이스입니다. S3 호환 스토리지는 Amazon S3와 같은 API를 구현하므로, S3용으로 만들어진 애플리케이션과 도구는 스토리지가 실제로 어디에 호스팅되든 상관없이 이와 상호 작용할 수 있습니다. 덕분에 익숙한 S3 도구를 그대로 쓰면서 스토리지 자체는 탈중앙화 인프라에서 실행할 수 있다는 점이 중요합니다.
이 가이드에서는 오픈 소스 S3 호환 오브젝트 스토리지 솔루션인 Garage를 Acurast 탈중앙화 프로세서 네트워크에 배포합니다. 배포를 구성하고, Cargo로 Garage를 실행한 다음, 생성된 S3 호환 엔드포인트에 연결하고 첫 번째 파일을 업로드합니다.
마지막에는 Acurast 프로세서에서 실행되는 S3 호환 스토리지 인스턴스를 갖게 됩니다.
스토리지도 컴퓨팅 워크로드입니다
탈중앙화 컴퓨팅이라고 하면 스토리지가 가장 먼저 떠오르는 워크로드는 아닐 수 있습니다. 하지만 오브젝트 스토리지 서버도 결국은 소프트웨어입니다.
런타임, 네트워킹, 컴퓨팅 리소스, 그리고 데이터를 저장할 공간이 필요합니다. 적절한 Linux 환경만 주어지면 다양한 곳에서 실행할 수 있습니다.
이때 필요한 것이 Codename Cargo입니다.
Cargo는 완전한 Linux 기반 워크로드를 지원해 Acurast를 기존 Node.js 런타임 너머로 확장합니다. 개발자는 Python, Go, Rust, C++ 등 Linux에서 실행되는 기술로 만든 애플리케이션을 배포할 수 있습니다. 덕분에 기존 소프트웨어를 제한된 런타임에 맞춰 새로 만들지 않고도 Acurast 네트워크에서 실행할 수 있습니다. Garage가 좋은 예입니다.
탈중앙화 인프라를 위한 맞춤형 스토리지 프로토콜을 만드는 대신, 익숙한 S3 API를 이미 구현한 소프트웨어를 배포할 수 있습니다.
그 결과, 기존 S3 호환 도구와 애플리케이션이 통신할 수 있는 오브젝트 스토리지 서비스가 만들어집니다.
Acurast에 Garage 배포하기
Acurast Example Apps 저장소에는 기본 설정 대부분이 이미 준비된 Garage 예제가 들어 있습니다. 배포 스크립트가 Garage를 다운로드하고, 서비스를 구성하고, 필요한 터널을 설정한 뒤, 연결에 필요한 정보를 제공합니다.
따라서 실행하기 전에 해야 할 구성은 비교적 적습니다.
1단계: Garage 예제 앱 열기
먼저 Acurast Example Apps 저장소를 체크아웃하세요.
App Cargo Garage 폴더로 이동하세요.
이 안에 배포에 필요한 모든 파일이 있습니다. 대부분은 설정 파일이라 수정할 필요가 없습니다. Garage 바이너리 다운로드, 환경 준비, 서비스 접속을 가능하게 하는 터널 설정 같은 작업을 처리합니다.
주로 수정해야 할 구성은 환경 파일입니다.
2단계: 배포 구성
가장 먼저 필요한 값은 Acurast 니모닉입니다. 이 계정은 배포를 승인하고 비용을 지불하는 데 사용됩니다. 보안을 위해 주 지갑에 연결된 니모닉은 사용하지 마세요. 대신 배포 전용 니모닉을 따로 생성하고, 워크로드에 필요한 자금만 옮겨 두세요. 민감한 지갑 자격 증명을 로컬 구성이나 CLI 환경에 불필요하게 노출해서는 안 됩니다.
다음으로 콜백 URL을 구성하세요. Acurast가 배포를 준비할 때 Garage에 접속하는 데 사용할 고유 URL이 생성됩니다. 이 URL을 전달받을 곳이 필요합니다. 예제는 사용자가 지정한 콜백 URL로 POST 요청을 보내는 방식으로 이를 처리합니다. 따라서 POST 요청을 받아 그 내용을 표시할 수 있는 서비스라면 무엇이든 사용할 수 있습니다. 이 튜토리얼에서는 webhook.watch를 사용합니다. 개인 엔드포인트를 만들고, 그 URL을 복사해 구성에 추가하세요.
배포가 준비되면 해당 엔드포인트로 배포 정보가 도착하는 것을 볼 수 있습니다.
3단계: SSH 및 네트워크 구성
또한 SSH 비밀번호를 구성합니다. 모든 것이 예상대로 작동한다면 일반 운영 중에는 SSH 접속이 필요하지 않습니다. 주로 디버깅이나 문제 해결을 위해 프로세서에 직접 연결해야 할 때를 대비한 대체 수단입니다.
안전한 비밀번호를 사용하세요. 배포 네트워크로는 메인넷을 권장합니다. 사용 가능한 프로세서 풀이 더 크기 때문입니다.
또한 도메인 접미사 설정도 있습니다. 이 튜토리얼 작성 시점에는 직접 도메인을 준비하고 적절한 DNS 레코드를 구성해야 합니다. 이 과정은 앞으로 더 자동화될 예정이므로, Cargo가 발전함에 따라 정확한 요구 사항은 달라질 수 있습니다.
마지막으로 버킷 이름을 구성하세요. 기본 배포라면 기본값을 그대로 두어도 됩니다.
acurast.json 검토
배포하기 전에 acurast.json 파일을 살펴보세요. 이 파일에는 워크로드 실행 방식을 제어하는 추가 설정이 들어 있습니다.
중요한 매개변수 중 하나는 배포 기간입니다. 이 예제에서는 Garage를 4시간 동안 실행합니다. 테스트에는 충분하지만, 만들려는 것에 따라 기간을 늘릴 수 있습니다.
여기서 네트워크도 구성할 수 있지만, 이 예제에서는 메인넷을 그대로 사용합니다. 필요한 Android 버전을 대상으로 하고 있는지도 확인하세요. 오래된 프로세서 환경은 Garage 배포에 필요한 기능을 모두 지원하지 않을 수 있습니다.
이제 스토리지 서비스를 시작할 준비가 되었습니다.
Garage 시작하기
Garage 예제 디렉터리에서 다음을 실행하세요: acurast deploy
Acurast CLI가 배포 과정을 단계별로 안내합니다. 배포를 제출하기 전에 해당 수수료가 표시됩니다. 구성된 수수료가 필요 이상으로 높다면 제안된 값을 대신 사용할 수 있습니다.
배포를 확정하면 그다음은 Acurast가 처리합니다. 배포가 등록되고, 프로세서가 준비되며, 필요한 서비스가 자동으로 시작됩니다.
몇 분 후 앞서 구성한 콜백 엔드포인트에 요청이 도착하기 시작합니다.
배포 확인하기
콜백 요청을 통해 프로세서에서 무슨 일이 일어나고 있는지 확인할 수 있습니다. 먼저 환경이 시작되고 있다는 로그가 보입니다.
이어서 프로세서가 SSH 서버를 설치하고, Garage를 다운로드하고, 터널을 설정합니다.
마침내 기다리던 정보, 즉 Garage 배포에 접속하는 데 필요한 생성된 URL과 자격 증명을 받게 됩니다.
그러면 로그에서 Garage가 완전히 배포되어 가동 중임을 확인할 수 있습니다. 이제 Acurast 프로세서에서 S3 호환 스토리지 서비스가 실행되고 있습니다.
이제 연결해 보세요.
S3 호환 스토리지에 연결하기
이 예제에서는 연결을 시연하기 위해 만든 간단한 UI를 사용합니다.
연결하려면 배포에서 받은 다음 네 가지 정보가 필요합니다:
- 생성된 엔드포인트 URL
- 액세스 키 ID
- 시크릿 액세스 키
- 버킷 이름
클라이언트에 이 값들을 입력하고 Connect를 클릭하세요. 이제 클라이언트가 Acurast 프로세서에서 실행 중인 Garage 인스턴스와 통신합니다.
Garage는 S3 호환 인터페이스를 제공하므로 시연용 UI만 사용할 필요는 없습니다. 호환되는 S3 클라이언트라면 무엇이든 적절한 엔드포인트와 자격 증명으로 구성해 이 배포와 상호 작용할 수 있습니다.
첫 파일 업로드하기
이제 스토리지가 실제로 작동하는지 확인해 보세요. 테스트 파일을 하나 고르고(이미지가 좋습니다) 인터페이스를 통해 업로드하세요.
업로드가 끝나면 파일이 버킷에 나타납니다. 여기서 파일의 URL을 확인하고, 공유하고, 다운로드하거나 삭제할 수 있습니다. 간단한 시연이지만, 바로 그것이 핵심입니다. 클라이언트 입장에서는 익숙한 S3 호환 오브젝트 스토리지와 상호 작용하는 것입니다. 특별한 점은 그 스토리지가 실행되는 장소입니다.
이 서비스를 기존 클라우드 인스턴스에 배포하는 대신, 이제 Garage는 Acurast 프로세서에서 실행되고 있습니다.
프로세서 하나는 백업 전략이 아닙니다
이 설정을 프로덕션 스토리지로 사용하기 전에 알아 두어야 할 중요한 한계가 있습니다.
이 예제에서는 데이터가 단일 프로세서에 저장됩니다. 해당 프로세서를 사용할 수 없게 되거나, 초기화되거나, Acurast 배포가 만료되면 저장된 데이터가 영구적으로 사라질 수 있습니다. 실험, 개발, 테스트 용도로는 충분히 유용합니다. 하지만 프로덕션 스토리지로는 부족합니다. 프로덕션 아키텍처에는 이중화가 필요합니다. 한 가지 방법은 여러 프로세서에 Garage 인스턴스를 여러 개 배포하고 그 사이에 복제를 구성하는 것입니다. 그러면 프로세서 하나가 오프라인이 되더라도 데이터의 다른 사본을 계속 사용할 수 있습니다. 이 구분이 중요한 이유는 S3 호환 API를 실행하는 것과 내구성 있는 오브젝트 스토리지를 제공하는 것이 서로 다른 문제이기 때문입니다.
이 예제는 첫 번째 문제를 해결합니다. 프로덕션 아키텍처라면 두 번째 문제도 해결해야 합니다.
앞으로 Acurast는 프로세서 하나에 의존하지 않아도 되는 솔루션을 모색하고 있습니다.
S3 호환 서버 그 이상
Garage는 Cargo가 Acurast에 가져오는 더 넓은 가능성을 보여 줍니다. 탈중앙화 컴퓨팅을 위해 새로운 스토리지 시스템을 만드는 것이 아닙니다. 기존 Linux 소프트웨어에 새로운 실행 장소를 제공하는 것입니다. 이는 중요한 차이입니다.
S3 호환성 덕분에 애플리케이션은 그 아래에서 무슨 일이 일어나는지 꼭 알 필요가 없습니다. 기반 인프라가 바뀌어도 익숙한 API와 계속 상호 작용할 수 있습니다.
그리고 Garage는 하나의 예일 뿐입니다. 같은 접근 방식을 데이터베이스, 백엔드 서비스, API, 개발자 인프라, 게임 서버, AI 에이전트 및 기타 Linux 워크로드로도 확장할 수 있습니다.
질문은 이것만이 아닙니다:
“탈중앙화 인프라를 위해 무엇을 만들 수 있을까요?”
점점 더 이런 질문이 됩니다:
“기존 인프라 중 무엇을 그곳에서 실행할 수 있을까요?”
Cargo와 함께라면 그 목록은 훨씬 길어집니다.
전체 동영상 튜토리얼 보기
이 가이드는 Acurast에 Garage를 배포하는 주요 단계를 다루며, 함께 제공되는 동영상 안내에서는 전체 과정을 처음부터 끝까지 보여 줍니다.
Garage 예제 애플리케이션을 구성하고, Acurast CLI로 실행하고, 배포 로그를 따라가고, 생성된 자격 증명을 확인하고, S3 호환 클라이언트를 연결하고, 파일을 업로드하는 방법을 볼 수 있습니다.
또한 Cargo의 더 큰 구상을 잘 보여 주는 시연이기도 합니다. 기존 Linux 애플리케이션을 실행하는 데 반드시 기존 클라우드 인프라가 필요한 것은 아닙니다.
S3 호환 버킷부터 시작해 보세요. 그런 다음 또 무엇을 옮길 수 있는지 살펴보세요.


