2016-10-01 112 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资源等)和智能部署命令,以确保最终用户不会看到服务中断。

相关问题