OpenTofu路在何方:定量分析Terraform issue資料,洞察使用者需求|OpenTofu Day 閃電演講

Seal软件發表於2024-04-01

數澈軟體 Seal 首席架構師李平輝提交的演講議題“Alias Terraform=Tofu. Job's Done, Now What?”入選 KubeCon EU 同場活動 OpenTofu Day,本文為演講實錄。

大家好,我是 Lawrence,是 Seal 的首席架構師。今天將由我為大家帶來 Lightening Talk。在 Seal,我們研發了一款開源軟體 Walrus。透過 Walrus,使用者能夠構建適用於多雲的應用程式抽象。在 Walrus 上我們還使用了 Terraform 這樣的基礎設施即程式碼(IaC)技術進行資源配置,讓運維團隊能夠逐步且順利過渡到開發者自助服務。我們從 OpenTofu GA 就對其開始進行驗證和整合。所以只要你熟悉 Terraform,那麼從 Terraform 轉到 OpenTofu 從 Day1 開始就是一件非常簡單的事情。

自 OpenTofu GA 以來已有幾個月,這裡我快速總結了一下這段時間內 OpenTofu 的綜合表現。整體來看 OpenTofu 得到了良好的維護,透明度也很高,例如專案有每週更新,有 TSC(Technical Steering Committee) 摘要,這樣使用者就可以輕鬆地跟進或瞭解專案的進展和方向。此外,OpenTofu 每月有數百次的 commits,這個數量和 Terraform 不相上下。並且 OpenTofu 的文件也非常詳盡,包括相容性承諾、遷移指南和許多其他實用資源。

當問到社群使用者遷移到 OpenTofu 的原因,許可證顯然成了頭等因素。那麼除此之外還有其他原因嗎?我們一起來看看。

雖然 OpenTofu 從時間上來看是一個非常新的專案,但它完美繼承了 Terraform 的功能與特性,因此我們依舊能從 Terraform 過往的一些資料來獲取相關經驗。這裡我將列舉一些有意思的資料,這些資料和分析都是公開來源,如果大家感興趣的話可以 follow 這個 repo (https://github.com/gitlawr/tofucon-2024-talk)。我對 Terraform 在 GitHub 上的 issue,comment 以及 event 的資料進行了簡單彙總,這裡我主要關注的是增強和建議相關的 issue,而一些和今天演講主題關聯度不太高的因素並未包含在今天的資料展示中。

我們先從一些基本 issue 來看。在 Terraform 中存在時間最久且至今還未解決的 enhancement issue 是什麼?這個 issue 要從2016年說起,該 issue 是關於支援 Docker Provision 的。這個 issue 可能在我們日常工作流中並不是很關鍵或重要,不過看樣子還是會長期存在。那麼這些 issue 中的回覆數量最高是多少呢?答案是1038,而且主要集中在關於在 Terraform 後段配置模組中使用變數。從這個資料我們可以看出使用者希望配置語言能夠更加靈活。

這裡我們根據 Terraform 每個月 open/close enhancement issue 的數量來繪製折線圖,可以獲得下圖的這個趨勢。很顯然,Terraform 是一個成熟且成功的專案。隨著時間的推移,社群的 open issue 數量不斷增加。儘管許可證發生變更時使用者的呼聲和反應很強烈,但實際我們並沒有從趨勢看到非常明顯的影響。

如果按年度彙總這些 issue 數量,我們也可以看到另一個趨勢。下圖是根據年度 open/close enhancement issue 數量繪製的圖。隨著 Terraform 變得更加成熟,open issue 對應的數量正在逐步減少,這也就是所謂的技術迭代曲線。

當我們按照這些 issue 的領域或主題來進行標記,便能大致找出 Terraform 的使用者們最關心的幾個領域:

  • 第一個是配置語言和語法,也就是說大多數使用者其實是希望有更強大、更具表現力和更靈活的配置語言。
  • 第二個則是使用者介面和體驗,不僅僅是 Terraform,我認為這點對於任何軟體的採用都是非常重要的。
  • 第三個是狀態管理,也是我個人認為 Terraform 系統中最重要的組成部分之一。

其餘的還有提供程式框架和與外部工具的整合,例如 CI/CD,以及模型系統等等。這些正是 Terraform 使用者以及未來可能成為 OpenTofu 使用者在領域中所期望和關注的焦點。

隨後我嘗試對這些 open issue 進行分析,發現和上述三點相關的 issue 常常被標記為負面。或許 OpenTofu Committee 能以此作為參考,瀏覽這些標記為負面的 issue,看看有什麼問題是尚未解決的,是否可以從這些資訊中獲取解決方案的靈感。當然這是我的一些拙見,歡迎大家更加深入的探討。

總之,OpenTofu 是個充滿希望的專案,讓我們一起幫助它發展得更好。謝謝大家!

相關文章