floci 2.4:四朵雲在一台筆電上各開一個埠,互不依賴

摘要

floci 2.4 在本機跑四朵雲,24 毫秒啟動、13 MiB 空閒記憶體,MIT 授權、免憑證,514 條變更加深 EC2 與 CloudFormation。

推薦
軟體名稱
floci
版本
2.4
收費
免費
開源
開源
作業系統
WindowsmacOSLinux
更新時間
2026-11-09 16:57

floci 是一套跑在本機的雲端模擬器工具:AWS、Azure、GCP、OCI 四朵雲各對應一個獨立程式,各佔一個埠,各自是一份 MIT 授權的原生二進位檔,四者之間互不依賴,可以只開一個,也可以並排開滿。它不要雲端帳號,不要 auth token,沒有功能門檻,也不埋遙測;只要能跑 Docker,Windows、macOS、Linux 用的是同一套東西。剛發的 2.4 裡塞了五百多條變更,幾乎全部落在服務覆蓋的深度上。

四朵雲,四個程式,四個埠

四個模擬器的分派很直白:主程式對應 AWS,監聽 4566;Azure 版監聽 4577;GCP 版監聽 4588;OCI 版監聽 4599。每個都是一只容器、一個埠、一套協定,資料彼此不串。對同時要碰多雲的人來說,這比功能清單更實用:同一個測試腳本把 endpoint 換掉就能在另一朵雲上重跑,不必為每朵雲各維護一台虛擬機、各準備一份帳號。

名字來自卷積雲裡一類形狀像爆米花的雲團,英文寫作 cirrocumulus floccus。這個命名和定位是吻合的:它沒打算把雲端搬進本地,只是把雲端的介面在本地擺一份,讓程式先在小尺度上跑通。

Floci 控制台連上 Azure 本機執行環境的實例概覽
Floci 控制台連上 Azure 本機執行環境的實例概覽

原生二進位檔省下的那幾秒

模擬器用 Quarkus Native 編譯,底層是 GraalVM 的 Mandrel 發行版,產物是原生機器碼而不是跑在 JVM 裡的封裝。官方標稱的數字是 24 毫秒冷啟動、閒置時佔 13 MiB 記憶體,映像約 90 MB。對寫程式的人,這組數字只意味著「快」;對流水線的意義不同:每個任務起一套環境、跑完就拆,只有啟動開銷足夠小,才敢在二十個平行任務裡這麼做。

這類工具的常見做法是在容器裡跑一個完整的服務行程,冷啟動幾秒到幾十秒,常駐幾百 MB 記憶體,進了平行矩陣就開始搶記憶體、等逾時。原生編譯把這兩項一起壓了下去,代價是建置時間長、部分依賴要補反射設定,這是所有預先編譯方案共有的取捨。

真引擎撐起來的協定保真

模擬器最容易翻車的地方是「看起來對」:資料結構一樣、狀態碼一樣,行為不一樣,本機測試全綠,上線頭一小時就炸。floci 的對策是不打樁,把複雜的資料服務交給真實引擎。Lambda 的每次呼叫都跑在真實的 Docker 容器裡,Node.js、Python、Java、Go 的執行環境變數與線上對齊。RDS 起的是真的 PostgreSQL、MySQL 或 MariaDB,有完整生命週期與快照還原,走 JDBC 流量與 IAM 資料庫認證;ElastiCache 是真 Redis 容器,floci 自己在前面做 SigV4 代理;MSK 背後是 Redpanda,Athena 的查詢落在 DuckDB 邊車容器裡;EC2 的 RunInstances 直接拉起容器,帶 SSH 金鑰注入、UserData 執行與兩代 IMDS 中繼資料服務。

協定層面有兩處細節值得單獨說。IAM 不是擺設:Lambda、RDS、ECS、EC2、MSK、ECR、OpenSearch 都做完整的 SigV4 校驗,策略寫錯在本機就會報錯,而不是到了線上才暴露。專案自己維護的 AWS SDK 相容性測試共 1925 條,公布的口徑是全部通過。這是官方自報的數,不是第三方複核,但用來判斷能不能替掉手上那套環境已經夠參考。

一個控制台,四套執行環境

命令列之外還有個圖形介面,結構比看上去講究。瀏覽器裡的 Floci UI 用 React 和 Vite 建置,監聽 4500,只認 /api 開頭的請求;背後是 Bun 和 Hono 寫的 Cloud Proxy API,監聽 4501,按雲把請求分給 AWS、Azure、GCP、OCI 四個轉接層;轉接層再翻譯成各執行環境自己的協定,落到 4566 到 4599 那幾個埠上。說明頁那句「UI 不知道雲,代理不知道實作,轉接層負責翻譯,執行環境負責執行」,說的就是這條鏈路的分工。

Floci UI 的四層架構:瀏覽器、代理 API、轉接層與執行環境
Floci UI 的四層架構:瀏覽器、代理 API、轉接層與執行環境

好處是介面與雲端解耦:新增一朵雲,只要補一個轉接層和一份服務描述,控制台不用改。實際用起來,首頁給出目前實例的服務可用數與資源數,雲切換是右上角一個按鈕;儲存頁能看到桶的名字、類型、所屬雲和建立時間,新建與刪除都在同一行裡。Azure 那個實例顯示的是 9 of 28 services available,覆蓋面按雲的成熟度在走,不是四朵雲一視同仁。

Floci UI 的儲存瀏覽頁列出本地的三個桶
Floci UI 的儲存瀏覽頁列出本地的三個桶

2.4 把力氣花在哪

2.4 發於 10 月 31 日。按倉庫自動生成的變更記錄,這個版本有 210 條新功能、10 條效能改進、294 條缺陷修復,合計 514 條。集中在哪幾個服務上一眼能看出來:EC2 佔 62 條,CloudFormation 佔 59 條,DynamoDB 佔 40 條,Lambda Web 佔 22 條。CloudFormation 那一批補的是具體資源類型:EC2 前綴清單、WAFv2 的 IP 集、SES 郵件身分與接收規則、Route53 記錄組、Redshift 事件訂閱,以及 RDS 叢集的角色關聯。

這些條目單看都很枯燥,合起來說明一件事:它想讓你把基礎設施程式碼直接跑在本機。Terraform、OpenTofu、CloudFormation 的範本在真雲上試錯的成本是錢和時間,在本機試錯的成本只是一次重啟。發布節奏也配合這個用法:穩定版每月 15 日和月末各切一班,班次之間 nightly 標籤跟著主幹走,修完的第二天就能拿到。

上手之前該知道的幾件事

覆蓋不均是第一個要接受的現實。AWS 側是主力,服務上百項;Azure、GCP、OCI 的量級明顯小一截,控制台裡還有一批標著 coming soon 的條目。專案主要落在哪朵雲上,先翻對應那頁的服務清單再決定,別預設四朵雲一樣厚。

它還需要 Docker。凡是背後要起真實引擎的服務,都得有容器執行環境,機器上沒有這一層,那部分能力就是空的。狀態也是預設一次性的:停掉再起,拿到的是一朵乾淨的雲。這對跑測試是優點,對想攢一份長期本機資料的人是缺點,用之前先把儲存設定看清楚。

也別拿它做壓測。它保的是協定行為,不是吞吐指標。官方給的 Lambda 吞吐是每秒 289 次請求,這個數用來驗證功能足夠,用來衡量容量沒有意義。

更根本的一層判斷是:本機雲的價值不在省下那點雲端帳單,而在於把改一版、跑一遍、看結果的循環壓到幾十秒以內,同時讓編碼代理有一個隨便折騰也不會出事的地方。四個模擬器、一個控制台、一套原生二進位檔,都是圍繞這個循環做的取捨,所以它做得最細的地方是協定與引擎,最粗的地方是覆蓋面。

把雲端搬到本機是做不到的,把雲端的介面搬到本機卻可以。floci 選的是後一條路:它不承諾替掉真實環境,只承諾讓每一次試錯都發生在帳單之外。
floci下載地址
支援的作業系統: Windows macOS Linux