29 | 微服务如何实现DevOps?
胡忠想
该思维导图由 AI 生成,仅供参考
把一个大的单体应用拆分成多个微服务之后,每个服务都可以独立进行开发、测试和运维。但当拆分的微服务足够多时,却又仿佛陷入一个新的泥沼,无论是业务代码的开发还是测试和运维,工作量都比之前提升了很多。
采单体应用架构时,一个业务需求只需要修改单体应用的代码,然后针对这个单体应用进行测试,测试通过后再把单体应用的代码发布到线上即可。而拆分为微服务之后,一个大的系统被拆分为多个小的系统,一个业务需求可能要同时修改多个微服务的代码,这样的话多个微服务都需要进行测试,测试通过了都需要把代码发布到线上,显然工作量成倍增加。这时候就迫切需要一种新的开发、测试和运维模式来解决这个问题,这就是今天我要给你讲的微服务与 DevOps。
什么是 DevOps?
在介绍 DevOps 之前,我先来带你回顾一下传统的业务上线流程:开发人员开发完业务代码后,把自测通过的代码打包交给测试人员,然后测试人员把代码部署在测试环境中进行测试,如果测试不通过,就反馈 bug 给开发人员进行修复;如果通过,开发就把测试通过的代码交给运维人员打包,然后运维人员再发布到线上环境中去。可见在传统的开发模式下,开发人员、测试人员和运维人员的职责划分十分明确,他们往往分属于不同的职能部门,一次业务上线流程需要三者之间进行多次沟通,整个周期基本上是以天为单位。你肯定会想假如能够把开发、测试和发布流程串联起来,就像生产流水线上那样,每个步骤完成后,就自动执行下一个步骤,无须过多的人为干预,业务的迭代效率不就能提升很多吗。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
微服务架构的实施增加了开发、测试和运维工作量,为解决这一问题,DevOps应运而生。DevOps通过持续集成(CI)和持续部署(CD)实现代码开发自测通过、自动部署到测试环境、验证通过后再自动部署到生产环境,最终实现自动发布到线上。本文以微博的DevOps实践为例,详细介绍了持续集成、持续交付和持续部署的具体流程,以及在GitLab中如何通过“.gitlab-ci.yml”文件定义自动化流程。通过这些实践,微服务架构下的DevOps得以实现,极大地提升了业务的迭代效率。文章还探讨了持续集成阶段的关键问题,持续交付阶段的节点摘除和服务观察,以及持续部署阶段的服务发布策略。总结指出,DevOps通过自动化流程减轻了微服务拆分后的测试和运维复杂度,提高了业务研发效率。同时,强调了DevOps作为一种新型的业务研发流程,摒弃了传统的开发、测试和运维严格区分的观念,将三者的角色融为一体,实现了服务的开发者负责从开发、测试到发布的整个生命周期。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》,新⼈⾸单¥59
《从 0 开始学微服务》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(14)
- 最新
- 精选
- 拉欧单元测试是对每一个接口,每一个方法进行边界验证,集成测试是对整个调用流程进行测试,一般来说单元测试全通过集成测试也可能会暴露一些问题,但是单元测试不通过集成测试一定gg
作者回复: 是的,单测阶段能发现的问题最好不要遗留给集成测试
2018-10-2818 - shawnJekins 应该是 Jenkins。 顺便问一下,拆分成微服务之后,服务之间的兼容性是怎么处理的呢?
作者回复: 多谢指正,这里兼容性指的是啥?
2018-10-284 - AmosWooo我的理解是UT是从函数粒度来保证业务逻辑的正确性合理性,可以帮助发现业务逻辑缺陷; IT则是从接口粒度来保证整个系统在子服务的协同下可以达到预期输出。IT作为软件系统交付的前一环节,主要是进一步验证系统核心业务逻辑的可用性,稳定性。
作者回复: 是的
2018-10-274 - Sam_Deep_Thinking写的太好了,收货颇多。
作者回复: 哈哈,有收获就好
2018-10-282 - 有铭集成测试时跑测试用例你们是自动化的吗,用的什么工具实现自动化的测试用例?
作者回复: 我们是自己研发的集成已有的自动化测试用例
2018-10-271 - infancy1开发自测,打提测分支 2测试做冒烟测试,功能测试 3涉及多个系统的大功能做跨产品联调 4改动大的话做回归测试 5自动化测试脚本还没用到2020-03-272
- 钱单元测试:确认方法级别的逻辑正确性 集成测试:确认接口级别的逻辑正确性 目前我们的测试不是这么玩的基本需要人员来触发,不是自动化的,感觉也不容易自动化。 我们的环境也都是隔离的分成开发、测试、预发布、线上等。 测试起来流程也比较多: 1:研发开发及自测 2:测试测试 3:视情况而定,可能需要预发布联调测试 4:合主干回归测试 5:视情况而定,可能需要业务线上验证测试 6:以上比较顺利,则可以线上跑起来啦2019-06-162
- 俯瞰风景.DevOps 通过将开发、测试和运维流程自动化,以减轻微服务拆分后带来的测试和运维复杂度的提升,同时还提高了业务研发的效率。 为了实现开发、测试、运维的一体化,需要在流程中实现自动化测试和自动化运维。单元测试依赖于更高的单元测试覆盖率,集成测试依赖于更高的测试用例覆盖率。 自动化运维可以采用Jenkins和GitLab进行自动部署。2021-10-081
- 小呀嘛小二郎微服务的模块太多,如何本地实现多服务测试,是再搭建一个开发环境嘛,那注册上去的节点我们可以通过dubbo配置嘛,是我本地注册上去的节点2018-12-191
- Tony举个例子,B调用A,如果A服务,有多个分支f1,f2,f3个分支在测试,调用方B也有多个b1,b2分支。b1分支对应的是f2,b2对应f1分支,这种测试环境怎么测呢?微博这么大,一个微服务应该开发的人很多吧,不同人有不同分支,同时在测试环境怎么测试呢?2021-02-05
收起评论