千萬不要過早引入Kubernetes
如果你所在的企業引入了 Kubernetes,那麼你們很有可能會把精力花在一些偏離主線的事情上。
乍一聽這句話可能會感覺到很奇怪,畢竟我們花了這麼長的時間來佈道和兜售 Kubernetes 的發行版以及諮詢服務,致力於幫助人們能夠更加充分地利用它,但是事情就是這樣!你也許不應該針對你的產品使用 Kubernetes 以及其他一堆“酷”的東西。
絕大多數的初創以及擴張階段的企業在構建軟體時都應該避免使用 Kubernetes 以及其他的一些過早最佳化。如果你所在的企業使用了 Kubernetes,那麼你們很有可能會把精力花在一些偏離主線的事情上。你們可能已經跌入了過早最佳化的陷阱。
請不要覺得這篇文章只是針對 Kubernetes。不是的。這篇文章針對的是工程師們在構建軟體的過程中可能做出的所有過早最佳化。
以下是我見過的一些例子:
將 Kubernetes 用於一個應用(還是個 Web 應用)的企業;
應用程式用到了不只一種語言。比如,後端用的是 Golang、Ruby 或者是 PHP 等語言,然後前端 Web 用的是 React 或者 Vue 等框架;
沒有用雲服務來託管應用。比如可以用 Heroku、Vercel、Netlify 或者 Fly.io 等。對於絕大多數產品團隊來說,如果他們必須組建一個運維或者基礎架構團隊的話,他們的解決方案也將會是過度設計的。
試想一下,一個人在真正開始玩他的愛好之前花費了大量的時間和金錢為這個愛好挑選最好的裝備。
當然,這裡面有一些觀點是比較主觀的。也許你知道你會長期堅持你的新愛好,而且你有一個朋友剛好是這方面的行家,他可以幫你挑選合適的裝備。不得不說,我自己就很擅長為自己辯解為什麼要挑選精英裝備,儘管我可能永遠不會真的注意到這其中的區別。
— 1 —
好鋼要用在刀刃上
如果你所在的企業認為它需要 Kubernetes,那麼你也許正處在一個試圖過早地為未來最佳化的地方。一個可能永遠不會出現的未來。當你採用任何一項技術時,換個角度,也即是在為你所在的組織作出一個有效期長達數年的承諾,這將會增加產品的表面積,同時也會給開發人員帶來心智負擔。
最終,你將不得不組建一個專門的團隊來維護它。這一切都會從你的核心使命裡奪走資源。
工程師們很容易跌入這個陷阱。我們很容易被新興的炫酷技術分散注意力。我們想要學習和成長,而實現這一點的最佳途徑就是把最新的技術融入到我們的產品裡。然後,我們會想出各種理由來證明我們的決定是合理的。
我來給你們講幾個故事吧,關於我是如何跌入這個陷阱的。
我記得在我剛加入 OCUS 的時候我們有過一次討論,我發現我們當時正在使用 Kubernetes。我說了一些話,類似於,“哦,那太好了。萬一有一天我們如果想要棄用 AWS ,那麼引入 Kubernetes 剛好可以幫助我們解決這個問題”。你能看出當時我有多瘋狂嗎?
還有一次,我們的資料科學團隊告訴我們,他們的資料管道需要一個編排工具。我傾向於選用 Argo Workflow(它跑在 Kubernetes 裡),而不是他們已經做了 PoC 的 Perfect(一款 SaaS 產品)。對於這個決定,我可以給出種種理由。
不幸的是,它們都是基於過早最佳化的前提。故事的最後,我們的團隊需要去構建一組新的 Terraform 和 Helm Chart 來自動化部署 Argo Workflow,然後把它整合到我們的 SSO 等等。對於這個決定我感到很遺憾。我認為正是由於做出了這個決定,這導致我們延誤了數週甚至數月的時間才向終端使用者交付功能。這就是過早最佳化!
如果我們能夠避免過早最佳化,我們將可以比競爭對手更快地行動,取悅我們的使用者,構建一套可持續和可行的產品的可能性也會提高。
那麼我們怎樣才能打破這種思維呢?
— 2 —
使用者有沒有提這個要求?
解決沿途遇到的問題而不必再提前考慮。我們所做的工作都應該切實地解決使用者的問題。問問自己,我試圖透過我的工作影響哪些人類行為?
如果你可以始終專注於使用者行為,並且只解決那些它們自己冒出來的實際問題,那麼你將會對自己產生的影響力感到驚訝。你也許還會對自己曾經向使用者作出的諸多假設感到驚訝,因為你已經很久沒談論這些了。
我相信,嚴格堅持這種方法的企業將會為他們的使用者和股東們創造更大的影響力並且產生更多的價值。
如果我把所有的精力都傾注在我的新愛好而不是研究裝置上,那麼我自然會知道我想要的到底是什麼。在起步階段,我並不需要最 “Gucci” 的裝備,即便我有最好的裝備,我甚至也會因為不知道如何使用它而顯得格格不入。最好是用一套入門級裝置來碾壓別人,因為我所有的精力都用在了學習我的新愛好上。然後當我確實想要升級到 “Gucci” 裝備時,它就會真的變得不同凡響。
— 3 —
事半功倍
值得慶幸的是,科技界正在經歷一場大規模的路線修正。隨著利率上升,廉價債務和風險資本開始枯竭。現如今的初創企業再也無法獲得瘋狂的資金,他們必須更加專注於他們的使命。能夠生存下來的將是那些擁有堅實基礎的企業。
產品必須交給那些能夠以越來越快的速度交付業務成果的更小團隊來構建。
在 Kubernetes 完全普及之前,我無法預見到 Kubernetes 在一個精益組織中的位置。即便如此,我認為 Kubernetes 還是可以當作一個擴充套件引入的。大多陣列織可以考慮透過雲廠商提供的一些更高層面的構建塊來引入它。
別忘了,在 Facebook 以 190 億美元收購 WhatsApp 時,它只有 35 名開發人員卻服務了 4.5 億使用者!
如果要問本文給讀者的忠告是什麼的話,我想應當會是:高度關注實現組織使命所需的內容。不要被你想學習的東西(比如 Kubernetes 或 Golang)分心 —— 把它留給家庭實驗室吧。
如果你可以繼續高度專注於對自己的產品進行迭代,以影響業務結果的方式影響人類行為,那麼我毫不懷疑你將最終能夠脫穎而出。
來自 “ 分散式實驗室 ”, 原文作者:吳佳興;原文連結:https://mp.weixin.qq.com/s/wmw40SjiqmBUiubnEOtr3g,如有侵權,請聯絡管理員刪除。
相關文章
- 好用的企業網盤工具千萬不要錯過
- 更新Kali的Metasploit框架,這些過程千萬不要踩雷!框架
- 關於Web前端面試的小技巧,千萬不要錯過!Web前端面試
- 千萬不要去考驗人性
- 做生意時千萬不要做哪些“傻事”
- 兔子提醒千萬不要把SEO做成SEC
- 你值得擁有的6款檔案管理軟體,千萬不要錯過哦
- 程式設計師們,千萬不要接私活程式設計師
- 千萬不要錯過華碩靈耀Pro16這波開工利器喲!
- 千萬不要錯過的後端[純乾貨]面試知識點整理 I後端面試
- 千萬不要錯過的後端[純乾貨]面試知識點整理 I I後端面試
- 工作發狂:Mybatis 中$和#千萬不要亂用!MyBatis
- 程式設計師千萬不要學演算法!程式設計師演算法
- 分享幾個常用的自媒體軟體?想做自媒體的千萬不要錯過
- 程式設計師為什麼千萬不要瞎努力?程式設計師
- 現在,千萬不要再和老闆,資本玩
- 過早引用“過早優化是萬惡之源”是所有緩慢軟體的根源 - JakeWharton優化
- PVE關卡設計淺談:千萬不要拍腦袋!
- 千萬不要“教”孩子畫畫,原因竟然是這樣
- 避免過早的軟體抽象 - Jonas抽象
- 為什麼程式設計師千萬不要重寫程式碼?程式設計師
- 千萬不要給女朋友解釋 什麼是 “羊群效應”
- 3萬+美妝人齊聚杭州搶佔商機,這場大型美妝展千萬不要錯過!
- 遊戲創業團隊如何吸引投資?談投資的過程中,哪些坑千萬不要踩?遊戲創業團隊
- 本地生活運營師是騙局嗎?千萬不要被割韭菜!
- 外賣系原始碼陷阱,創業者千萬不要再去踩了原始碼創業
- 【實用知識】2020年招投標千萬不要這樣做!
- 9個“非常危險”的Linux命令,千萬不要隨意執行!Linux
- 新手 Python 避坑——vscode千萬不要裝這個 Python for VSCode 外掛PythonVSCode
- 如果不會這兩招,千萬不要說你懂大資料大資料
- @Transactional千萬不要這樣用!!踩坑了你都可能發現不了!!!
- 千萬不要再這樣建立集合了!極容易記憶體洩露!記憶體洩露
- 千萬不要相信程式設計師在加班時間寫的程式碼!程式設計師
- 陣列真的不難!!千萬不要給自己錯覺......看完你也明白!!!陣列
- 不要過分迷信開源ERP
- 不要過度使用React.useCallback()React
- 《三國志14》集大成者?言之過早
- 邦芒忠告:寫個人簡歷時千萬不要犯十個錯誤