1. 适合的才是最佳的
2. 唯一不变的是不停改变
3. 永无止境
微服务:
将单体服务根据业务边界进行分离,单个微服务能够以独立的、对外透明的方式提供服务。能够独立的持续集成和交付。
- 通过REST API/SDK方式暴露服务,会兼容2-3个版本。REST优势是简单、交付快。SDK优势是可以在调用端做出优化和限制。
- 服务发现与注册。eureka、consul
- 服务隔离与降级。hystrix
- 数据一致性。分布式事务、业务补偿机制。秒杀场景……
- 持续集成与部署。Jenkins
- 多环境模拟与测试。测试环境和预发布环境。测试环境测试功能模块,预发布环境模拟PD场景。
- 代码分支。特性分支、开发分支、预发布分支、发布分支。正常代码交付、hotfix交付。版本管理。
- 代码重构。随着业务变化,之前完美的代码也不能适应新的业务。
- 技术文档和接口文档。踩坑指南、技术方案、配置指南。swagger--接口即文档
- 单元测试、集成测试、自动化测试。easymock、Junit、SpringbootTest
- 上线。AWS、shell。蓝绿、灰度。回退。
- 无状态。token贯穿
- 安全。基础设施层安全和应用层安全。
微服务之路:
- 从刚开始的单体服务,逐步拆分成微服务,quote服务拆分、Library、search、pricing、order(ing)
- 从单库向独立数据库迁移
- 从AngularJs到Vue
- 从jar、war混合到单纯jar包
- 从单人上线到人人上线
目前的DevOps之路:
- 开发人员全栈
- SPA 保证接口纯粹 Vue Angularjs
- 部署脚本一致,团队成员都能做上线,新启服务可以使用先用脚本稍作修改即可加入自动部署体系
- On Call。
- 代码review。代码质量、团队成长