新年伊始,在總結過去一年 IT 行業變化和發展的同時,很多企業更關注將來一年甚至幾年的行業趨勢。Gartner 於 2014 年發表了文章 Gartner Says By 2017 Web-Scale IT Will Be an Architectural Approach Found Operating in 50 Percent of Global Enterprises 表示:html
截止至 2017 年,全球 50% 的企業將使用 Web Scale IT 架構。java
在 2016 年年初,咱們回顧 Gartner 對 2015 年所作的預測,來講說 Web Scale 在中國 IT 界的發展與變化。git
圖爲 Gartner 對 2015 年 10 大 IT 趨勢的預測,其中就包括了:Web Scale IT。這個詞條被用來描述將來將有更多的企業以亞馬遜、谷歌、Facebook 等互聯網科技巨頭的方式去思考、行動和打造應用程序和基礎設施。web
做爲有效的 Web Scale IT 方法的關鍵組成部分,廣泛被接受的要素包括開放硬件方法、新型軟件體系架構、敏捷過程、從 DevOps 入手的協同一致的公司、以及風險包容文化。docker
那究竟什麼是 Web Scale IT 呢?是又一次的 DevOps 文化運動?仍是存在切實可行的工具和方法?數據庫
其實, Web Scale IT 是一種趨勢,一種解決方案,也是一個機會。服務器
咱們能夠經過 Web Scale IT 的 5 個特性來更爲清楚地認識 Web Scale IT。
如下信息摘自:關於 Web Scale IT 的一些觀點,阮志敏。網絡
擁有成千上萬臺機器的計算能力架構
只需少數工程師就能夠運維大量機器運維
應用能夠承載很是高的用戶訪問量
即便有些機器出現故障,應用仍然工做正常
應用天天能夠升級部署應用好幾回
傳統企業渴望擁有和互聯網公司同樣的 IT 能力去進行業務創新,同時提升 IT 運營效率、下降費用。此概念可以讓他們減小 IT 服務的營銷時間,下降基礎架構成本,同時提升靈活度,加強他們促進 IT 文化變革的能力,並能提升服務質量。Web-Scale IT 和國內的"去IOE"運動有着相同的邏輯,都是互聯網企業影響、顛覆傳統IT解決方案的一種趨勢。
Web Scale IT 但願企業擁有擁有很強的計算能力,下降基礎架構成本。而從沒有互聯網到有互聯網,再到雲計算,事實上是一個解放勞動力的過程。能夠這麼理解,雲計算的出現和發展是 Web Scale IT 的基礎。
若是假想成蓋房子,傳統 IT 至關於在擁有的土地上根據流程自行設計、施工,再找人裝修和維修。有不少現有的經驗,成熟的方案能夠參考。而云計算一出來,就至關於直接買到了毛坯房,只須要裝修就行了,還附帶物業管理。這是一個分工更加細化的時代,Laas 讓 IT 能力變成廉價可靠的資源,只要按需選擇、付費便可。而在這個基礎上,Web Scale IT 就變的可能,中小型創業公司也能夠將精力更多的投入到創新和運營上去。
目前不少 IT 公司都在作雲,BAT、IBM,包括 HP 和 Dell 也都要開始作雲,還有以 UCloud 爲表明的第三方專一、中立的雲公司,在雲計算領域可謂風頭正盛。阿里雲從 2012 年初開始大規模推廣和密集的運營活動,目前從市場份額上講,是當仁不讓的國內一哥。從去年 4 月到 5 月僅一個月的時間,從阿里雲直接鏈接到國際互聯網的 Web 服務器數量就增加了 8 千多臺。
而騰訊雲憑藉自身強大的遊戲運營能力,憑藉渠道的力量,在遊戲行業、 O2O 領域及一些正在向互聯網轉型的傳統行業中創建了良好的知名度。UCloud 近期得到國內 Laas 領域最大投資千萬美圓,在手遊領域混的風生水起。
在各個領域,都有愈來愈多的互聯網企業和向互聯網轉型的傳統行業開始使用雲服務,包括遊戲、在線商務、在線教育、在線醫療、大數據分析、互聯網金融,甚至傳統的化工、生物行業等等。
Web Scale IT 要求下降基礎架構成本,愈來愈多的 DevOps 工具應運而生。有許多工具用於基礎設施自動化,使用哪一個工具決定於體系結構和基礎設施的需求。下面咱們列出了一些優秀的 DevOps 產品,包括容器平臺、配置管理工具、服務平臺、監控工具等。
1.容器平臺 Docker
Docker 是一個自動化工具之上的 Linux容器,容器已經成爲 DevOps 中的新熱點技術。特別是 Docker 公司,已經成爲了提供容器技術服務的領頭公司。使用 Docker 平臺,應用程序及其依賴能夠被打包進一個單元,也就是所謂的鏡像。隨後,能夠運行這個鏡像的實例,實現快速的測試、部署。Docker 的興起和普及是由於它能提供一種一致性機制來構建、部署和擴展應用組件並隔離系統資源。有了Docker,開發者們就能夠從同一個主機運行多個開發環境(每一個開發環境有獨特的軟件、操做系統和配置),在新的或不一樣的服務器上測試項目,以及讓任何人均可以在設置如出一轍的狀況下處理同一項目,不管本地主機環境怎樣。
有人說虛擬機也能實現多種環境,但不得不說,和傳統虛擬機相比,Docker 具備啓動速度快,資源利用率高,性能開銷小的優點。虛擬機的 Guest OS 和 Hypervisor 層在 Docker 中被 Docker Engine 層所替代,Docker 有着比虛擬機更少的抽象層。因爲 Docker 不須要經過 Hypervisor 層實現硬件資源虛擬化,運行在 Docker 容器上的程序直接使用實際物理機的硬件資源。所以在 CPU、內存利用率上 Docker 略勝一籌。Docker 利用的是宿主機的內核,而不須要 Guest OS,所以,當新建一個容器時,Docker 不須要和虛擬機同樣從新加載一個操做系統內核,所以新建一個 Docker 容器只須要幾秒鐘。
「生產環境上就出問題,明明本地運行的很好!」 這是一句聽過不少遍的話。容器使應用程序的跨平臺可移植性比以往任什麼時候候都更高,它解決了開發環境與生產環境差別的老問題。也許相對於靈活的部署,迭代和引用這些優勢來講,Docker 相對複雜的網絡配置,container 之間的通訊,還是須要攻破的難題,但隨着容器技術的快速發展,對於開發和運維人員來講,體現着「化繁爲簡,All in One」理念的 Docker 出現絕對是一件好事。
2.配置管理工具 Chef & Puppet
注重用戶體驗和工做效率的開發和運營團隊都有着這樣的目標吧?編寫簡潔的、可維護的和高性能的代碼,儘量在不宕機的狀況下部署代碼。在 Docker 這樣的容器出現以前,理論上最好的方法是使用配置管理工具來自動化服務器基礎設施以及部署工做流,這就要提到 Chef、Puppet、Salt 等等。本文先簡單介紹一下一樣基於 Ruby 開發的配置管理工具 Chef 和 Puppet。
使用配置管理工具,須要編寫代碼來描述但願如何安裝和配置系統的一些組件。在服務器上執行代碼的時候,它應該在理想狀態下結束運行。使用這種工具的好處是對要配置的對象提供了跨平臺的抽象,好比抽象掉一些各類不一樣的操做系統在處理相似包管理這樣的功能時所帶來的不一樣,讓用戶大部分時間只需跟這些抽象的資源打交道,而不用關心具體實現。
舉個例子,若是你想安裝 libxml2,能夠用 Chef 寫一個代碼塊,抽象掉不一樣的發行版之間的差別。從而在 libxml2 包存在的任何地方執行這個相同的 Chef 代碼時,它都會正常運行,不管是 Ubuntu、CentOS 或者 Fedora。
package 「libxml2」 do action :install done
但也有一些開發者認爲跟使用容器比起來,使用配置管理工具複雜且容易出錯。Chef 有一種集成方案,容許使用 Chef cookbook 和 recipe 構建 Docker 鏡像以及管理如何把容器部署到服務器上。在遇到不能很好地與容器兼容的較爲古老的軟件時,管理和自動安裝它們的惟一方法是使用配置管理。
3.服務平臺 Stackshare
StackShare 開發者服務平臺是一個致力於開發人員所使用的開發工具和開發服務,發現和分享優質資源的網站,幫助開發者使用最方便的開發工具和最便捷的服務。該網站成立於2013年,以前只是做爲一個輔助項目,後來隨着開發者和工程師們的不斷分享,聚集了大量的優質工具。
Stackshare 對 Devops 有本身的見解,認爲 DevOps 主要分兩塊:一塊是監控,經過監控方案快速發現問題,明確究竟是 Dev 的責任,仍是 Ops 的責任,而且迅速作出反應;另外一塊是 Build Test Deploy,就是快速的測試、部署等等。
工欲善其事,必先利其器。使用優秀的開發工具和服務,能極大地幫助團隊提升效率,尤爲是資源和資金也許並不那麼充足的中小型創業公司。
4.監控產品 Cloud Insight
Web Scale 要求企業擁有成千上萬臺機器的計算能力,這就須要保證機器數量和複雜度,否則難以知足如今的需求。在機器數量增多,複雜度變高的狀況下,須要少數工程師來運維大量機器,可以對大規模集羣和雲平臺進行監控產品應運而生。而國內大多數現有的監控產品沒法批量安裝探針,不能對數據進行聚合,Cloud Insight 卻可以作到這一點。
這是 Cloud Insight 對平臺監控的拓撲圖,從圖中能夠看到哪部分服務器負載太重,也能夠鎖定實時性能不佳的服務器,進行重點關注,查看詳細性能。
Cloud Insight 採用 StatsD 的採集技術,對接 MySQL、Redis、MongoDB,以及 CentOS、RedHat 操做系統,利用 Hbase 存儲和 OpenTSDB 的數據聚合、切片等功能,使數據最終流向 Cloud Insight 進行展示,來監控日益複雜的基礎設施架構。
5.版本工具 GitLab
Gitlab 是一個利用 RoR 開發的開源代碼託管平臺,能夠經過 Web 界面訪問公開或私人項目,能令人們能進行及時的代碼協做,而且其代碼日誌是在本地的,能夠隨時查看。由於對高可用性的重視,GitLab 提供了一個穩定的設置,即便在一個沒有特別措施的服務器上也能應用。而因爲分佈式的自然特性,即便 GitLab 不能使用,Git 使用者也仍然可以提交代碼。經常使用的源碼的版本工具還有 SVN。
擁有界面友好,對工程權限管理方便,有 issues 功能並支持 wiki 等優勢的 GitLab,除了顯著地 social 元素,該有的 CI 整合和 REST API 一個也不缺。也可由 merge request 模式來達到 code review。功能較爲全面,並且各個平臺都有對應的支持,不少團隊已經逐漸由 SVN 移到 GitLab 上來。
6.測試工具 JMeter
Apache JMeter 是 Apache 組織開發的基於 Java 的壓力測試工具。相比其餘 HTTP 測試工具, JMeter 最主要的特色在於擴展性強。JMeter 是免費的,開放源碼軟件,擁有簡單直觀的圖形用戶界面,獨立於平臺,也可用於執行應用程序自動化測試和功能測試。
項目上線以後可能會面對巨大的吞吐量,在這樣的環境下可能出現各類各樣的性能問題,而這都是低吞吐量時沒法發現的。所以,在上線以前作好壓力測試是一件十分必要的事。
JMeter 在性能測試工具中較爲流行,同類產品有 LoadRunner, 部分開發者認爲 JMeter 的結果分析沒有 LoadRunner 詳細,但它的優勢也有不少:
開源。
小巧,不須要安裝,但須要 JDK 環境,由於它是使用 java 開發的工具。
功能全面,JMeter 設計之初只是一個簡單的 web 性能測試工具,但通過不段的更新擴展,如今能夠完成數據庫、FTP、LDAP、WebService 等方面的測試。
向 Web-scale IT 的轉移意味着與 IT 界傳統方式的徹底背離,這將是一個巨大的轉變。Web-scale IT 要求 IT 專業人員用比之前更快的速度部署並有效管理大型基礎架構。隨着商用硬件、開源軟件、本土化供應和管理軟件的發展,規模化管理基礎架構變得愈加困難,基礎架構亦變得愈加複雜。如何纔可以在 Web Scale IT 大潮中分一杯羹?
目前技術的資源都在相似 Facebook、Google 這樣的大型互聯網公司,相對來講傳統企業,是比較落後的。但好在,愈來愈多的開源技術和產品在試圖幫助你們解決這些問題。根據體系結構和基礎設施的需求,借力於雲平臺和其餘 DevOps 工具,將幫助企業緊跟變革的步伐,取得更快的發展。
Cloud Insight 集監控、管理、計算、協做、可視化於一身,幫助全部 IT 公司,減小在系統監控上的人力和時間成本投入,讓運維工做更加高效、簡單。本文出自 OneAPM 工程師,想閱讀更多技術文章,請訪問 OneAPM 官方技術博客。
本文轉自 OneAPM 官方博客