Cloud-Native
近年來(lái),一直有接觸Cloud Native(云原生),也因?yàn)楣井a(chǎn)品的原因。起初,我對(duì)此概念的確挺不以為然的,覺(jué)得沒(méi)有啥特別的,不還是“云”嘛!之所以我這么認(rèn)為,是因?yàn)楣驹趲啄昵霸谌旧舷峦苿?dòng)Cloud Mindset的轉(zhuǎn)型呢!
最近,我在閱讀一本關(guān)于云原生的書(shū)《云原生模式》作者:Cornelia Davis。慢慢地,我改變了我的一些看法。接下來(lái),我會(huì)以初探云原生為主題,總結(jié)關(guān)于云原生的方方面面。今天的主要目標(biāo)是回答為什么云原生會(huì)出現(xiàn)。
我們知道做任何事情,都需要一定的動(dòng)機(jī)。那么,云原生出現(xiàn)的動(dòng)機(jī)或者說(shuō)背景是什么呢?要想回答這個(gè)問(wèn)題,不可回避的,我們先從現(xiàn)代應(yīng)用程序的需求入手,去理解這個(gè)問(wèn)題。現(xiàn)代應(yīng)用程序的關(guān)鍵需求有如下方面。
零停機(jī)時(shí)間(Zero Downtime)
現(xiàn)代應(yīng)用程序的一個(gè)關(guān)鍵需求:它必須始終是可用的。基本上,我們現(xiàn)在上很難容忍應(yīng)用程序出現(xiàn)短暫不可用情況,尤其我們經(jīng)常使用應(yīng)用,比如微信、支付寶等。因?yàn)?,世界是始終在線的。
縮短反饋周期(Shorten Feedback Loop)
這個(gè)要求考驗(yàn)的是頻繁發(fā)布代碼的能力。在激烈的競(jìng)爭(zhēng)和不斷增長(zhǎng)的消費(fèi)者期望的雙重驅(qū)動(dòng)下,應(yīng)用程序更新已經(jīng)從每月數(shù)次發(fā)展到每周數(shù)次,有時(shí)甚至一天數(shù)次。讓用戶(hù)感到興奮毫無(wú)疑問(wèn)是有價(jià)值的,但是持續(xù)發(fā)布新版本的最大動(dòng)力是降低風(fēng)險(xiǎn)。
移動(dòng)端和多設(shè)備支持
在移動(dòng)互聯(lián)網(wǎng)時(shí)代,移動(dòng)端的設(shè)備已經(jīng)無(wú)縫地扎根到我們工作生活的方方面面了。此外,用戶(hù)越來(lái)越希望他們的應(yīng)用體驗(yàn)隨時(shí)可以從一個(gè)設(shè)備無(wú)縫切換到另一個(gè)設(shè)備上。正確設(shè)計(jì)應(yīng)用程序?qū)τ跐M(mǎn)足這些需求至關(guān)重要。核心服務(wù)必須能夠支持所有為用戶(hù)提供服務(wù)的終端設(shè)備,并且系統(tǒng)必須能夠適應(yīng)不斷變化的需求。
互聯(lián)設(shè)備(IoT物聯(lián)網(wǎng))
互聯(lián)網(wǎng)不再僅僅將人類(lèi)與系統(tǒng)連接起來(lái)。如今,龐大數(shù)量的設(shè)備通過(guò)互聯(lián)網(wǎng)連接,使得它們能夠被連接的其他實(shí)體監(jiān)控甚至控制,比如傳感器、遠(yuǎn)程控制設(shè)備。物聯(lián)網(wǎng)設(shè)備從兩個(gè)基本方面改變了我們的軟件的特性。首先,互聯(lián)網(wǎng)上的數(shù)據(jù)流量急劇增加。其次,為了收集和處理這些海量數(shù)據(jù),用于計(jì)算的基礎(chǔ)設(shè)施勢(shì)必發(fā)生重大的改變。當(dāng)計(jì)算資源被放在“邊緣”位置,即更靠近連接設(shè)備時(shí),它會(huì)變得更加分布式。數(shù)據(jù)量和基礎(chǔ)架構(gòu)之間的差異,需要新的軟件設(shè)計(jì)和實(shí)踐來(lái)解決。
數(shù)據(jù)驅(qū)動(dòng)
根據(jù)以上所列的需求,我們應(yīng)該想到關(guān)于數(shù)據(jù)的一些問(wèn)題。數(shù)據(jù)量正在不斷增加,數(shù)據(jù)源分布得更加廣泛,而軟件的交付周期正在縮短。綜上所述,這三個(gè)因素使得大型、集中式、共享的數(shù)據(jù)庫(kù)變得無(wú)法使用。
綜上所述,以上所列的現(xiàn)代軟件的需求—持續(xù)的可用性、頻繁發(fā)布新版本以實(shí)現(xiàn)不斷演進(jìn)、易于伸縮和智能化,都是過(guò)去的軟件設(shè)計(jì)和管理系統(tǒng)所無(wú)法滿(mǎn)足的。這些需求,以及對(duì)一個(gè)運(yùn)行這些軟件的新平臺(tái)的需求,直接導(dǎo)致了一種新的軟件架構(gòu)風(fēng)格的出現(xiàn),即云原生軟件。