我從事軟體開發多年,深知一個永恆真理:
沒有什麼比臨時解決方案更持久。
你聽過這個故事。
您補充道:
// TODO: replace with proper solution later
那是2019年。
目前,該業務占公司收入的 38%。
沒人知道它是如何運作的。
沒人願意碰它。
它已經獲得了感知能力。
每隔幾年,就會有一個勇敢的人說:
我們應該重新好好寫一次。
房間裡一片寂靜。
低年級的學生看起來很有幹勁。
中層目標看起來很有野心。
這些老人家看起來很疲憊。
因為老年人了解這些階段:
激動
過度自信
低估
範圍爆炸
“我們暫時先和舊系統整合吧。”
現在你有兩個系統了。
恭喜。
你的漏洞數量翻了一番。
在某個時候,有人發現:
Docker
Kubernetes
Apache Kafka
然後我想:
“沒錯。這正是我們這個四人創業公司所需要的。”
適用於 2,000 名用戶。
只需一個資料庫。
在單一虛擬機器上執行。
但現在我們有了:
14項服務
6 條 CI 流水線
1 位了解網路技術的工程師
0 位能安然入睡的工程師
當你出現以下情況時,你就知道自己待太久了:
你以「未來的治療療程」來衡量建築決策。
當有人說「讓我們創新」時,你會感到緊張。
你信任這套枯燥乏味的理論。
你先問:“如果失敗了會發生什麼?”,然後再問:“它的速度有多快?”
青少年選手追求速度。
中檔產品追求優雅。
老年人追求的是生存。
沒有什麼比這更能凝聚工程師了:
CPU: 100%
Memory: gone
Logs: silent
Slack: exploding
有人建議進行水平方向的擴展。
有人建議清除快取。
有人建議用 Go 語言重寫。
老者輕聲說:
“有人檢查過定時任務嗎?”
是定時任務導致的。
總是定時任務導致的。
現在我們已經有了人工智慧生成程式碼。
這真是太棒了。
因為現在不用除錯了:
你除錯:
你的錯誤
模型的錯誤
以及兩者之間的互動
進步。
這句話建構的遺留系統比 COBOL 還多。
每個系統都是從零開始的。
接下來是:
熱修復
截止日期
臨時旗幟
銷售部門提出的功能請求
突然間,你那優雅的建築看起來就像是在酒吧鬥毆中落敗了一樣。
15 年多過去了,你真正的超能力並不是程式設計。
它的意思是:
“不。”
不,我們不需要微服務。
不,我們不需要重寫。
不,我們不需要 6 個新的依賴項。
不,我們不需要即時事件流來編輯用戶個人資料。
預防複雜性的能力比製造複雜性的能力更有價值。
但沒人會把這些寫在領英上。
你成為資深人士的那一刻,並非指:
掌握框架
學習一門新語言
推出一項重要功能
當你意識到:
減少程式碼交付量通常是最負責任的做法。
如果你曾經:
註解掉程式碼而不是刪除它
在點擊部署按鈕前,低聲說道「請執行」。
新增了日誌記錄功能,並將其命名為可觀測性
或在會議上說「這只是一個小小的改動」。
你也是我們的一員。
歡迎。
原文出處:https://dev.to/art_light/ive-seen-this-architecture-before-it-ends-in-tears-3bld