對於互聯網公司而言,遷移到雲是一個明智的決定。它減小了總的成本支出,同時最大限度地提升了工做效率和生產率,本文將指出遷移到雲或者建設私有云優缺點以及邊界在哪裏?web
雲計算(cloud computing)是分佈式計算的一種,指的是經過網絡「雲」將巨大的數據計算處理程序分解成無數個小程序,而後,經過多部服務器組成的系統進行處理和分析這些小程序獲得結果並返回給用戶。數據庫
本地一般是提早把軟件基礎架構部署在用戶計算機上,全部資源使用者本身訪問和管理; 相對於本地服務,雲有如下特徵:編程
按需服務-須要時使用;小程序
網絡訪問-經過網絡做爲傳輸媒介,雲提供商負責維護其基礎架構;瀏覽器
資源共享-多個資源集中在一塊兒,供多個客戶端使用;安全
可伸縮性-資源具備彈性能力,最大程度節省和提升資源利用率,具備平臺無關性、存儲無限擴展等優點。服務器
雲是公共資源,每秒都有數以百萬的用戶訪問,雲服務提供商可能遭受攻擊,從而竊取用戶信息,從而云在必定程度上存在安全問題。微信
數據存儲在第三方機器,可能會出現第三方查看和修改用戶隱私數據問題。網絡
更多的控制權不在於本身,而在於雲提供商,雲出現問題,只能等待第三方迴應。架構
雲自己又分爲公有云、私有云、混合雲等,以上說的幾點都是公有云的特色,不少企業不信任公有云平臺,特別是國內不少企業要求對技術作到自主可控,結合自己的業務增加速度,須要搭建本身的私有云平臺。那麼要完成私有云平臺搭建,須要完成什麼工做呢?如圖(a)
(a)
IaaS 基礎架構即服務,該服務提供了計算機體系架構和基礎服務,提供了全部雲計算資源供咱們直接訪問使用,好比數據存儲、虛擬化服務、服務器和網絡等。
使用對象:企業管理員。
優勢:雲提供了基礎架構和服務、加強了可擴展性、動態按需擴展。
缺點:集羣規模增大後會出現安全問題和網絡服務延遲。
PaaS 主要是提供開發環境/平臺,編程語言、操做系統、web 服務器和數據庫構成,用戶可在其中構建、編譯、運行程序無需擔憂其基礎架構。當今面對互聯網業務量和用戶量劇增,PaaS 是企業須要着重建設的部分。不少企業都以 Kubernetes 爲基礎建設容器雲平臺。常見的公有云有有阿里雲,騰訊雲、亞馬遜雲等。
使用對象:開發人員。
優勢:快速開發部署、彈性擴容、持續交付。
缺點:開發人員僅限於使用PaaS提供的語言和工具,若是前期使用裸金屬服務器部署,後期遷移到雲,可能會有必定難度和適應期。
按需使用軟件、按需付費。跟購買程序無關,該服務運行在雲端,是平臺無關的,無需在 PC 上安裝軟件。雲端運行該服務一個或多個實例供多個最終用戶使用,雲計算大大下降企業軟件運行成本。好比網盤、網上衝浪服務等。
使用對象:用戶。
優勢:能夠經過任何平臺訪問、無需關心在什麼網絡環境。很是適合協同辦公。
缺點:雲服務是面對全部用戶,好比:瀏覽器兼容性可能致使不能使用某些服務。
在雲平臺建設過程當中 PaaS 和 IaaS 邊界在哪裏呢?不少企業在建設過程當中,可能會把這兩個混爲一談,其實有必定的界限。
IaaS 主要是對裸金屬機器進行資源分配、操做系統安裝、服務器啓動、網絡配置等。
PaaS 主要是對計算資源進行邏輯管理,與應用有關資源分配和調度,主要是最大程度上服務於上層應用,如圖(b)。
(b)
建設以前,須要大量的時間去整理、評估組件的各類可行性分析。說到這裏,不少人可能會知難而退;是的,坦率的說,雲平臺其實不適合大多數的團隊,若是你在一個 15 - 20 人的小團隊裏,它會帶給你大量痛苦,而好處卻微乎其微。
目前 A 公司的系統所有運行在裸金屬 3 臺服務器或者 5 個虛擬機上,考慮到硬件資源沒法靈活調度,目前考慮遷移到Kubernetes上。
首先須要申請更多的機器,遷移總要有一個過渡階段,前期裸金屬服務器上要運行一份服務,Kubernetes容器化平臺還要有一份服務,此外還須要考慮依賴的底層服務;
其次須要開發人員的學習適應和必定的人力投入,開發人員須要在瞭解大量概念以後才能使用,Node、Pod、Container、Service、Deployment......各類資源對象,如圖(c)能夠看出 Kubernetes 是一個龐大的系統,操做和使用都是很是的複雜,它包含 58w 行 go 代碼,若是咱們想要服務更好的工做,研究其運行機制,必定是必不可少的。
( c )
最後落地,須要考慮數據的遷移、遺留系統的遷移,由於 Kubernetes 自己是一個集羣,不得不考慮分佈式存儲管理、配置管理...... 若是本身系統自己不適應集羣部署,那麼不能發揮雲的做用,不得不考慮把服務拆分紅分佈式微服務程序,這種程序很難編寫,編寫過程須要考慮分佈式事務等不少問題,其次調試和日誌排查問題也會增長複雜度,因而你在雲平臺的漩渦裏不能自拔..........
上面說了這麼多 Kubernetes 使用問題,是否是說它就一無可取了,固然不是。好比說當前服務客戶是金融業務,7*24 小時不能宕機,且有上萬用戶使用,這就須要考慮到服務的擴展性和升級可靠性了,這正是Kubernetes 最擅長的事情了。
對於任何技術,在使用以前都要持保留態度,別人說好,那是適合,換作是你,可能就是另一種場景了,要學會洞察技術的本質,就像搭建企業級雲平臺同樣,在搭建以前要考慮爲何要建設企業級雲平臺?能夠從三個方面去考量建設的意義是什麼?
業務系統愈來愈多,各個系統之間存在大量的數據交互和接口調用,規劃的還有大量的系統須要建設,出現問題時老是修修補補,沒法從全局、系統的角度去規劃分析問題。 資源管理層面上,有多個機房和數據中心,裏面可能存在部分殭屍服務,沒法作到有效監控、動態調度底層計算資源共享,更沒法作到峯谷互補伸縮自如。 需求上要求快速交付、持續運行而且已經存在或者將來可預知的大量用戶和海量數據。
隨着互聯網的發展和網絡帶寬的增長,企業應利用雲計算的優點,減小了總的成本支出,同時最大限度地提升了效率和生產率,從長遠來看,對於大型互聯網公司而言,遷移到雲是一個明智的決定。