书城|【案例】全国知名网上书城——基于企业中台构建智慧悦读体验( 四 )


其中由平台默认封装的 buildpack action 提供了通用打包能力 , 开发者几乎不需要配置任何参数 , 就能自动识别程序语言、版本和框架 , 执行正确的编译打包过程 。 平台也默认提供了代码扫描、单元测试等准入相关的 action , 也同样开发者几乎不用做任何配置就能使用 。
这样开发完成的功能一旦被确认通过 , 就能源源不断的部署到测试环境 , 等待测试 。 测试人员这时会怎么做?一般情况会等到项目提测 , 才会全力进行测试 。 当我们前期的流程越来越顺畅 , 就发现人工测试效率的瓶颈会阻塞最后交付的效率 。
7、持续交付
这时就需要通过自动化测试来解决这个困境 , 其中最主要的是自动化接口测试 。
我们设计了场景集-场景-接口 三级概念 。 场景是具体的一个业务场景 , 比如支付场景 , 需要登录、访问商品、下单、支付等一系列的接口调用 , 并且这些接口的出参入参环环相扣 , 最后通过断言执行判断场景是否执行通过 。 而场景集 , 聚集了同一个业务领域下的所有场景 , 包括正向的 , 逆向的 , 比如有判断支付失败的场景 , 可以故意构造问题的参数 , 最后断言支付失败 。 场景集内允许场景之间的串联 , 比如可能统一个领域的场景都要公用登录场景 , 而领域和领域之间做到了相互隔离 。
另外我们还实践了 API-First 理念 , 并且通过一系列功能支撑开发者先进行接口设计 , 再做功能开发或者功能调整 。 基于这个实践 , 自动化接口用例中就可以直接与接口设计结构化关联 , 所有接口的设计都能自动同步到自动化接口用例、并通知到测试人员 。
8、项目协同
敏捷和 DevOps 渊源不断 。 站在项目的角度 , 我们实现了一套偏向敏捷的事项协同工具 , 其中有需求、任务、缺陷 , 也有迭代、里程碑、看板等 。 我们甚至实现了工作流程调整以及事项字段包括状态的自定义 。
基于工具之上 , 敏捷更多的是一套项目研发协同的机制和一种团队文化建设 。 我们推崇异步协同的机制 , 推崇技术框架和管理策略的平衡 。
9、微服务观测治理
基于 DevOps、微服务、容器化等云原生的能力 , 可以快速、持续、可靠和规模化地交付业务系统 , 同时也使得系统的复杂度成倍提升 , 由此带来了前所未有的运维挑战 , 比如:
? 模块之间的调用从进程内的函数调用变为进程间的调用 , 而网络总是不可靠的 。
? 服务的调用路径变长 , 使得流量的走向变得不可控 , 故障排查的难度增大 。
? 引入 Kubernetes、Docker、Service Mesh 等云原生系统 , 基础设施层对业务开发团队来说变得更加黑盒 。
在传统的监控系统中 , 我们往往会关注虚拟机的 CPU、内存、网络、应用服务的接口请求量、资源使用率等指标 , 但在复杂的云原生系统中 , 仅仅关注单点或者单个维度的指标 , 并不足以帮助我们掌握系统的整体运行状况 。 在此背景下 , 对分布式系统的“可观测性”应运而生 。

推荐阅读