無服務(wù)器架構(gòu):云計(jì)算的演變
隨著無服務(wù)器架構(gòu)在cloudscape上的發(fā)展,下面是基于MongoDB談?wù)剬?duì)無服務(wù)器架構(gòu)的看法,以及它們?nèi)绾芜m應(yīng)變化的時(shí)代。
介紹
自從計(jì)算機(jī)問世以來,構(gòu)建軟件一直是一個(gè)復(fù)雜的過程。在過去的十年中,出現(xiàn)了新的基礎(chǔ)設(shè)施方法(IaaS和PaaS)、軟件體系結(jié)構(gòu)(SOA和微服務(wù))和方法(敏捷、持續(xù)交付和DevOps),以減輕應(yīng)用程序開發(fā)的復(fù)雜性。雖然微服務(wù)在過去幾年中一直是熱門趨勢,但無服務(wù)器架構(gòu)通過提供一種新的方法來構(gòu)建可伸縮且具有成本效益的應(yīng)用程序而獲得了發(fā)展勢頭。無服務(wù)器計(jì)算通過自動(dòng)提供服務(wù)器和存儲(chǔ)、維護(hù)基礎(chǔ)設(shè)施、升級(jí)軟件和只對(duì)消耗的資源收費(fèi),將開發(fā)人員從構(gòu)建應(yīng)用程序的傳統(tǒng)成本中解放出來。
什么是無服務(wù)器計(jì)算?
無服務(wù)器計(jì)算是云計(jì)算中的下層抽象狀態(tài)。這并不意味著沒有服務(wù)器,而是底層的基礎(chǔ)設(shè)施(物理和虛擬主機(jī)、虛擬機(jī)、容器),以及操作系統(tǒng),都是從開發(fā)人員那里想象出來的。應(yīng)用程序是在事件觸發(fā)的無狀態(tài)計(jì)算容器中運(yùn)行的(例如,用戶上傳的照片觸發(fā)了對(duì)他/她的追隨者的通知)。開發(fā)人員創(chuàng)建應(yīng)用,并依賴基礎(chǔ)設(shè)施分配適當(dāng)?shù)馁Y源來執(zhí)行應(yīng)用。如果應(yīng)用上的負(fù)載增長,基礎(chǔ)設(shè)施將創(chuàng)建應(yīng)用的副本,并進(jìn)行擴(kuò)展以滿足需求。
無服務(wù)器計(jì)算支持多種語言,因此開發(fā)人員可以選擇他們最喜歡的工具。用戶只對(duì)運(yùn)行時(shí)和應(yīng)用消耗的資源(例如RAM)收費(fèi);因此,不再存在供應(yīng)不足或過剩的概念。
例如,如果一個(gè)應(yīng)用的運(yùn)行時(shí)間為500ms,并且消耗了15mb的RAM,那么用戶只需要為500ms的運(yùn)行時(shí)間和使用15mb RAM的成本付費(fèi)。
無服務(wù)器體系結(jié)構(gòu)是微服務(wù)的自然擴(kuò)展。與微服務(wù)類似,無服務(wù)器體系結(jié)構(gòu)應(yīng)用程序被分解為特定的核心組件。微服務(wù)可以將類似的功能分組到一個(gè)服務(wù)中,而無服務(wù)器應(yīng)用程序?qū)⒐δ軇澐譃楦?xì)粒度的組件。自定義代碼是作為運(yùn)行在無狀態(tài)計(jì)算服務(wù)中的獨(dú)立、自治、細(xì)粒度應(yīng)用開發(fā)和執(zhí)行的。
為了說明這一點(diǎn),讓我們看一個(gè)簡單的例子,說明微服務(wù)和無服務(wù)器體系結(jié)構(gòu)的不同之處。
在圖1中,客戶機(jī)與“User”微服務(wù)交互。容器預(yù)先配置了容器中“User”服務(wù)的所有功能。該服務(wù)由不同的應(yīng)用(update_user、get_user、create_user、delete_user)組成,并根據(jù)整個(gè)服務(wù)的總體負(fù)載進(jìn)行伸縮。服務(wù)將在空閑時(shí)消耗硬件資源,并且用戶仍將為未充分利用的資源付費(fèi)。
對(duì)于無服務(wù)器架構(gòu),“用戶”服務(wù)將被分成更細(xì)粒度的功能。在圖2中,每個(gè)API接口對(duì)應(yīng)一個(gè)特定的應(yīng)用和文件。當(dāng)客戶端發(fā)起“創(chuàng)建用戶”請(qǐng)求時(shí),“用戶”服務(wù)的整個(gè)代碼庫不必運(yùn)行;相反,只有create_user.js會(huì)執(zhí)行。無需預(yù)先配置容器,因?yàn)楠?dú)立功能僅在需要時(shí)消耗資源,并且用戶只需為其功能的實(shí)際運(yùn)行時(shí)間付費(fèi)。這種粒度還有助于并行開發(fā)工作,因?yàn)榭梢元?dú)立測試和部署功能。
無服務(wù)器計(jì)算的好處
成本隨使用而增加:
無服務(wù)器計(jì)算的最大好處之一是您只需為應(yīng)用的運(yùn)行時(shí)間付費(fèi)。沒有“空閑”資源的概念,因?yàn)槿绻粓?zhí)行該功能,則不會(huì)向您收費(fèi)。這對(duì)于每小時(shí)僅使用幾次的應(yīng)用程序特別有用,這意味著任何專用硬件、VM或容器在大部分時(shí)間都處于閑置狀態(tài),并且用戶需要為未充分利用的資源付費(fèi)。借助無服務(wù)器計(jì)算,企業(yè)可以構(gòu)建整個(gè)基礎(chǔ)架構(gòu),并且在客戶開始使用該應(yīng)用程序之前無需為任何計(jì)算資源付費(fèi)。
彈性可擴(kuò)展性:
無服務(wù)器架構(gòu)的彈性可擴(kuò)展性也很簡單。如果應(yīng)用需要擴(kuò)展,基礎(chǔ)設(shè)施將制作應(yīng)用的副本來處理負(fù)載。這方面的一個(gè)例子可能是響應(yīng)天氣請(qǐng)求的聊天機(jī)器人。在無服務(wù)器架構(gòu)中,聊天機(jī)器人功能將通過檢索用戶的位置并響應(yīng)溫度來處理響應(yīng)。對(duì)于少數(shù)請(qǐng)求,這不是問題,但是如果聊天機(jī)器人服務(wù)每秒充斥著數(shù)千個(gè)請(qǐng)求,會(huì)發(fā)生什么。對(duì)于這種情況,聊天機(jī)器人功能將通過實(shí)例化該功能的數(shù)千個(gè)副本來自動(dòng)擴(kuò)展。一旦請(qǐng)求平息,環(huán)境將終止空閑實(shí)例并縮減,從而允許成本與用戶需求成比例地?cái)U(kuò)展。
快速開發(fā)和迭代:
無服務(wù)器計(jì)算非常適合需要快速開發(fā)、原型和迭代的公司。開發(fā)速度更快,因?yàn)閷?duì)IT運(yùn)營沒有任何依賴。應(yīng)用是單線程的,這使得調(diào)試和部署應(yīng)用更簡單。構(gòu)建過程也被分解成更小、更易于管理的塊。這增加了可以通過持續(xù)交付管道推送的更改數(shù)量,從而實(shí)現(xiàn)快速部署和更多迭代反饋。迭代速度快,因?yàn)榧軜?gòu)有利于快速進(jìn)行大量代碼更改,從而產(chǎn)生更多客戶反饋和更好的產(chǎn)品市場契合度。
更少的系統(tǒng)管理:
無服務(wù)器并不意味著您完全消除了基礎(chǔ)設(shè)施的操作元素,但它確實(shí)意味著更少的系統(tǒng)管理。無需管理、配置和擴(kuò)展服務(wù)器,也無需修補(bǔ)和升級(jí)。服務(wù)器自動(dòng)部署在多個(gè)可用區(qū),提供高可用。支持也得到了簡化;如果在半夜出現(xiàn)問題,則云提供商有責(zé)任解決問題。
開發(fā)人員生產(chǎn)力:
通過使用無服務(wù)器架構(gòu),開發(fā)人員可以更專注于編寫代碼,而不必?fù)?dān)心管理應(yīng)用程序的操作任務(wù)。這使他們能夠開發(fā)創(chuàng)新功能并專注于對(duì)業(yè)務(wù)最重要的核心業(yè)務(wù)邏輯。
MongoDB Atlas 和無服務(wù)器計(jì)算
借助MongoDB Atlas,用戶可以從無服務(wù)器環(huán)境中利用MongoDB的豐富功能——富有表現(xiàn)力的查詢語言、靈活的架構(gòu)、永遠(yuǎn)在線的可用性、分布式橫向擴(kuò)展。
MongoDB Atlas是一種數(shù)據(jù)庫即服務(wù),提供數(shù)據(jù)庫的所有功能,而無需設(shè)置操作任務(wù)的繁重工作。開發(fā)人員不再需要擔(dān)心供應(yīng)、配置、修補(bǔ)、升級(jí)、備份和故障恢復(fù)。Atlas提供了彈性的可擴(kuò)展性,無論是通過在一系列實(shí)例大小上擴(kuò)展還是通過自動(dòng)分片進(jìn)行擴(kuò)展,所有應(yīng)用程序都不會(huì)停機(jī)。
設(shè)置Atlas很簡單。
選擇適合您的應(yīng)用程序需求的實(shí)例大小,然后單擊“CONFIRM & DEPLOY”。根據(jù)實(shí)例大小,可以在幾秒鐘內(nèi)配置MongoDB集群。
MongoDB Atlas為那些有興趣構(gòu)建無服務(wù)器架構(gòu)的人提供了許多好處:
供應(yīng)商獨(dú)立性:
云供應(yīng)商通常只提供特定于該供應(yīng)商的數(shù)據(jù)庫,這可能不符合開發(fā)人員的需求。MongoDB Atlas提供獨(dú)立于底層云提供商的能力,并使開發(fā)人員能夠根據(jù)自己的需求選擇合適的工具。開發(fā)人員可以利用MongoDB查詢語言的豐富功能和靈活的數(shù)據(jù)模型,無需擔(dān)心管理數(shù)據(jù)庫的操作任務(wù)。如果您決定轉(zhuǎn)移到另一個(gè)云提供商,您將不必使用不同的數(shù)據(jù)庫技術(shù)重新填充您的數(shù)據(jù)。MongoDB Atlas目前僅在AWS上可用,即將支持Microsoft Azure和Google Cloud Platform (GCP)。
MEAN堆棧:
無服務(wù)器架構(gòu)加速了將業(yè)務(wù)邏輯從后端轉(zhuǎn)移到前端的趨勢。這使得前端框架的選擇變得更加重要。AngularJS非常適合此要求,并且是無服務(wù)器架構(gòu)的流行前端。AngularJS是動(dòng)態(tài)Web應(yīng)用程序的結(jié)構(gòu)化Javascript框架,它提供交互功能和AJAX(用于創(chuàng)建快速和動(dòng)態(tài)網(wǎng)頁的技術(shù))豐富的組件。結(jié)合NodeJS、ExpressJS和MongoDB,這些工具形成了MEAN堆棧(MongoDB、ExpressJS、AngularJS、NodeJS)。在整個(gè)無服務(wù)器堆棧中使用JavaScript和JSON有巨大的優(yōu)勢。從事前端工作的人可以輕松理解應(yīng)用(后端)代碼和數(shù)據(jù)庫查詢。此外,在整個(gè)堆棧中使用相同的語法和對(duì)象可以讓您的團(tuán)隊(duì)從理解多種語言的最佳實(shí)踐中解放出來,并降低理解代碼庫的門檻,從而提高軟件性能和開發(fā)人員的生產(chǎn)力。
快速部署:
使用MongoDB Atlas,可以在幾分鐘甚至幾秒鐘內(nèi)調(diào)配和部署MongoDB集群。開發(fā)人員不再需要擔(dān)心配置或管理服務(wù)器。將MongoDB Atlas集成到無服務(wù)器平臺(tái)需要您將連接字符串傳遞到無服務(wù)器應(yīng)用程序中。
MongoDB Atlas具有廣泛的功能來防御、檢測和控制對(duì)MongoDB的訪問,提供任何現(xiàn)代數(shù)據(jù)庫中最完整的安全控制:
·用戶權(quán)限管理:使用行業(yè)標(biāo)準(zhǔn)機(jī)制在數(shù)據(jù)庫級(jí)別進(jìn)行身份驗(yàn)證和授權(quán),控制對(duì)敏感數(shù)據(jù)的訪問
·加密:保護(hù)網(wǎng)絡(luò)上的動(dòng)態(tài)數(shù)據(jù)和持久存儲(chǔ)中的靜態(tài)數(shù)據(jù)
為確保開箱即用的安全系統(tǒng),自動(dòng)啟用身份驗(yàn)證和IP地址白名單。
IP地址白名單是MongoDB Atlas的一項(xiàng)關(guān)鍵安全功能,它添加了一個(gè)額外的層來防止第3方訪問您的數(shù)據(jù)。除非客戶端的IP地址已添加到MongoDB Atlas組的IP白名單,否則客戶端將無法訪問數(shù)據(jù)庫。
對(duì)于AWS,MongoDB Atlas的VPC Peering正在開發(fā)中,即將推出,提供簡單、強(qiáng)大的解決方案。它將允許將包含您的應(yīng)用程序服務(wù)器的VPC中的整個(gè)AWS安全組列入白名單。
可擴(kuò)展性:
您應(yīng)該期望您的無服務(wù)器功能能夠向外擴(kuò)展,因此需要對(duì)下游設(shè)置進(jìn)行架構(gòu)以跟上您的功能并進(jìn)行擴(kuò)展。關(guān)系數(shù)據(jù)庫往往會(huì)因這種模型而崩潰。MongoDB Atlas的設(shè)計(jì)以可擴(kuò)展性為核心原則。當(dāng)您的集群達(dá)到某個(gè)閾值時(shí),MongoDB Atlas會(huì)提醒您,您可以一鍵配置新服務(wù)器。
靈活的架構(gòu):
由于無服務(wù)器架構(gòu)是事件驅(qū)動(dòng)的,因此許多用例都圍繞著物聯(lián)網(wǎng)(IoT)和移動(dòng)設(shè)備展開。MongoDB非常適合這些用例以及更多用例,因?yàn)槠潇`活的文檔模型使您能夠存儲(chǔ)和處理任何類型的數(shù)據(jù):事件、地理空間、時(shí)間序列、文本、二進(jìn)制和其他任何類型。向文檔結(jié)構(gòu)添加新字段很簡單,可以輕松處理由事件驅(qū)動(dòng)的應(yīng)用程序生成的更改數(shù)據(jù)。開發(fā)人員花更少的時(shí)間修改模式,更多的時(shí)間用于創(chuàng)新。
- 上一篇
企業(yè)為云遷移做好準(zhǔn)備的八種方法
企業(yè)要開始走上云遷移之旅,必須有一個(gè)策略來指導(dǎo)這個(gè)過程。該策略應(yīng)該定義集成的規(guī)模和所涉及的團(tuán)隊(duì)。
- 下一篇
未來五年的15大技術(shù)趨勢
未來五年,預(yù)計(jì)將出現(xiàn)一些關(guān)鍵技術(shù)趨勢,并推動(dòng)各行業(yè)發(fā)生重大變革。這些趨勢涵蓋廣泛的領(lǐng)域,從人工智能和物聯(lián)網(wǎng)到5G連接、區(qū)塊鏈和可持續(xù)性。本文旨在全面了解將影響未來幾年的主要技術(shù)趨勢,并為每種趨勢的潛在影響提供示例和見解。