如今,只要你在未來的移動應(yīng)用程序的前端的用戶界面組件工作,談?wù)摽焖僖苿雍图夹g(shù)創(chuàng)新是一件美好的事情,業(yè)務(wù)正在高速運行,但如果你的后端基礎(chǔ)設(shè)施由用手工編碼的配置手動部署的應(yīng)用程序,應(yīng)對不斷變化的需求可能是一個噩夢。以下是正在創(chuàng)造各種可能的部署流暢的響應(yīng)技術(shù)堆棧的5個部署技術(shù)。
(1)容器管理系統(tǒng)
Docker容器在過去的兩年的時間里已經(jīng)征服IT世界,這有很好的理由。Unix的chroot命令的演變,將核心命名空間和分層文件系統(tǒng)進(jìn)行結(jié)合容器包依賴于完整的應(yīng)用程序關(guān)系,讓你的代碼可以快速部署到運行兼容內(nèi)核的任何服務(wù)器中。與硬件虛擬化不同的是,容器只添加很少的運行時開銷,并且其過程幾乎與硬件虛擬化一樣快。
成千上萬的人可以運行在一個虛擬機實例中。他們通過在一個聲明的形式中捕捉安裝和配置狀態(tài),使不可改變的基礎(chǔ)設(shè)施的概念能夠可靠地再現(xiàn)。
Canonical公司的Ubuntu16.04LTS先后引進(jìn)LXD,這有望給Docker和硬件虛擬化帶來很多的好處,其單一的平臺可以提高容器管理系統(tǒng)的安全性,并讓性能更加綜合。在這一點上是比較公平的,容器在這里停留,,標(biāo)志著部署和管理云軟件的方式發(fā)生永久性改變。
(2)服務(wù)發(fā)現(xiàn)框架
容器將為你提供幾乎在任何地方運行服務(wù)的靈活性,但你仍然需要對它們進(jìn)行請求。這意味著在系統(tǒng)中的一些事情必須知道你的應(yīng)用程序容器在哪里正在運行,以及如何路由到正確的地址和端口。在RESTful設(shè)計中,這種要求包括基于7層內(nèi)容路由請求。功能強大的開源工具,如NGINX和HAProxy會讓你很快推出自己的解決方案,但管理代理配置是手動容易出錯,妨礙靈活性。像服務(wù)發(fā)現(xiàn)框架,Apache管理員和中間層通過提供配置的中央存儲自動化面向服務(wù)的體系結(jié)構(gòu)的發(fā)現(xiàn)和路由設(shè)置、接口、服務(wù)宣布他們的生命周期事件,通常一個pub或其它組件的子模型被通知這些事件。
哪種方法適合你將取決于你當(dāng)前的代碼基礎(chǔ)和發(fā)展階段。與簡單的代理不同,發(fā)現(xiàn)層涉及更多的服務(wù)和基礎(chǔ)設(shè)施之間的合作,所以對于每一個提供支持的語言和工具,你已經(jīng)使用將是你決定的一個很大的因素。
(3)容器集群
以集裝箱化的概念和自動服務(wù)發(fā)現(xiàn)的邏輯結(jié)論,最后結(jié)束使用集群。容器集群平臺的目的是構(gòu)建整個系統(tǒng)可靠的可重復(fù)的建筑容器。他們之間有所差異,在一個單一的容器上運行,必須做得到一些不同的主機上運行,并工作在特定數(shù)量的主機上,通過特定的網(wǎng)絡(luò)規(guī)則,自動縮放參數(shù),訪問存儲等。領(lǐng)先平臺,如谷歌Kubernetes,亞馬遜彈性容器服務(wù)和DockerCompose的方法略有不同,有許多共同的目標(biāo)和想法。每個平臺都有優(yōu)勢和劣勢,但所有三個都是生產(chǎn)準(zhǔn)備工具都有相同的目標(biāo):自動化部署技術(shù)和配置的整個堆棧層。當(dāng)在它們之間進(jìn)行選擇時,供應(yīng)商鎖定和跨平臺的服務(wù)代碼的可移植性是重要的考慮因素。無論你采用哪種方法,你也會想看看自動化工具如Ansible,Chef,以及古老而頑強的GNUmake,但在耐久性和可擴展性方面的努力,其最后的結(jié)果是非常值得的。
(4)即時的API
如果你在一個集群上運行,你的集群已經(jīng)發(fā)現(xiàn)服務(wù)。所以當(dāng)一個HTTP請求到集群到達(dá)正確的位置和響應(yīng)回來那真是太好了。你如何終止SSL連接和不同版本的路由,或是不同環(huán)境間的路由?你需要進(jìn)入公共點處理并作為網(wǎng)關(guān),你會部署不同的服務(wù),可以設(shè)置使用SSL負(fù)載平衡器,但他們一般不處理第7層的路由。您可以設(shè)置代理的LB后面做的工作,但現(xiàn)在你不必?fù)?dān)心該組件的配置,可擴展性和故障轉(zhuǎn)移。如果你可以只配置你的整個API作為一個云服務(wù),然后用一個命令部署呢?亞馬遜的API網(wǎng)關(guān)不只是這一點,這是非常光滑。你甚至可以使用類似Swagger的語言,然后只需上傳它,并把它所有的工作描述你的API。谷歌沒有直接的競爭對手,而其對手廠商也不甘落后,在市場中還有像Strongloop獨立的產(chǎn)品推出。
shake-n-bake網(wǎng)關(guān)適用于你的項目嗎?在早期階段,企業(yè)在速度和減少管理開銷的增加應(yīng)該是值得的。后來,如何定價很大程度上取決于你的實際使用水平。
(5)無服務(wù)器服務(wù)
上面提到的技術(shù),可以讓你實現(xiàn)完全自動化的復(fù)雜系統(tǒng)的部署技術(shù),但它是沒有用,假裝沒有仍有很多后端工程要做,以實現(xiàn)這一目標(biāo)。如果你是一個初創(chuàng)企業(yè),你只是想盡可能快地部署API和服務(wù)還是兩個?或者你可能是一個成立多年的公司,想要的是零基礎(chǔ)設(shè)施的靈活性和付費請求成本。在過去的一年中,人們已經(jīng)看到了無服務(wù)器計算平臺的出現(xiàn),在現(xiàn)實世界的應(yīng)用足夠強,。這個領(lǐng)域的行業(yè)領(lǐng)袖是亞馬遜公司下屬的lambda公司,它允許用Python編寫的JavaScript和Java代碼進(jìn)行快速部署。lambda函數(shù)可以是單個腳本或依賴復(fù)雜的應(yīng)用程序和I/O等服務(wù)。他們可以被稱為(調(diào)用)手動或由采用其他亞馬遜的服務(wù),如S3生成的事件觸發(fā)。當(dāng)與API網(wǎng)關(guān)配對時,它們可以被用于部署在零基礎(chǔ)設(shè)施環(huán)境整個微服務(wù)的實現(xiàn)。其他主要的云平臺也進(jìn)入了這一空間,如微軟Azure的功能和谷歌的云功能。
在某種意義上,這些部署技術(shù)代表了最基本的云計算的承諾:在引擎還有很多復(fù)雜的復(fù)雜性,以使他們無縫地工作,而你不必再考慮它。