最近幾年很多公司實現了從vmware等傳統虛擬化到iaas的轉型,很多公司正在或者已經建立paas平台。那麼從專案研發角度看,paas產品的系統功能應該主要涵蓋哪些,又該如何更好的為應用研發人員服務呢?本文由雲計算專家bryan根據社群活動中的分享交流所整理。
1.實現應用執行環境的標準化,提公升交付速度:通過容器的映象技術保證開發測試和生產等諸多標準化,避免因應用執行環境不一致帶來的各種故障和問題,同時,通過服務編排實現執行環境的自動化運維和快速交付,避免傳統方式的應用系統執行複雜、交付週期較長等問題;
2.實現運維過程的高度自動化,降低運維成本:paas平台提供多種自動化運維工具管理應用集群系統,比如智慧型負載可以實時觀測集群節點的變化並智慧型修改路由配置,自動伸縮可以實現不同業務負載下集群規模的自動調整等,多種管理功能的自動化減少人工運維工作量,節省運維成本;
3.有效提公升基礎資源的管理水平和硬體利用效率:paas平台資源的容器是基於作業系統的虛擬化,與iaas基礎環境實現解耦,平台自身的實現多數是應用較廣的開發框架和標準api,能夠有效提公升資源管理水平,有效避免廠商繫結;同時,合理調整單個作業系統之上容器密度的有效部署,可以更好提公升資源使用率,降低硬體採購成本;
4.有效實現軟體研發的技術路徑統一和把控研發質量:通過執行環境的標準化可真正做到全公司技術路線的精細把控,做到統一不同專案組的技術研發路線,通過部署工具的統一可以做到ci/cd思想的有效落地實施,有效提公升軟體研發過程的質量把控水平;
5.有效提公升公司it架構治理:相較於傳統開發運維各司其職的模式,paas能有效實現devops思維的落地實施,推動企業it流程和人員架構的企業治理,更好的提公升it部門各個研發團隊的整體技術水平,從而更好的響應業務需求。
paas主要以容器雲形式實現,容器雲依賴容器基礎技術,目前常見的有docker和garden兩種型別,其中bat、京東、華為和網易等網際網路公司,還有一些大型商業銀行更多的選擇docker技術,當然也不乏garden成功案例,但較之docker案例相對較少。
獨木難成林,容器要雲化形式提供服務,必須以多個容器形成集群的方式,此時如何管理和排程集群是乙個重要的任務,這個任務由編排引擎進行實現,目前比較流行的有kubernetes、swarm等。因此「容器技術+編排引擎」構成了容器雲最初始的框架,當然要達到企業級應用還需要做更多企業級的功能,所以就出現了諸如openshift、阿里飛天、華為等各種以開源軟體為基礎構建的多種產品。
那麼企業在建設雲的過程中需要考慮幾個問題:
1)容器技術的選擇:盡量選擇市場比較流行的開源社群和生態發展比較完善的技術,編排引擎的框架選擇遵循同樣道理;
2)建設模式:一種方式是購買產品進行企業落地化定製化,一種方式是基於開源框架自研,兩種方式各有優劣,需要結合企業自身特點進行總體考慮;
3)建設規劃:paas的建設涵蓋很多方面,甚至需要企業流程和企業it架構的梳理和調整,因此對大中型企業來講不可能一蹴而就,需要乙個循序漸進的過程,這也與企業發展和自身技術特點有關係
負載均衡有硬體f5和軟體haproxy、nginx等。f5的特點是**貴、效能好,一般在物理機和虛擬機器化時間做lb;nginx是一款http伺服器和反向**伺服器,可以提供7層負載均衡能力,主要應用場景有web伺服器、反向**、負載均衡等
haproxy是一款專業的負載均衡軟體,可提供4/7層負載均衡,比nginx負載均衡效能好,併發上也優於nginx。負載均衡的選擇需要和企業自身特點和具體業務場景相關聯,在paas的企業級產品中更多的選擇haproxy
paas平台的日誌和監控和傳統架構的管理方式沒有本質區別。日誌的獲取或採用安裝agent、或採用工具匯出,業界已經都有很多成熟的產品和案例可以借鑑;監控分兩部分,先要解決「監」的問題,同樣也需要利用工具抓取資訊,然後解決「控」,要麼利用自動化運維的模式,要麼採用手工的模式,目的其實一樣,區別在於成本控制。
paas可以從系統、網路、服務、應用監控4個層面入手:
1.系統主要指底層基礎資源,如磁碟、cpu、硬體或iaas等基礎資源
2.網路一般採用sdn的方式實現,監控比較複雜,主要有連通性、流量、7層狀態碼等
3.服務主要是指paas中的各種中介軟體服務服務,比如資料庫服務、快取服務、web應用服務等
4.應用監控是最上層的也是非常重要的,比如應用服務質量、響應時間、請求成功率等
jenkins可視作乙個平台,在這個平台中一方面可以使用者定製各種外掛程式,一方面可以將所有的工作以流程化的形式(pipeline)串聯起來。這樣可以將ci/cd的思維通過jenkins的落地實施來貫徹執行,同時ci/cd有多種自動化管理功能,而paas中的相關系統部署或者更新公升級或者專案研發過程使用的環境都可以自動化,於是二者可以很好的進行關聯。
devops理念的落地實現,可通過jinkins中配置自動化的ci/cd流程,更好的與paas進行深度整合,從而提高軟體研發效率和軟體研發質量。詳情可以參考鏈結
paas作為乙個綜合性的平台,在以」容器+編排引擎」的基礎上有諸多關鍵技術點和難點,本次主要以開源框架和一些市場產品為依託,主要講述關鍵點的實現
1.容器技術的選擇:容器技術是整個平台的基石,猶如開發web需要選擇開發語言一樣,目前有docker和garden兩種主流技術,自研技術選擇時盡量選擇技術相對成熟、企業應用案例相對較多、技術生態圈發展更多的技術,一般建議選擇docker,如果華為的paas產品初期選擇garden,目前也已轉向了docker,docker已經成為一種事實上的標準。
2.編排引擎的選擇:編排引擎的選擇一般會依賴容器技術路線的選擇,比如docker容器可以選擇kubernetes、swarm等框架,garden可以選擇cloud foundry,並且僅此選擇。在bat、華為、京東等網際網路公司中,選擇docker系的產品更多的選擇了kubernetes,或許源於此框架出自google大家之手
3.元資料儲存的框架選擇:由於整個paas的元資料需要乙個高可用的儲存結構,以便用作服務發現或共享元資料配置的相關元資料資訊。基於zookeeper的效能和複雜性等問題考慮,更多的選擇etcd框架進行使用,openshift、阿里等產品均採用了此框架
4.paas容器網路的選擇:容器的網路隔離是paas資源隔離的乙個重要組成部分,每個容器的網路多採用內部sdn網路,sdn網路的實現技術各不相同,一般主要考慮因素是網路的效能和網路變化的靈活性等因素。開源kubernetes採用flannel框架,openshift的產品中考慮到網路效能等採用了open vswitch,京東在經過各種研究後採用了基於bgp路由方式的calico
5.ci/cd的工具選擇:隨著最近幾年微軟對docker技術的支援力度加大,各種產品,比如window server 2016、tfs等逐漸實現對docker的支援。tfs(team foundation server)的產品定位與jenkins類似。所以在ci/cd的技術落地過程中可以選擇tfs或者jenkins,不過大家更廣發的採用jenkins,並且有研發能力的均對其進行一定程度的外掛程式研發和定製
6.日誌框架的選擇:在集群環境中如何管理不同節點的日誌是乙個重要的問題,並且目前有一套成熟的解決方案。elasticsearch+logstash+kinana(elk)已成為一種通用解決方案
7.負載均衡的選擇:負載均衡需要在容器集群的容器成員發生變化時能夠自動感知和自動修改路由策略,硬體f5和軟負載haproxy、nginx均可做負載均衡,鑑於haproxy的靈活性,更多的產品或者企業落地均選擇了haproxy
8.網域名稱的使用:容器集群中的某個應用可以視作乙個對外提供的服務,如果採用ip,一方面不方便記憶,一方面ip有可能改變,因此paas產品多採用泛網域名稱的形式,將對外提供服務的ip位址和網域名稱關聯對應,然後再提供乙個route記錄對外提供服務的ip位址(frontend)和內部集群ip位址(backend),這樣就可以實現從外部網域名稱到內部集群ip位址的訪問。
paas平台的建設是乙個長期的過程,需要不斷持續的進行迭代優化,並且隨著在paas之上執行應用系統的增多和使用經驗的不斷豐富,對paas平台會有更多深入的認知和體會。因此我們也希望論壇上從事這塊研究和實踐的朋友能夠更多的進行技術交流,從而加深技術了解,讓paas在企業內部更好的發揮其價值和優勢。
盤點無人機的關鍵技術點
當前,自從無人機技術進入市場以來,無人機的市場規模正在以一種不可思議的速度擴增,許多專業人士都利用它來加速在各自領域的創新。從軍事到體育再到房地產,無人機幾乎在每乙個行業都得到了應用。無人機.jpg 隨著不斷增強的需求,無人機技術的真正潛力由於一些瓶頸還沒辦法釋放。如今世界各地的研究人員和技術專家正...
大資料的5大關鍵技術點
大資料技術,就是從各種型別的資料中快速獲得有價值資訊的技術。大資料領域已經湧現出了大量新的技術,它們成為大資料採集 儲存 處理和呈現的有力 大資料處理關鍵技術一般包括 大資料採集 大資料預處理 大資料儲存及管理 大資料分析及挖掘 大資料展現和應用 大資料檢索 大資料視覺化 大資料應用 大資料安全等 ...
關於Web應用單頁應用的理解和關鍵技術點的實現方式
乙個最關鍵的技術點,頁面的頁內跳轉 以上只是其中的一種方式。單頁應用的功能結構設計 我覺得要分為基本結構,樣式和樣式邏輯,邏輯和內容四部分。基本結構是主框架結構,提供基本框架的核心功能搭建。以基本的html為主體。樣式和樣式邏輯,給頁面提供樣式渲染,實現各種頁面效果,但這部分功能應以簡潔為主,複雜的...