為什么你應當將應用遷移到云服務上?

jopen 9年前發布 | 35K 次閱讀 云服務
 

軟件組織正在快速地實施云技術,但遷移始終是一個無法回避的挑戰。哪些部分是需要你密切留意的?哪些應用程序更適合于進行遷移?如何對應用程序進 行重構以適用于云端?經歷了這一轉變的先行者為我們留下了什么啟示?在這一系列文章中,你將從那些在幫助企業成功地遷移至云環境方面富有經驗的專家那里獲 得實用的建議。這一領域應得到高度關注,我們希望你也能夠參與這方面的討論。


你的客戶或用戶真的在意你的應用程序是運行在Tier 1的數據中心,還是運行在公有云上嗎?當然不會,但他們確實會定期關注在使用你的服務時所經歷的體驗。客戶期望的服務是快速并且可靠的,它不會因為訪問量 的突然上升而降低響應度,而是始終保持優良的表現。他們也期望你能夠更新你的服務交付產品,讓它與最新的技術發展保持一致。

為了理解這一點,讓我們用業務方面的說法來進行一個類比,可以將以上需求解釋為:

你現有的應用程序(例如一個醫療應用)的基礎設施是否足夠敏捷與靈活,能夠快速地推出一個新的特性?比如在可穿戴設備(例如智能手表)上 用亮燈及語音提醒患者到了服用藥品的時間

在本文中,我們將探索將現有的應用遷移到云端所產生的各種益處的細節,使你在進行決策時做到心中有數。

為什么要進行遷移?

  • 在首爾舉辦的Big Bang 團體“2015 世界巡演”的在線售票過程中,熱情的歌迷不僅很快搶完了門票,還使得服務器一度崩潰。
  • Flipkart 在舉行一次有歷以來力度最大的促銷活動時,網站發生崩潰。

靈活的能力

以上這種情況并不罕見,其結果是媒體反而加大了對這一事件的關注。有趣的是,如果一個初創公司的應用首次遇到這種因為突發性流量而產生崩潰的情形,這種體驗并不那么糟糕,反倒是一次寶貴的經驗,因為崩潰是難以避免的。

那么,你的應用是否能夠經受住訪問量突然空前增長的考驗呢?

為了回答這個問題,你可能先要詢問一下你的基礎設施提供商:為了應對這種突發性的增長,他們能夠在多少時間內增加硬件能力。 你的提供商是否能夠做到接近即時地(在幾分鐘內)設置(或解除)資源?

與傳統的服務提供商不同,云服務在設計時就提供了內置的工具,以建立快速的靈活性,它能夠確保以下能力:

  1. 一旦由于突發性流量造成訪問量達到峰值,能夠設置額外的資源(例如虛擬機VM)以維持對用戶的響應能力。
  2. 一旦突發性流量回復正常,能夠立即解除這些額外的資源(將虛擬機釋放,返回給云服務)。這能替你節省很多錢!
  3. 你的應用能夠按需立即訪問無限量的資源。

簡單的總結一下。在任何一個時間點上,根據你的負載情況變化,云服務總是能夠為你提供適當的設置能力。設置的資源既不會過多也不會過少,并且能夠快速、自動地完成。

對于傳統的基礎設施提供商來說,要對負載的增或減作出反應,通常需要幾個小時(實際上很可能要幾天)。因為他們需要手工介入這一過程,才能夠實現這種可響應性的機制。

注: 請不要混淆了 靈活性可伸縮性 。只要在云環境中的基礎設施上部署應用,就能夠隱式地獲得這種靈活性,而應用程序的可伸縮性是由它的架構所決定的。如果某個應用程序能夠通過往物理機器中 加入(縱向擴展 / 垂直伸縮)額外的能力(例如RAM或CPU),或是為資源池中加入更多的物理機器(橫向擴展 / 水平伸縮),而因此能夠承受更多的負載,我們就說這個應用是可伸縮的。

很顯然,僅僅將應用遷移到云服務并不總是能夠確保它的可伸縮性。如果某個應用程序的數據庫是基于Oracle或SQL Server的標準版本,它不支持分區(實現可伸縮架構的前提條件之一),在這種情況下要實現大規模化,可能要對整體功能進行大規模的重新設計。而 NoSQL數據庫就實現了高度的可伸縮性。與之類似,你的應用程序或許托管在一個多核的服務器上,但如果你的應用沒有實現多線程應用,那么這點優勢也沒有 什么實際用處。這也是Google為什么要推出Go這門新語言的原因,就是為了讓并發(多線程)編程更簡單。

不過,你必須理解一點,并非所有的應用都需要這種靈活性能力。舉例來說,如果你的業務規模很小,只是在一個內部的HR(人力資源)管理應用中為50人左右的員工提供服務,并且員工數目不太可能會有爆發式的增長,那么為了靈活性而將整個應用遷移至云端就沒什么必要了。

降低成本

成本的降低包括兩個方面:

1. 無資本支出

  • 由于你不需要購買IT方面的基礎設施,因此也沒有資本支出方面的成本了。云提供商不需要你做出任何長期的承諾。

2. 現用現付

  • 云服務的基本特征之一就是按使用量付費。服務計劃是根據預配置的VM的運行小時數,以及帶寬、數據傳輸及存儲量的大小而決定的。請確保你進行了適當的配置與設置,只為你所需的能力付費。

這種特征與傳統的數據中心完全相反,后者在大多數情況下,你都需要額外設置超過正常范圍的機器,雖然你只在一些極端的情況下才會用到這些能力,但仍然要為它們買單!

敏捷性 —— 更快地進入市場

作為一名企業家,你必須具備長遠的眼光,看準時機快速地決定開發應用程序的某個新特性、提交代碼、將其發布到市場,讓你的客戶為此感到震撼(也包 括你的競爭對手!)。云服務提供商能夠為你帶來自動化的基礎設施以及快速的轉變能力,與之相比,傳統服務提供商在基礎設施的申請、訂單處理、獲取以及安裝 上顯得非常官僚。

你是否注意到一點,在進入2015之后,電子商務應用逐漸從 移動優先 轉變為 應用優先 策略?假設這種策略正適合你的目標,那么你是否能夠做到足夠敏捷,以快速地響應這種技術上的轉變呢?

專注于你的業務

與IT相關的諸多瑣事都能夠在云服務中實現自動化,以傳統的方式管理這些瑣事無疑是對你的寶貴時間與精力的一種浪費,它對于你的核心業務沒有產生任何直接貢獻。

請保持你遠離那些使你的注意力分散的東西,將你的勞動力保持在更高價值的活動上并取得一致。別忘記 —— 時間就是金錢

更高的可用性、可靠性和性能

除了云服務的服務水平協議(SLA),還有什么服務能夠實現三個9甚至四個9(99.99%)的可用性呢?雖然傳統的數據中心或許會聲稱他們也能夠達到相同的能力,但其中的大多數并不具備某種良好的評估與監控服務,而這是對他們的SLA能力進行審計所不可或缺的。

為了提高可用性與可靠性, 云服務能夠實現跨多個可用性區域( AWS 、Rackspace ),還有公有云提供商實現的聯合網絡(federated network ),以及多虛擬機(multi-hypervisor )技術 ,這些都是為了實現100%的可用性而設計的特性。

對許多現有的應用程序來說,他們的用戶往往來自于某個特定的區域。在遷移到云端之后,由于選擇了合適的地理區域的云提供商,應用的網絡延遲也降低了。

容災性(DR)

正如他們所說:

如果某件事有可能會變得更糟,那么它就一定會變糟。

-- 墨菲定律的某種變體

你的應用程序是否能夠經受住災難的考驗呢?例如網絡與電源故障、火災、地震、暴雨、洪水,或是保存你的服務器資源的大廈遭受了嚴重的物理破壞呢?

容災計劃(DRP)需要細致的計劃以及架構設計,它能夠意識到故障的發生并進行快速響應,以緩解對業務造成的損失。DR是一個復雜的命題,因為大 多數企業都沒有準備好DRP,或者說他們所準備的DRP會由于整個計劃中的某些小缺陷而注定會失敗,而這些缺陷是由于缺乏這方面的演練而產生的。只有這些 罕見的災難發生之后,他們才會意識到這些缺陷。

對于業務的連續性來說,成熟的DRP是十分關鍵的。云環境在設計上是十分靈活的,你需要選擇正確的工具集與配置,讓災難對你的業務產生的影響降至最低。

云環境是安全的

100%的安全性只能是一種幻覺。如果你必須在現有的選擇中進行決策,那么云服務的安全性不會低于任何一種現有的系統。云服務的提供商以他們的創 新性而聞名,在任何一方面,他們所實現的物理及邏輯安全實踐都要勝于單一的本地數據中心的運維。許多云提供商如今都已經獲得ISO、PCI DSS、歐盟模式條款(EU Model Clauses)及其它安全組織的認證。

此外,并非所有應用程序都需要銀行級別的安全性,對吧?如果你的應用中真的包含了高度機密的數據,或是必須符合某種特定的安全與隱私條規(例如HIPPAA或HITECH),那么你可以選擇混合式的云服務(推薦醫療應用使用這種方式)。

這些不時出現的關于云服務安全性的問題,更多的是一種FUD(恐懼、不確定性和懷疑),而并非事實。

其它一些你無法忽視的益處

以上所提到的這些益處是當你遷移到云環境中可以立即獲得的好處,除此之外還有一些無形的益處存在。公有 云服務是無污染的 ,因為 云資源池 也是云環境的根本特征之一。

云服務提高了協作能力,并實現高效的文檔控制,使你能夠在任何地方開展高效的辦公。雖然在遷移過程中需要你對應用程序的各方面進行或多或少的重新 設計,但這也為你帶來了一個良機,可以實現某些尖端的技術,例如使用Docker(一種基于虛擬化技術的容器,它已得到了空前的應用)實現更簡便的部署。 此外,隨著物聯網在2015走向舞臺的中央,你可能需要在現在的應用中整合微服務架構,以應對在不久的將來客戶可能會產生的請求。

怎樣的應用程序適合遷移至云服務?

根據經驗來看,在過去七年間所開發的多數應用程序,包括n層或流行的3層結構web應用、批處理應用和后端服務或許比較適合進行遷移,而更早的應用程序或許需要投入更多的精力進行改造。這一點完全取決于現有應用程序的架構。

有多種因素可能會導致你現有的應用程序與云遷移過程不兼容(或者可能需要投入巨大的精力進行改造):

  1. 緊耦合的架構,硬編碼的配置。
  2. 依賴于某種云服務所不支持的數據庫。
  3. 需要某些特殊的硬件功能,例如基于硬件的加密、大型主機等等。
  4. 依賴于多種第三方應用。
  5. 許可問題。

以下這份表格可以作為一份參考,或許能夠幫助你進行快速地決策:

為什么你應當將應用遷移到云服務上?

封裝式應用

Email、協作及生產力應用

醫療應用

遺留應用

周期性應用

工資單處理、納稅申報、學校招生、某些博彩應用、會議管理等等。

嚴守合規性; 包括HIPAA - HITECH, 美歐安全港, 歐洲通用數據保護條例(GDPR)等等。

數據庫支持 —— Microsoft SQL Server 2008 R2之前的版本、MySQL 5.1之前的版本,及Oracle 11g之前版本的數據不適合進行云遷移,因為需要投入額外的精力將它們首先升級到所支持的版本。

有限的,或是無技術支持的 —— 拿MS Azure舉個例子,微軟對于SQL Server 2205之前的版本的技術支持 非常有限,或是完全不提供支持 。Azure VM鏡像(模板)只包括SQL Server 2008 R2之后的版本。

可預見發生訪問量激增的應用

黑色星期五或購物季時的電子商務應用、皇室的婚禮、世界杯網站、訂票應用。

銀行應用

符合PCI DSS 規范,

安全方面的顧慮,

對于大型主機的依賴。

許可問題 —— 如果你現有的許可符合許可證移動性的條款,例如BYOL(自有許可),就能夠將它轉到云服務中。對于大多數遺留應用來說,這一選擇并不適用。

無法預見訪問量激增的應用

由于被權威性的網站所提及導致訪問量突然上升。

(另有某些國內網站,請參考英文原文)

具有地理位置限制的應用 ——大多數云數據中心位于北美或西歐。在設計上,云環境中的數據沒有邊界限制,除非有某些限制的存在。如果你的國家對于你的應用中的數據合規性有某些特殊的需求,在遷移之前要仔細考慮這一點。

ERP系統

存在架構瓶頸 ,例如緊耦合、硬編碼的配置、對第三方應用的依賴,在某些情況下會用到特殊的基于硬件的加密功能

初創應用 / 在線游戲

訪問量的增減取決于你的業務是成功還是失敗



大數據(分析)應用



需要超級計算能力

超高帶寬、增強型網絡、以及非常高的計算能力 —— 如HPC (高性能計算)



微服務



概念型原型、開發及QA環境



備份、歸檔及存儲



行動勝于語言

這下這份表格中的組織已經將現有的應用遷移到云環境中,表格中也提及了他們在遷移完成后所獲的益處。

序號#

組織

挑戰

遷移至

益處

1.

Animoto

一個在美國的視頻制作以及圖片幻燈片制作公司。

現有的應用是在自有的服務器上運行的。

在2008年4月,通過非死book上的應用達到了用戶高峰,在三天之年的注冊人數達到了75萬。

AWS

1. 在峰值時,一小時內約有2萬5千人會使用Animoto!為了在三天之內達到這種能力,他們的應用從50個EC2實例擴展到最多3500個EC2的實例。

注:EC2實例即虛擬服務器。

2.

redBus

一個在印度的在線巴士訂票服務。

在一個傳統的數據中心運行它的處理工作,它的基礎設施無法有效地應對處理量的起伏,這影響了他們的生產力。

并且服務器的采購及配置非常耗時。

AWS

1. 總體成本降低了大約30-40%.

2. 延遲降低了 (大約4倍)。由于延遲的降低,redBus的訪問量大約上漲了三倍。

3.

Expedia

在美國處于領先地位的旅游公司。

必須在物理上接近客戶的地方運行他們的Expedia Suggest服務(ESS),以實現快速的可響應服務,使網絡延遲降至最低。

AWS

平均網絡延遲從700毫秒降至50毫秒以下。

4.

Xiaomi

一家中國的高端智能手機制造商。

需要一種解決方案能夠為世界各國的人群提供可靠性以及令人滿意的連接速度,并且在公司成長時能夠無縫地拓展他們的服務。

AWS

1. 下載速度快了 30%。

2. 服務交付周期變短了,并且快速地推出了應用下載中心。

3. 更好的訪問速度,減少了前期的投入。

5.

Aucor

一個芬蘭的web設計公司。

他們的私有虛擬服務器在小規模時運行情況良好,但隨著項目數量的不斷上升,所需的服務器數目過多,還需要聘用全職的系統管理員。

GAE

1. 能夠每秒處理超過7萬個請求,并且讓用戶完全感受不到延遲。

6.

Khan Academy

一個美國的非盈利性教育組織。

最初他們維護著一個網站用于他們不斷增加的視頻庫,這一結構已經經過了許多年,但隨著訪問量的增長,該平臺遇到了各種限制。

GAE

1. 每個月能夠支持380萬獨立請求,每個上學日還要提供150萬個實踐問題并處理回答。

2. 保存著2000個以上的視頻片段,并且還在繼續增長。

3. 該系統能夠輕易地處理用量的增長。

結論

隨著數以萬計的應用遷移至云服務并開始利用它的能力,事實已經證明了云服務的實用性,并且它已經實現了整個產業的預期。在全球已經有很大一部分公司以某種形式在使用云服務了,無論這些公司的地理位置在哪里以及他們的專業領域是什么。

回頭看看2008年,當時云計算的“期望夸大”(指雖然宣傳力度很高,但無法繼續推動)正處于巔峰期。某個價值數百億美元的IT公司的CEO曾表示:

可以說,計算機產業是唯一一個比女性時尚更受時尚所驅動的產業了。也許我確實是個傻瓜,但是我真的不知道其它人都在說些什么。這到底是什么?

這一家IT巨擘由于忽視了這一趨勢,目前已經被視為這方面的落后者,它的財富也在不斷下滑。但近幾年他們也參與到云計算的競爭中,并試圖努力追趕領先者的腳步!因此,重要的是為你的轉變進行計劃,而不要等到為時已晚再開始行動。

關于作者

為什么你應當將應用遷移到云服務上? Basant Singh 是一位軟件開發者,具有12年應用程序及數據庫架構設計的經驗。在過去五年間,他通過他的編程技術幫助初創公司超越最小可行產品這一階段。目前,他正充滿 熱情地投入到他的下一個項目中,它使用了Go編程語言與Docker技術。在他職業生涯的前期受雇于某個跨國企業時,他為全球各處的財富500強上的客戶 創建了多個應用程序。

他的博客是 Techno-PulseGolangPro 。推ter帳號是@SinghBasant。

軟件組織正在快速地實施云技術,但遷移始終是一個無法回避的挑戰。哪些部分是需要你密切留意的?哪些應用程序更適合于進行遷移?如何對應用程序進 行重構以適用于云端?經歷了這一轉變的先行者為我們留下了什么啟示?在這一系列文章中,你將從那些在幫助企業成功地遷移至云環境方面富有經驗的專家那里獲 得實用的建議。這一領域應得到高度關注,我們希望你也能夠參與這方面的討論。

本文是 InfoQ 的“ 云遷移 ”系列文章中的一篇,你可以通過 RSS 訂閱 獲取關于新文章的通知。

查看英文原文: Why You Should Definitely Migrate Existing Apps to the Cloud

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!