技術的極簡主義的再次復興

banq發表於2021-09-09

這是來自radicalsimpli.city的技術極簡主義宣言,對當前複雜技術的抱怨、批判。
我們好像很享受複雜性:我們使用 SPA、Vue/React、Transpiling、Typescript、Babel、Webpack、PureCSS、GraphQL、JSON 以及在後端使用微服務、protobuf、Kafka、InfluxDB 或 NoSQL 資料庫建立複雜性。
這種複雜性是偶然的,而不是在業務問題域中。
這種複雜性導致需要一個解決方案來管理它——通常是 Kubernetes。
你需要執行這些東西,而且有很多微服務,你需要很多機器。這導致了 AWS。
這又帶來了它自己的複雜性。
現在我們需要編寫 React 應用程式的前端工程師,編寫 REST 和 GraphQL 端點的後端工程師,以及手握 Kubernetes 的運維工程師。這導致使用模擬和本地資料庫、Docker 映像和構建管道進行復雜的測試設定,執行需要數十分鐘。
做一件簡單的事情需要很多時間,比如向表單新增一個欄位 - 例如向個人資料新增生日欄位。需要幾分鐘的事情現在需要幾個小時。然後事情發生了變化,你會花一整天的時間讓你的微服務能再次執行: 在其他服務之上巧妙地平衡每個服務和每個框架和工具的每個版本。
 
開發人員能做的最後一件事就是編寫業務邏輯。如果您檢視自己在做什麼並計算行數,那麼最少的時間就是編寫真正的業務邏輯,即程式碼中的 IF。
但是這涉及到帶有 SQL 的資料庫到物件到 JSON 的序列化,透過路由到 React 儲存到 UI。GraphQL、SQL、Javascript 物件和 Python 物件中的資料定義。當您需要花費大量時間圍繞框架、技術堆疊和序列化進行舉辦儀式時,留給處理業務邏輯的時間並不多。
 

我們為什麼要構建複雜的系統和架構?因為我們想要接受挑戰,而對業務領域卻涉及不深入!所以開發人員自己就發明新的框架和系統來構建自己的挑戰。他們想要嘗試新事物。
 
出現的問題是多方面的。正如雷切爾·克羅爾( Rachel Kroll)所寫: “程式碼執行在人身上。請保持簡單。” 元件和系統也是如此。在程式碼在計算機上執行之前,它需要在您的頭腦中執行。

“如果花一個小時來弄清楚發生了什麼,那麼,這一個小時就沒有花在做其他更有用和有趣的事情上。”
最重要的是,技術將大量時間用於自身而不是提供商業價值。管理這麼多系統和元件需要知識,而且由於存在邊緣情況,因此存在許多錯誤。這些因素結合在一起會導致效率低下、開發人員過多和成本高。
 

極簡主義Radical Simplicity來了
什麼是極端簡單Radical Simplicity?極簡意味著擁有儘可能少的元件和活動部件。將技術重複用於不同的目的,而不是為每個目的使用新的移動部件。與其使用 Postgres 作為資料庫、Druid 作為事件儲存、Redis 作為快取、Rabbit MQ 作為訊息佇列和 Elastic 作為全文搜尋,不如使用託管 Postgres 作為資料庫,用於全文搜尋、html 快取、釋出/訂閱和帶有 TimescaleDB 的事件儲存。
這使我們能夠擁有更深入的知識、更快的行動、更快的新開發人員入職、更少的故障、數十個框架和元件的升級計劃,以及更多的開發人員幸福感。開發的核心是進入流程。開發人員在流程內部比在流程外部更有效率。
Basecamp 是 Rails 的創造者,它做的是 Radical Simplicity。Basecamp 使用 HTML 編寫了他們的 Hey 電子郵件應用程式,沒有使用 React。Stack Overflow 透過使用少量真實硬體執行他們的服務來實現這一點。具有諷刺意味的是,所有 AWS 問題都由執行在真實硬體上的 Microsoft SQL Server 回答。沒有 GraphQL,沒有 React,沒有 Kafka,沒有 Webpack,也沒有 Kubernetes。
您也可以使用 Radical Simplicity。激進的簡單也是激進的。一個基於HTML的單體應用:在瀏覽器端使用 Hotwire Turbo 以最少的 Javascript 重新整理;僅使用託管 Postgres 作為資料儲存、JSON、作業處理、訊息佇列的資料庫,並使用列式儲存作為資料湖和資料倉儲。如果您無法抗拒,請新增 Redis 進行快取,因為 Redis 永遠不會中斷。

技術的極簡主義的再次復興 

 
許多隻有少數客戶的初創公司擁有多個微服務、Redis、Postgres、Elastic、Kubernetes、Webpack、JavaScript SPA、REST API、帶有 Apollo 和 Kafka 的 GraphQL 或用於訊息佇列或作業伺服器的 RabbitMQ。
如果將此與僅使用託管 Postgres(而不是 PG、Redis 和 Elastic)、Unpoly的激進簡單設定進行比較,極簡主義是在整體式伺服器上呈現渲染HTML,並使用BigQuery分析資料倉儲 。
後者一個小得多的架構設定,實現相同但需要維護、學習和除錯的移動部件少得多。需要監控的元件要少得多。
當某些公司擁有 50 多名開發人員和數百萬使用者時,才需要複雜的設定;大多數公司,尤其是剛成立的公司,需要那種複雜的設定嗎?不!

 

相關文章