本文总结在Google内部分享。
为了开发易扩展、高可用、高安全的应用应该遵守哪些最佳实践呢?
主要从四个方面考虑:
1 代码和环境管理
2 设计和实现
3 扩展性和可靠性
4 易迁移
实践点:
- 利用版本管理系统(Git或者Subversion)来管理代码
- 不要在代码中保存第三方包或者插件,建议使用依赖插件管理工具来进行配置依赖组件
- 应用配置文件和代码相分离,不要在源代码中把一些配置信息保存为常量。建议把配置信息设置到环境变量中,这样方便控制在测试环境、开发环境以及生产环境变量。
- 采用微服务架构,做到服务解耦。 每个微服务支持单独更新、部署、扩展;
- 采用异步操作。保持UI是可以响应的,与后端保持异步通信;用事件驱动处理方式;
- 利用消息系统实现服务间的松耦合。在API中只获取需要使用的数据;
- 实现无状态的组件来方便可扩展,每一个服务执行都不要共享状态,每个服务执行都可以单独扩展和缩减。
- 缓存频繁访问数据。比如可以用Redis和Memcached缓存应用数据,用CDN缓存网页数据。
- 实现API网关来使后端更好服务应用。比如: Google Cloud Endpoint,
- 可以使联合身份进行鉴权管理。比如: Google、Facebook、Firbase Authentication等等
- 实现健康检查监控方便了解应用的状态,比如实现/health接口。
- 配置日志来监控应用的性能;
- 优雅地处理短暂异常和长期错误。短暂的异常可以进行重启,有效应该网络闪断问题。
- 考虑数据安全和合规要求
- 进行高可用测试以及制定灾难恢复计划;
- 构建持续集成和交付数据管道
- 采用“Strangler”模式来重构应用程序(就是不断开发新服务替换旧应用)