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