如何利用 CDN 进一步的前后端分离
最近在优化一下项目,梳理整个链路之后,开始逐步优化,发现了很多可以改进的点。下面是对开发模式、部署方式的一些思考,希望对你有所启发。
1. 开发背景
1.1 部署方式
如上图,简单描述一下应用的架构。采用的是经典三层架构,接入层,逻辑层,存储层。其中,接入层和存储层,是全部应用共用的服务。逻辑层由 K8S 部署,每个应用会有多个实例。接入层能支持的并发量很大,由一个 LVS 将流量分给 多个 Nginx 实例。逻辑层主要是将代码以 Slug 的形式打包到基础镜像,然后进行多实例部署。为了保证数据一致性,逻辑层不会保存任何状态,状态全部需要通过外部服务的形式管理。存储层提供各种状态服务,比如 MySQL、对象存储等。
1. 2 开发模式

2. 开发问题

- 代码仓库大,GitLab CI 推送 SVN 慢
- PaaS Engine 转发前端静态文件效率低
- 在开发迭代过程中,线上问题不能即时有效修复
- 正式环境不能进行灰度测试,只有一个版本
- 前后端仓库权限混乱,职责不清
- 不同地区、网络访问应用的速度差别大