天天看點

響應技術堆棧的五個部署技術

如今,隻要你在未來的移動應用程式的前端的使用者界面元件工作,談論快速移動和技術創新是一件美好的事情,業務正在高速運作,但如果你的後端基礎設施由用手工編碼的配置手動部署的應用程式,應對不斷變化的需求可能是一個噩夢。以下是正在創造各種可能的部署流暢的響應技術堆棧的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的功能和谷歌的雲功能。

在某種意義上,這些部署技術代表了最基本的雲計算的承諾:在引擎還有很多複雜的複雜性,以使他們無縫地工作,而你不必再考慮它。

本文轉自d1net(轉載)

繼續閱讀