2016-10-01 35 views
2

我的堆棧是Wildfly,angular,spring,RDS,cloudfront。前端資源(html/js等)存儲在應用程序中(即由Wildfly提供)。零前端資源宕機時間部署

對於後端和DB我可以零宕機背後ELB 2 EC2部署,但我不知道如何處理這種情況:

  • 用戶老去JS/HTML從我們的服務器 - 的>部署新版本完成 - >用戶點擊使用舊API的東西(例如,新版本有一個新的強制參數)

有沒有辦法避免這種情況?我只能想到爲新參數設置默認值。或者API版本化在這裏有意義嗎?

另一個問題:如果前端資源由cloudfront + s3提供,該怎麼辦?如何將新資源部署到s3與後端同步?

回答

2

我只能想到將新參數的默認值。或者 API版本化在這裏有意義嗎?

這聽起來像是API版本化準備解決的問題。只要發生會破壞以前版本的客戶端的更改,就會更改API版本。

另一個問題:如果前端資源由 cloudfront + s3提供怎麼辦?如何在 與後端同步部署新資源到s3?

同時部署它們取決於您。這是您需要以某種方式自動化的部署過程的一部分。您可以使用版本和部署順序來幫助這裏的一些人。例如,如果你的整個前端部署在S3:

  1. 部署您的API的新版本,下一個新的API版本號
  2. 部署新的靜態UI資源
  3. 問題一個CloudFront的緩存失效
  4. 用戶開始看到的是引用新的後端API版本

如果您前端的UI是EC2服務器動態資源和S3靜態資源的混合新的前端資源和EC2 UI componen ts和API作爲同一部署的一部分進行更新,那麼您可以在S3上使用版本前綴作爲靜態資源,以允許同時使用多個版本。例如:

  1. 將新的靜態UI資源部署到S3,並帶有新版本前綴。這確保了S3資源的先前版本和新版本同時可用。
  2. 部署EC2應用程序,它會同時更新EC2 UI組件和API
  3. 用戶開始加載從EC2應用程序,這下一個新版本的前綴引用靜態資源的新版本,其CloudFront的那麼高速緩存和服務

顯然這些只是一些情況,你的情況可能在某種程度上有所不同。一般來說,您需要使用任何資源的版本控制(靜態S3資源,API資源等)和智能部署命令,以確保最終用戶不會看到服務中斷。

相關問題