🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

我已將程式碼部署到:

  • 裸機伺服器,風扇故障時發出刺耳的尖叫聲。

  • 凌晨3點,VPS伺服器神秘重啟。

  • 需要三個 YAML 參數和一個 Helm 咒語的 Kubernetes 叢集。

  • 當然還有 AWS——只有它的帳單才是真正一致的執行時。

經過多年的「雲端原生架構」實踐,我意識到了一些令人不安的事情:

雲端不是你的電腦。

這是一場談判。

控制的錯覺

當你寫 Go 程式碼:

err := db.QueryRowContext(ctx, query).Scan(&user.ID)

感覺像是命中註定。

當你寫 Rust 程式碼時:

let user = repo.find_user(id).await?;

感覺很安全。有條理。可控。歸心似箭。

您認為:

這段程式碼是我寫的。我了解這個系統。

但是在雲端呢?

  • 您的“伺服器”是虛擬的。

  • 您的「磁碟」已連接至網路。

  • 您的「網路」是軟體定義的。

  • 你的「安全邊界」是某人從 StackOverflow 複製貼上過來的 IAM 策略。

您目前未執行任何軟體。

你租用的是機率。

圍棋:樂觀主義者的語言

Go 是Google為大型分散式系統開發的。

它假定失敗。

if err != nil {
    return err
}

那不是錯誤處理。

這就是分散式系統創傷。

Go開發者明白一些前端工程師通常不懂的事:

一切都失敗了。

所有操作都會逾時。

所有操作都會重試。

一切都是謊言。

AWS 也印證了這一點。

你的 Lambda 冷啟動。

您的 ECS 任務已重新排程。

您的EKS節點消失了。

您的 RDS 連線池靜默失效。

Go 無法對抗這種混亂。

它聳聳肩,然後返回error

Rust:控制狂的語言

Rust 說:

只有證明自己配得上,才能獲得記憶體。

它迫使你直面所有權、生命週期和可變性。

然後我們將這個記憶體安全的二進位部署到:

  • 容器

  • 在節點上

  • 在集群上

  • 在 VPC 中

  • 負載平衡器後面

  • 在 CDN 後面

  • 在WAF背後

  • 在別人的資料中心後面

你取消了use-after-free

恭喜。

現在除錯為什麼你的 pod 無法連接到 S3,因為你的 IAM 角色缺少s3:ListBucket

新技術堆疊:全程使用 YAML

曾幾何時,「堆疊追蹤」是有意義的。

現在堆疊看起來是這樣的:

  • Rust 二進位檔案

  • Docker

  • Kubernetes

  • Terraform

  • AWS

  • 我是

  • VPC

  • 子網

  • 路線表

  • NAT網關

  • 網際網路閘關

  • 雲端提供者控制平面

  • 未知的行星排列

你修復了程式碼中的一個錯誤。

問題出在一個安全群組。

你增加了CPU佔用率。

問題出在檔案描述符長度限制。

你進行水平縮放。

問題出在缺少索引。

我們過去常常除錯函數。

現在我們來除錯生態系統。

AWS:史上最昂貴的分散式系統課程

AWS 不會發出很大的故障警報。

它會優雅地退化。

哪個更糟?

您的服務不會崩潰。

它的速度剛好慢到足以讓使用者悄悄離開。

計費控制面板呢?

它具有完美的可擴展性。

因為沒有日誌,所以你不會注意到bug。

你之所以會注意到,是因為你的信用卡公司打了電話給你。

巨石是誠實的

你可以對巨石建築發表任何看法。

他們是:

  • 可預測的

  • 可部署

  • 可以理解

  • 可偵錯

當系統故障時,你透過 SSH 連接到其中一台機器。

您已查看日誌。

你把它修好了。

現在?

你打開:

  • CloudWatch

  • X射線

  • 普羅米修斯

  • 格拉法納

  • 傑格

  • 資料狗

  • 還有三個 Terraform 標籤頁

你仍然不知道為什麼會發生503錯誤。

但事情還有轉折。

儘管如此…

Go 和 Rust 在雲端蓬勃發展。

為什麼?

因為它們是身處不誠實環境中的誠實語言。

Go 將失敗視為一種重要的價值。

Rust 在編譯時強制執行正確性。

兩者都能降低本質上存在不確定性的系統的不確定性。

雲層一片混亂。

Go 和 Rust 都是紀律。

正是這種張力讓他們走到了一起。

真正的技能不再是程式設計了

如今最優秀的雲端運算工程師不僅擅長編寫程式碼。

他們明白:

  • 網路拓撲

  • IAM爆炸半徑

  • 可觀測性策略

  • 延遲預算

  • 反壓

  • 故障域

  • 成本模型

換句話說:

我們並沒有停止做系統工程師。

我們只是將硬體外包,結果卻增加了複雜性。

最後想說

最終,雲端運算並沒有讓工程變得更容易。

它使責任變得抽象化。

抽象即力量。

但任何抽像都會造成漏洞。

Go 會因error而洩漏。

Rust 會透過Result洩漏。

AWS 的資訊外洩會透過您的發票外洩。

巨石從未對你說謊。

雲朵禮貌地微笑著,以毫秒為單位充電。


原文出處:https://dev.to/art_light/the-cloud-is-not-your-computer-why-go-and-rust-developers-secretly-miss-the-monolith-594c


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝21   💬3  
560
🥈
我愛JS
📝1   💬5   ❤️2
66
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付