2014-05-16 35 views
0

創業公司如何像Feedly或Buffer那樣對其代碼進行更改,通過添加新功能並同時對其進行測試而不會破壞事件?有沒有沙箱框架,是否必須在內部構建,還是隻是在本地主機上覆制git回購並玩耍?創業公司如何在其產品正常運行時向其添加新功能?

+1

你的問題並不簡單:)另外,它不僅適用於初創公司。我聽過的每家大型網絡公司都談到他們的部署實踐不斷增加功能,並且每天都會部署多次。 –

回答

-3

它被稱爲Staging-Environement,你可以在網上找到許多關於TestingSoftware Quality的資源。

另一方面沙盒是用於包含不可信程序的安全機制。

+0

不確定你的意思。好吧,我收到sandboximg,但有沒有任何工具可以在不影響用戶體驗的情況下測試實時應用? –

+0

「測試應用程序」是什麼意思?是關於用戶體驗驗證還是功能測試?您絕不會想要在實時服務器或生產服務器上進行功能測試。 –

3

有很多特定的技術可以將功能添加到軟件並將其部署到運行網站而不會破壞事物。這是一個很大的話題,但這裏有一些目前的最佳做法:

  • 計劃特色是容易引入:小和彼此獨立地的,給定的業務需求,從而易於評估和必要時更改或恢復。

  • 選擇最小化每個部署範圍和影響的體系結構。如果應用程序由定義的API訪問的獨立服務組成,則部署可以更新並重新啓動單個服務,從而減少對整個應用程序的影響。

  • 計劃實施的大的特點是易於部署:在片實施,除了最後對用戶不可見,並部署了多個部署,從而減少了任何一個部署的風險。

  • 由於部署時網站正在運行,因此需要連續版本兼容。例如,更改數據庫可能意味着三個生產更改:首先更改軟件以在舊版和新版數據庫上運行,然後更改數據庫,然後從軟件中刪除對舊數據庫版本的支持。您可能還需要確保當前版本的瀏覽器應用程序與服務器端軟件的後續版本兼容。

  • 功能標誌,又名功能切換,通過留下隱藏,直到管理員在運行時通過一個用戶界面是應用程序的一部分激活它們的功能從部署刪除一些風險。功能標誌還允許回滾功能,而不會回滾整個應用程序,前提是該功能存在錯誤或對業務造成負面影響。 Wikipedia lists a few feature flag frameworks,你會發現更多,如果你搜索。

  • 徹底的自動化測試持續集成防止意外破損。手動迴歸對於任何網絡業務來說太慢,不可靠和昂貴,特別是對於初創公司而言。持續集成確保每次進行更改時都運行測試。

  • 自動部署可防止在部署過程中發生手動錯誤,並且可以更頻繁部署,這意味着每個部署包含的變更較少,因此風險較低。(持續部署,又名連續遞送,被簡單地完全自動化部署,這意味着沒有人甚至有可能按下按鈕。)

  • 金絲雀部署允許改變暴露於用戶的一個子集在投入到全面推出之前的生產中。

  • 監控對捕獲部署到生產環境中的錯誤非常重要。監控兩個低級指標,例如服務器和服務正常運行時間以及高級指標,例如信用卡收費每分鐘。

  • 自動回滾將錯誤部署到生產時的風險和停機時間降到最低。至少有一個人只需按下按鈕即可回滾到以前的版本。對於獎勵積分,當關鍵指標降至閾值以下時,完全自動回滾。 藍綠色部署提供了一種快速回滾方式。

Humble和Farley的Continuous Delivery涵蓋了很多這些主題。我意識到你並沒有詢問持續部署,但許多支持快速迭代的當前最佳實踐導致或適合於持續部署,所以它傾向於完全相同的討論。

相關問題