聊聊復雜性也是IT成本,你明白了嗎?
?7Signals從公有云撤退后還應該繼續類似公有云商的技術堆棧,繼續使用K8S,但是他們連K8S都放棄了,改為私有云虛擬機+DOCKER,就值得我們更仔細的去研究一番了。為了更好地了解這個事件,我一大早又看了一遍rework對David和37Signals COO Eron Nicholson的訪談的文字稿。實際上從訪談中我們可以獲得更多的值得思考的線索,不過很多內容不在今天要討論的范圍內,以后找機會再聊吧。
從這個訪談中,我看到了很多對于這個問題思考的細節,David他們當初上云的目的是解決IT的復雜性問題,他們可能會面臨系統上線兩周后的幾十萬訪問的尖峰,公有云很好地幫他們熬過了這個時期。隨著業務的不斷成熟與擴大,系統負載變得很平穩,沒有黑色星期五的銷售量暴增,也沒有圣誕假期的低谷。于是業務的發展,IT系統的負載變得十分容易預測了,因此需要公有云解決的復雜性問題不存在了。此時帶來了一些新的復雜性,公有云對于37Signals來說是一個黑匣子,它是否真的安全、可靠,只有出了問題才知道,在此之前,它就像一場夢一樣不可捉摸。
37Signals付出了高額的成本,但是他們還是買不起更高級別的服務,亞馬遜并不能及時接聽他們的電話,遇到的所有問題也必須由他們自己的運營團隊來解決。因此上云數年后公有云并沒有真正幫他們解決掉復雜性的問題,只是讓他們的運營成本變得更高了。
對于他們回歸自營虛擬機+DOCKTER,則是對復雜性的另一個思考,他們認為K8S太復雜了,其陡峭的學習曲線讓他們感到力不從心。當一切都正常時,大家都覺得K8S很不錯,用起來很省心,但是一旦出問題的時候,他們是無力解決這些問題的。對于一個擁有數十萬注冊用戶,但是只有80多人的中型SAAS服務商來說,很好地掌握K8S的復雜運維并不是一件容易的事情,因此他們最后決定將K8S上的應用退回到虛擬機+DOCKER的環境中,復雜度的降低讓他們對整個系統的把控能力提升了許多,他們的十幾個人的運營團隊可以十分輕松的把控整個平臺和系統了。而之前他們的系統一直為不太必要的系統復雜性的可能性買單,從而面臨諸多的運維挑戰。
大型互聯網企業的業務面臨巨大的不確定的負載挑戰,因此他們的系統可以面向各種各樣的復雜性。因此他們從頭到尾構建了一套IT體系,從研發到運營,這套體系是完全適應這個IT基礎平臺和技術堆棧的。近些年來,大型互聯網企業也在做技術輸出,很多傳統企業也接受了這種技術輸出。但是這些傳統企業往往只能學其表,而無法做到表里一體。因此他們引入大型互聯網企業的技術的同時也引入了IT的復雜性,但是并沒辦法掌握解決復雜性問題的方法。同時,這些企業的業務與互聯網企業完全不同,他們也并沒有那么多的復雜性要去解決。他們實際上并不需要掌握解決這些復雜性的鑰匙,因此他們拿到鑰匙之后并不知道門在哪里。
實際上很多企業或者團隊低估了復雜性所帶來的成本,因此過于強調了敏捷和可擴展性帶來的好處。這幾年我一直跟蹤一個項目,這是一個面向近百萬用戶使用的管理類系統,其在線用戶數最終會突破10萬。最初設計是從以前的Oracle數據庫遷移到RDS Mysql作為數據庫。他們最初選擇了32C/128GB的標準RDS實例,每個數據庫不超過500GB容量。在研發過程中,他們解決了很多分庫分表的難題,通過一年多的時間,終于完成了應用的改造。上線試運行階段他們解決了大量的性能問題,對數據庫做了進一步的拆分。不過隨后他們發現,如果完成整個系統上線,數據庫系統將需要被拆分為120+個RDS實例,而如果為了進一步提升處理能力,為今后系統長期運行做準備,必須使用讀寫分離的方式,如果這樣,他們可能需要將整個系統拆分為360+實例。在一個系統中創建與運維如此大數量的RDS實例,讓他們感到恐懼。
為了解決數據庫的復雜性問題,他們又開始對數據庫實例進行合并,將120+的數據庫實例都改為大規格的90C/720GB的MYSQL實例。這樣就把數據庫實例的數量減少為40+,不過每個數據庫的容量也變成了1.5TB。看到這個新的數據庫設計,很多人覺得放心多了,不過我也提出了一個新的問題,運維一個23C/128GB,小于500GB的MYSQL數據庫實例與運維一個90C/720GB,1.5TB的MYSQL實例的難度相同嗎?我想很多了解MYSQL,深度使用過MYSQL的朋友心里已經有答案了。
對于需要長期運行的系統來說,復雜性必然帶來額外的成本,增加的成本的高低取決于系統本身的屬性。因此解決IT系統的復雜性是我從事IT工作這三十多年來很多企業一直在考慮的問題。IOE架構也是因為它解決了企業IT建設與運營的復雜性而獲得了巨大的成功。云平臺實際上也是解決了IT的復雜性而得到了極大的發展,它讓用戶不需要考慮底層IT基礎設施與平臺的復雜性,而可以更多地關注企業的業務。
實際上前面所舉的例子并不需如此復雜,實際上近百萬用戶是按省為單位使用這個系統的,這套系統完全可以按照省為單位拆分為多套系統。每套系統的應用、數據庫都可以獨立部署,因為除了總部的統計分析業務外,用戶不會跨省辦理業務,而統計分析完全可以在數據中臺或者數據倉庫里完成。
近些年一些企業的IT似乎陷入了一個思維怪圈,放棄了原有的簡單設計,從而選擇了一個更為復雜,似乎也更為先進的技術堆棧。不過在這些設計中引入的復雜性,早晚還是會以運營成本的方式給予回報的。復雜性也是IT成本這個問題,早晚會引起人們的廣泛思考的。?