持续交付的软件系统架构

为了提升交付速度,获得持续交付能力,系统架构在设计时应该考虑如下因素:

  1. 为测试而设计:如果我们每次写好代码以后,需要花费很大的精力,做很多的准备工作才能对它进行测试的话,那么从写好代码到完成质量验证就需要很长周期,当然无法快速发布。

  2. 为部署而设计:如果我们开发完新功能,当部署发布时,需要花费很长时间准备,甚至需要停机才能部署,当然就无法快速发布。

  3. 为监控而设计:如果我们的功能上线以后,无法对其进行监控,出了问题只能通过用户反馈才发现。那么,持续交付的收益就会大幅降低了。

  4. 为扩展而设计:这里的扩展性指两个方面,一是支持团队成员规模的扩展,二是支持系统自身的扩展。

  5. 为失效而设计:俗语说:“常在河边走,哪能不湿鞋。”快速地部署发布总会遇到问题。因此,在开发软件功能之前,就应该考虑的一个问题是:一旦部署或发布失败,如何优雅且快速地处理。

系统拆分原则

大系统应该由很多组件(component)或服务(service)组成。组件通常在编译构建或者部署时被集成在一起,而服务可以由多个组件构成,能够独立启动运行,并在运行时与整个系统进行通信,成为整个系统的一个组成部分。

在系统拆分的同时,我们必须同时建立相应的构建测试部署监测机制,而且,这些机制的建立与系统拆分工作同等重要。只有这样,才能既获得系统拆分的益处,又能管理因拆分带来的复杂性。

常见架构模式

  • 微核架构,适合于客户端软件;

  • 微服务架构,适合于大型后台服务端系统;

  • 巨石应用,适合于创业公司或中小型项目;

架构改造实施模式

  • 拆迁者模式,就是一次性重写所有代码;

  • 绞杀者模式,就是不改变或少改变原有遗留系统,通过增加新的服务来不断替代遗留系统的功能;

  • 修缮者模式,就是通过迭代,对原有遗留系统进行逐步改造,同时开发新的功能;

为了能够持续交付,并且降低架构改造的风险,建议团队根据实际情况,采用 绞杀者模式修缮者模式 进行遗留系统的架构改造。

数据库的拆分方法

  • 详细了解数据库结构,包括外键约束、共享的可变数据以及事务性边界等;

  • 先拆分数据库;

  • 数据库双写无误后,找到程序架构中的缝隙;

  • 将拆分出来的程序模块和数据库组合在一起,形成微服务;

了解更多:https://t.zsxq.com/06R7mqJAq

推荐阅读

  1. 持续交付 2.0

  2. 价值探索环

  3. 快速验证环

  4. 组织文化

加入读者圈子

11140a23f24bd6d30af4988f7303efeb.jpeg

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值