持续交付的软件系统架构
为了提升交付速度,获得持续交付能力,系统架构在设计时应该考虑如下因素:
为测试而设计:如果我们每次写好代码以后,需要花费很大的精力,做很多的准备工作才能对它进行测试的话,那么从写好代码到完成质量验证就需要很长周期,当然无法快速发布。
为部署而设计:如果我们开发完新功能,当部署发布时,需要花费很长时间准备,甚至需要停机才能部署,当然就无法快速发布。
为监控而设计:如果我们的功能上线以后,无法对其进行监控,出了问题只能通过用户反馈才发现。那么,持续交付的收益就会大幅降低了。
为扩展而设计:这里的扩展性指两个方面,一是支持团队成员规模的扩展,二是支持系统自身的扩展。
为失效而设计:俗语说:“常在河边走,哪能不湿鞋。”快速地部署发布总会遇到问题。因此,在开发软件功能之前,就应该考虑的一个问题是:一旦部署或发布失败,如何优雅且快速地处理。
系统拆分原则
大系统应该由很多组件(component)或服务(service)组成。组件通常在编译构建或者部署时被集成在一起,而服务可以由多个组件构成,能够独立启动运行,并在运行时与整个系统进行通信,成为整个系统的一个组成部分。
在系统拆分的同时,我们必须同时建立相应的构建、测试与部署和监测机制,而且,这些机制的建立与系统拆分工作同等重要。只有这样,才能既获得系统拆分的益处,又能管理因拆分带来的复杂性。
常见架构模式
微核架构,适合于客户端软件;
微服务架构,适合于大型后台服务端系统;
巨石应用,适合于创业公司或中小型项目;
架构改造实施模式
拆迁者模式,就是一次性重写所有代码;
绞杀者模式,就是不改变或少改变原有遗留系统,通过增加新的服务来不断替代遗留系统的功能;
修缮者模式,就是通过迭代,对原有遗留系统进行逐步改造,同时开发新的功能;
为了能够持续交付,并且降低架构改造的风险,建议团队根据实际情况,采用 绞杀者模式 或 修缮者模式 进行遗留系统的架构改造。
数据库的拆分方法
详细了解数据库结构,包括外键约束、共享的可变数据以及事务性边界等;
先拆分数据库;
数据库双写无误后,找到程序架构中的缝隙;
将拆分出来的程序模块和数据库组合在一起,形成微服务;
了解更多:https://t.zsxq.com/06R7mqJAq
推荐阅读
持续交付 2.0
价值探索环
快速验证环
组织文化
加入读者圈子
持续交付的软件系统架构相关推荐
- 研发协同平台持续交付2.0架构演进
源宝导读:为了打通CI/CD环节,实现持续的端到端的交付能力,RDC平台提供了在线化的更新服务,随着业务量增长与场景的需要,我们对更新服务架构重新设计,实现了2.0版本.本文将介绍更新服务2.0的架构 ...
- 一天我们能做什么? ——中小金融企业持续交付之路
导读:平时工作中,研发.测试.运维同学在持续交付和DevOps上会碰到一些难题:比如持续交付搭一个系统很简单,但是想要管理代码之外的一些资源有点难:公司里的系统多.模块多,开发人员只是做了一小部分,但 ...
- Android架构篇-5 CI/CD(持续集成、持续交付、持续部署)
Android架构篇-5 CI/CD(持续集成.持续交付.持续部署) CI CI是指持续集成,代码的更新会定期自动构建.测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持 ...
- iOS架构篇-5 CI/CD(持续集成、持续交付、持续部署)
iOS架构篇-5 CI/CD(持续集成.持续交付.持续部署) CI CI是指持续集成,代码的更新会定期自动构建.测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持续部署, ...
- 云效平台:企业级互联网架构下的持续集成与持续交付实践
摘要:本文的整理自2017云栖大会-南京峰会上阿里云高级技术专家鲁小川的分享讲义,讲义主要分享了阿里云云效平台对于企业级互联网架构下的持续集成与持续交付的实践经验,首先介绍了阿里云云效平台的起源,之后 ...
- 微服务架构实战项目Serverless的持续交付与架构案例
Serverless的持续交付 架构图如下: 在这个架构中,我们采用了前后端分离的技术.我们把 HTML,JS, CSS 等静态内容部署在 S3 上,并通过 CloudFront 作为 CDN 构成了 ...
- 云原生架构下的持续交付实践
导读:随着虚拟化技术的成熟和分布式框架的普及,在容器技术.可持续交付.编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势. 云原生带来了标准化.松耦合.易观测.易扩 ...
- Serverless 风格微服务的持续交付(上):架构案例
GitChat 作者:顾宇 原文:Serverless 风格微服务的持续交付(上):架构案例 关注微信公众号:GitChat 技术杂谈 ,一本正经的讲技术 [不要错过文末彩蛋] 无服务器架构 (Ser ...
- 【Java架构:持续交付】一篇文章搞掂:持续交付理论
一.持续集成.持续交付.DevOps概念,关系等 持续集成(Continuous integration/CI) 持续交付(Continuous delivery/CD) 持续部署() 持续 (Con ...
最新文章
- 序列比对-BLAST
- Mavan的配置,以及与IDEA版本不一致,解决办法
- 台湾大学林轩田机器学习基石课程学习笔记8 -- Noise and Error
- 今日arXiv精选:Transformer专题论文推荐
- 英雄会在线编程题目(请大家不吝赐教)
- GitHub 公布了托管平台与美国贸易管制的相关细节
- linux c语言 utf8读写,关于在C程序中处理UTF-8文本的方法详解
- 收藏!本、硕、博、程序员必备神器
- 单片机脉冲喷吹仪c语言,C51单片机脉冲累加器(C语言程序)
- PHP找出专题下重复的商品数据
- android外设按键,Android 外接键盘的按键处理 .
- Codeforces Round #521 (Div. 3) B. Disturbed People 思维
- R语言数据对象与运算
- 热点综述 | 纵向微生物组研究的统计方法总结
- 在架构师眼里,一份美团外卖是如何做出来的?
- 湖南北云科技有限公司2023届校园招聘简章
- 计科学硕考研初试经验贴(11408)
- Codeforces 780G Andryusha and Nervous Barriers
- 解决macbook pro中使用word打字出现拼音问题
- 《网站建设规划书范文》
热门文章
- QQmail安装例子
- edge/chrome更新113版本后页面崩溃 STATUS_STACK_BUFFER_OVERRUN解决方案
- 批处理删除重复的文件
- 23.5 MySQL架构
- MybatisPlusException: can not find lambda cache for this entity[]异常解决
- hdu4121 象棋checkmate模拟
- 华南理工大学电气考研经验贴
- Siege——多线程编程最佳实例
- plc实验报告流程图_plc实训总结范文
- 在微型计算机中任何外部设备,微型计算机与外部设备之间的信息传输方式有( )。...