近日,Yelp的SRE工程師Dmitriy Samovskiy發表了一篇標題為《新時代的運維》的文章,文章中他簡要介紹了在云計算大環境下,運維工作重心和角色的變化。
其實在6年前,Dmitriy就寫過一篇關于DevOps趨勢的文章,在那篇文章中,他認為系統管理人員需要具有簡單腳本之外的開發能力,并且多關注服務器穩定性和上線時間等。但這六年中,隨著云計算等技術的發展,運維相關的工作也早已被革新,所以Dmitriy又重新反思了當下運維相關的技術工作。下面是文章的核心觀點。
為什么運維會發生變化?這種變化會繼續下去嗎?
主要有以下兩點原因:
IaaS云服務的興起深刻改變了運維。基礎設施即代碼,運維面對的不再是傳統的服務器。云廠商可以將所有事情標準化,然后以服務的形式打包提供給客戶。
運維人員自身也掌握了更多的軟件開發技能。運維人員不再局限于腳本,轉而變成更好的開發者,承擔起更多的職責。
研發生產和運維會變得越來越難以分割。不會再有專門的運維團隊,每個項目研發團隊都可以自行進行產品的運維。這種角色的變化,并不意味著運維工作的消失;相反,依然需要運維技能、知識和經驗。
可擴展性已經成為了運維工作的重心
在以前的服務器時代,運維團隊的主要工作是創建環境并維護生產的穩定性。而現如今,運維團隊的工作重心已經轉向了如何提高產品的可擴展性。如果擴展性做得不好,流量負載過多就帶來各種相關問題(會話沖突、用戶擁堵和數據集合大小不符)。如果擴展性做得好,產品就會運行得既安全又高效。這對于一些金融類的高風險業務尤為重要。
隨著服務規模的不斷擴展,人工進行系統管理已經成為不可能完成的任務,自動化運維將是不可回避的選擇。業界的一種觀點是,DevOps是自動化運維的唯一方法;Dmitriy認為DevOps是一種文化,會在企業發展成長中自然而然地形成。
運維能力已經成為企業的技術基礎
在以前,研發工程師團隊只負責開發產品,而不負責提高開發效率的相關工作,如:代碼重用性、實現模式、用戶庫、核心API等。現在,一些DevOps文化的公司已經將這些工作融合在一起。
一些大型網站如Facebook、Google等都有專職的SRE(Site Reliability Engineer)網站可靠性工程師,國內又稱應用運維師。其對應的工作職責包含:容量規劃與實施、集群部署、數據中心容錯、負載均衡和監控等。
公司在不同的發展階段對運維的需求不同
初創階段
公司在初創時期最需要關心的就是如何研發出滿足市場需求的功能,而不是舍本逐末地去抓運維。因為這個時期企業一方面還沒有大量用戶,而另一方面運維會耗費過多的技術資源;所以應該將更多的精力放在快速迭代、新功能研發上。這個時期,推薦企業采用NoOps。
快速擴張時期
在互聯網時代,傳統企業開始直接向客戶提供服務,但是舊式運維并不能勝任大量的流量負載。這個時候,運維工作需互聯網規模化(WebScale)。WebScale IT是相對于傳統IT構架的新概念,意味著系統可處理大量計算、承受高負載、具有強容錯性和持續部署及交付能力、可高效運維等。