大家好,我叫王碩,來自于 GrowingIO。
剛才聽上一個演講嘉賓講精益看板很有感觸,作為運維來講,在某些公司有時候會非常痛苦,因為出了問題大家都會先找你,恨不得你就是那個干壞事的人,背鍋的人,有些公司出大問題,老板會站在你身后看你去解決問題,而且日常會有很多插入的工作,最終會導致工作不是那么開心。我之前就職的兩家公司都是外企,更講究有效率的工作和加班,其實還是比較不錯的,即使加班也會有加班費,法定節假日加班是 3 倍工資。每天工作不會讓你干滿 8 個小時,6 個小時已經不錯了,如果你能高效干 4 個小時已經挺好了。如果你去參加開發者大會經常會聽到敏捷這個詞,在之前的公司當中,我們就是用 Scrum 來高效的管理 DevOps 團隊的。
今天我講的演講主題是如何基于 AWS 做自動伸縮系統,AWS 是云計算的鼻祖,是最開始做云計算的。我們在 AWS 還沒有提供自動伸縮服務之前我們就已經做出了自動伸縮系統,而且是使用了 Spot Instances,也就是競價實例。
在進入正題之前先介紹一下 GrowingIO,GrowingIO 是基于用戶行為的新一代數據分析產品,無需埋點即可采集全量、實時用戶行為數據,數據分析更精細,幫助管理者、產品經理、市場運營、數據分析師、增長黑客等提升轉化率、優化網站 / APP,實現用戶快速增長和變現。這是一件非常有挑戰的事情。放眼今天我們來看整個運維行業,如果你只是一個傳統的 Ops,在大公司做一顆螺絲釘是完全沒有問題的,但是如果你想去一家創業公司,你想讓自己變得有競爭力,香港站群服務器 美國服務器,你必須成為 DevOps,你必須具有很強的開發背景。而今后不僅僅你要具有很強的開發背景、運維背景等相關的知識,你還要具備 Growth 思想,大數據分析的能力,而 GrowingIO 能夠幫助你成為這樣的人,歡迎加入 GrowingIO。
進入正題,為什么要做自動伸縮系統,首先集群要承載高峰期的壓力,其次也要減少低峰期的服務器成本。DevOps 要干的事情很多,Cost Saving 是其中很重要的一個方面,這是我們做自動伸縮系統的一個目的。
接下來講一講 AWS 的 Instnaces 類型,首先最常見的一種是 On-Demand Instances,不管是按小時計費還是分鐘計費,說白了起來就計費,基本上國內的云廠商都會支持這種方式。第二種是 Reserved Instances,國內的云廠商大部分也支持這功能。第三種是 Spot Instances,比如說一個機器你出一塊錢我出兩塊錢,價高者得,這是一個競價的過程。國內實現這個功能的廠商并不多。我們如果想降低服務器的費用,就要很好的利用 Spot Instances。我們就是通過這種方式,節省了很多服務器的費用,當然具體細節還涉及到很多復雜的東西,有可能很小的一個機型,通過不同的競價反而價錢會比較高。比如說 A 機型本來要小于 B 機型,但也許通過競價,價錢要比 B 機型價錢高,這里涉及到競價算法的事情。
講一講我們遇到的痛點有哪些。首先,AWS 這么大的云廠商,我們都可能遇到某個機房機器不夠的情況,你的自動伸縮系統要有能力 Launch 不同類型的機器、甚至不同機房的機器。第二,有些機器有可能因為某些特殊的原因,他是不能夠被關閉的。第三個是網絡原因,AWS 在全球市場是做得非常成功,但是在巴西市場做的不是特別好,經常有網絡方面的問題。
講一講我們做這個系統的幾個原則。第一點,我們盡可能的 Launch 競價實例,這樣成本最低。第二,如果其他機型沒有了,AWS 機房沒這個機型了,我們要有能力 Launch 其他的機型。第三,如果某個機房沒機器了,我們可以在另外一個機房 Launch 服務器。第四點,在縮容的過程當中,我們要優先關閉 On-Demand Instances,說白了就是優先關貴的。最后一點,要保證整個集群要有至少那么幾臺 On Demond 機器來保證正常工作。
接下來講一下 DevOps 今后的發展方向。如果你只是一個傳統的 Ops,其實不太具備市場競爭力,就今天來看,如果你具有很強的開發能力,目前來講你還能夠找到一個比較好的工作,未來你一定要是具有大數據分析的能力,再加上 DevOps,你才能夠具備一定的市場競爭力。我之前是在 LinkedIn 工作,做社交的公司都會有做一個 PYMK 的東西,People You May Know,其實就是做人脈的推薦,你可能對這個人感興趣,他把這個人推薦給你了,或者說國內的很多做酒店的,比如說攜程之類的,他也會給你推薦一些酒店。但是 DevOps 有什么場景需要這些大數據分析呢,我們之前做傳統運維,你無法預測服務器未來會發生什么。今天每天服務器產生這么多數據,不管是系統級別的還是服務級別的,你怎么樣去預測這臺服務器明天會不會出現問題呢?能不能基于大數據分析,預測未來哪些服務器可能會出現問題,哪些服務可能會出現問題呢?我們在做面向用戶這種產品的時候經常會講用戶的畫像是什么,對于 DevOps 來講,你的服務器相關的服務的畫像又是什么?這是一個非常值得思考的問題,也是今后 DevOps 需要做的事情,DevOps 已經轉型至 AIOps 了。