技術的極簡主義的再次復興
這是來自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 多名開發人員和數百萬使用者時,才需要複雜的設定;大多數公司,尤其是剛成立的公司,需要那種複雜的設定嗎?不!
相關文章
- 真正牛逼的人,都是極簡主義者!!
- “Ion Fury”或“還魂的毀滅公爵”:古典FPS的再次復興
- Pinbox 一款極簡主義風格的網路收藏夾
- 《Thronefall》:策略遊戲如何實現極簡主義遊戲
- 科技愛好者週刊(第 216 期):極簡主義的勝利
- 美、中、法:主導人工智慧的鬥爭與科技民族主義的興起人工智慧
- 程式設計師簡歷怎麼寫?ResumeX — 一個極簡主義且獨具創意的簡歷方案程式設計師
- IBM架構師分享:極簡主義軟體架構 - Neal HuIBM架構
- 聚焦使用者本質需求,解讀UCloud極簡產品背後的極深技術Cloud
- 正在興起的角色:業務技術人員
- 《極樂迪斯科》:以一己之力扛起桌上 RPG 文藝復興的大旗
- onethink搭建的技術部落格--悠悠極客
- 技術博主
- 技術管理進階——精要主義設計人生,對混亂的工作說不
- 《極樂迪斯科》:CRPG的文藝復興,後冷戰時代的百年孤獨
- 程式設計的藝術:不巢狀主義程式設計巢狀
- 人工智慧各學派簡介:符號主義,連線主義,行為主義人工智慧符號
- 技術分享主幹
- 《死亡擱淺》:當代主義的藝術典範
- Java技術分享:void的用法和意義Java
- Perkinscoie:2022年新興技術報告
- 新興技術研究:深入洞悉元宇宙元宇宙
- 科技愛好者週刊(第 303 期):技術封建主義
- 19 個 JavaScript 有用的簡寫技術JavaScript
- BIM技術的起源與定義是什麼
- 微服務定義及.Net Core中用的技術微服務
- 自定義Django認證系統的技術方案Django
- 朱贇的技術管理課-朱贇-極客時間
- 5款極簡極美WordPress主題,親測可用附送原始碼原始碼
- 深度分析| 資料防洩露技術再次“翻紅”的思考與建議
- 災備建設中,跨主機叢集恢復技術應用
- Gartner: 2022年NDR 新興技術趨勢
- SAP 前端技術的演化史簡介前端
- 簡述大前端技術棧的渲染原理前端
- 簡單理解OpenTracing技術中的span概念
- 撰寫有效的技術簡歷的 7 個技巧
- 如今領占主導地位的19種AI技術!AI
- 一個極簡的RePluginPlugin