FerroRepo
Rust-native 通用製品倉庫
何時收回成本?
回收週期取決於成本項目和替換範圍
該產品的回收週期取決於您目前的 AWS 支出、替換範圍和執行環境。請使用帳單模擬器識別符合的成本項目並取得粗略的節省估算。
一個 Rust-native 通用產物倉庫,以單個自包含二進位檔案執行,並支援 Sonatype Nexus Repository 3 和 JFrog Artifactory 的 wire protocol,因此現有 Maven、npm、pip、cargo、docker 和 helm 用戶端無需修改即可使用。無需 JVM,也無需維運外部資料庫(嵌入式 SQLite + 本地磁碟區或物件儲存),啟動時間遠低於一秒。
經典 Nexus 或 Artifactory 部署在提供單個產物前,就需要 JVM、數 GB heap 和外部資料庫;FerroRepo 的單二進位模式用一個安全加固二進位檔案替代這些元件,並以自包含 AMI 交付。v0.1.0 完整整合 18 種套件協定中的 12 種,並附帶 in-tree 一致性測試 — Maven、npm、OCI / Docker Registry v2、PyPI(PEP 503 系列)、Cargo(sparse index)、Go module proxy、Raw/Generic、NuGet v3、RubyGems、Helm(classic + OCI)、APT 和 YUM/DNF — 另外提供 Nexus REST v1 和 Artifactory 相容的管理介面。儲存採用分層(hot/warm/cold)並附帶內容定址重複資料刪除,支援可插拔的 S3 / GCS / Azure / MinIO blob 後端。預設啟用驗證:允許匿名讀取,但所有寫入和管理操作都需要已驗證主體。
面臨挑戰
傳統的製品倉庫如 Sonatype Nexus Repository 3 和 JFrog Artifactory 在服務單個製品之前,就需要 JVM、數 GB 的堆積記憶體以及外部資料庫才能運作。它們啟動緩慢且帶來了切實的維運開銷。團隊需要一個更輕量、更易於運作的倉庫,同時保持現有的 Maven、npm、pip、cargo、docker 和 helm 工具鏈不變。
運作原理
- 1
啟動單個自包含二進位檔案
FerroRepo 作為單個行程運作,無需 JVM 和外部資料庫,將元資料持久化到嵌入式 SQLite,並將 blob 持久化到本機磁碟區或物件儲存。它在小型執行個體上啟動時間遠低於 1 秒,並作為一個加固的、自包含的 AMI 交付。
- 2
現有用戶端無需修改即可指向它
FerroRepo 支援 Nexus Repository 3 和 Artifactory 的線上(on-the-wire)HTTP 協定,因此 Maven、npm、pip、cargo、docker、helm 和 apt/yum 用戶端無需修改設定即可直接指向它。v0.1.0 已完全接入 18 種協定中的 12 種,並附帶內建(in-tree)的一致性測試。
- 3
分層儲存並對 blob 進行重複資料刪除
儲存採用分層設計(熱/溫/冷),並透過內容定址進行 blob 重複資料刪除。利用 object_store,blob 後端可在 S3 / GCS / Azure / MinIO 之間進行插拔替換。預設開啟身分驗證 —— 允許匿名讀取,但所有寫入和管理操作都需要具有正確權限範圍的已驗證主體。
產品亮點
Nexus 3 + Artifactory wire-compatible — 現有建置工具(Maven / npm / pip / cargo / docker / helm)無需修改即可使用。
單一二進位檔案,無需 JVM 和外部 DB;亞秒級啟動,支援 SQLite + 可插拔 S3 / GCS / Azure / MinIO blob 儲存。
18 種協議中已有 12 種整合並附帶一致性測試;預設啟用 auth(匿名讀,驗證寫)。
包含內容
- 基於 Amazon Linux 2023 的自包含 AMI(Graviton / arm64,運作在 t4g、c7g、m7g 和 r7g 類執行個體上)
- 無需 JVM 和外部資料庫的單二進位檔案伺服器(嵌入式 SQLite 儲存元資料,本機磁碟區或物件儲存存放 blob,啟動時間低於 1 秒)
- 完全接入了 18 種協定中的 12 種(Maven、npm、OCI / Docker Registry v2、PyPI (PEP 503 家族)、Cargo 稀疏索引(sparse index)、Go 模組代理(module proxy)、Raw/Generic、NuGet v3、RubyGems 緊湊索引(Compact Index)、Helm classic + OCI、APT、YUM/DNF),外加相容 Nexus REST v1 和 Artifactory 的管理介面
- 分層的熱/溫/冷儲存,帶內容定址的 blob 重複資料刪除
- 透過 object_store 可插拔替換的 S3 / GCS / Azure / MinIO blob 後端
- 預設開啟身分驗證(允許匿名讀取;所有寫入和管理操作均需身分驗證;支援內建用戶或 OIDC 聯合身分驗證;在首次啟動時為每個執行個體生成唯一的隨機管理員密碼)
- 來自 abyo software 的支援([email protected],一個工作日内首次回應;透過 Private Offer 提供的 Enterprise 等級包含 24/7 SLA,且針對 Critical 嚴重級問題提供 1 小時回應)
適用場景
希望將 Nexus 或 Artifactory 替換為無需 JVM 和外部資料庫即可運作的單二進位檔案的團隊
需要一個能夠讓現有的 Maven、npm、pip、cargo、docker 和 helm 用戶端保持設定不變即可運作的、網路協定相容(wire-compatible)的製品倉庫
適用於 CI/CD 管道的快速啟動、低開銷單節點套件登錄表
運作一個適合公開映像檔的儲存庫,允許匿名讀取,同時透過身分驗證保護寫入
常見問題
支援哪些套件生態系統?
v0.1.0 已完全接入 18 種協定中的 12 種,並附帶 in-tree 一致性測試:Maven、npm、OCI / Docker Registry v2、PyPI(PEP 503 系列)、Cargo(sparse index)、Go module proxy、Raw/Generic、NuGet v3、RubyGems(Compact Index)、Helm(classic + OCI)、APT 和 YUM/DNF。其餘 6 種(Conan、Conda、CRAN、Hex、CocoaPods、Bazel)已聲明在規劃範圍內,目前傳回 501。老實說,這些未實作的協定目前還無法運作。
真的不需要 JVM,也不需要外部資料庫嗎?
是的。FerroRepo 作為無 JVM 的單一行程運作,將元資料持久化到嵌入式 SQLite 資料庫中,並將 blob 持久化到本機磁碟區或物件儲存中。無需運作任何外部資料庫。傳統的 Nexus 或 Artifactory 在提供單個製品之前需要 JVM、數 GB 的堆積記憶體以及外部資料庫,而 FerroRepo 用一個經過加固的單一二進位檔案取而代之,在小型執行個體上啟動時間遠低於 1 秒。
儲存是如何組織的?
儲存採用熱/溫/冷分層,並透過內容定址進行 blob 重複資料刪除。blob 後端可以透過 object_store 插拔切換 S3 / GCS / Azure / MinIO,而元資料則儲存在嵌入式 SQLite 中。
身分驗證是如何運作的?
身分驗證預設開啟,採用預設安全的策略。允許匿名讀取,而所有寫入和管理操作都需要具有正確範圍的已驗證主體。支援內建用戶或與外部 OIDC 發行商聯合,並在首次啟動時生成執行個體唯一的隨機管理員密碼 — 絕不使用預設或共享密碼。
它可以跨多個節點擴充嗎?
目前不行。支援的拓撲是單節點(單二進位),使用 SQLite 元資料以及 S3 上的 blob 層。水平擴充的多節點 / Postgres 元資料拓撲已在路線圖中,目前尚不支援。老實說,目前不提供多節點設定。
為什麼更便宜
假設在 us-east-1 為 50 名開發者運行內部 artifact 儲存庫, 儲存 3 TB Maven / npm / Docker 產物。
- m5.xlarge 隨需
- $175 / 月
- RDS PostgreSQL (db.t3.medium)
- $150 / 月
- S3 儲存 (3 TB)
- $70 / 月
- 月度合計
- $395 / 月
- FerroRepo 實例 (t3.medium + 軟體費)
- $80 / 月
- S3 儲存 (2 TB, 去重複後)
- $47 / 月
- 月度合計
- $127 / 月
按開發者數量選擇 FerroRepo 實例
| 團隊規模 | 推薦執行個體 | FerroRepo 實例費用 | 每月總計對比 Nexus 3 |
|---|---|---|---|
| ~10 名開發者 | t3.small | $40 / 月 | $55 / 月 (Nexus $300, −82%) |
| ~50 名開發者 | t3.medium | $80 / 月 | $127 / 月 (Nexus $395, −68%) |
| ~500 名開發者 | m5.large | $120 / 月 | $350 / 月 (Nexus $700, −50%) |
僅供參考。自託管 Nexus 3 採用典型的 m5.xlarge + RDS PostgreSQL (db.t3.medium) + S3 卸載架構。與付費的 JFrog Artifactory 相比, 僅授權費用就達 $3k–$10k/月, 因此此處以 Nexus 3 OSS 作為基準。FerroRepo 是無 JVM 與外部 DB 的單一二進位檔, blob 卸載到 S3 並按內容雜湊去重。
計費模式
按小時收取軟體費用 + EC2(t4g / c7g / m7g / r7g 級,Arm)。按執行個體類型計量。