桔妹导读:”精益生产“起源于丰田生产方式,它致力于在大量生产中实现多品种和高质量产品的低成本生产,随着在制造业取得巨大成功,精益思想也逐步渗透到了各行各业,其中在软件行业就演化出了很多新的理论,比如精益研发、DevOps等。精益生产坚信前置时间(Lead time)是提升产品质量、客户满意度和员工幸福感的最佳度量指标,而业务研发正好是处在前置时间中,并且占有重要的地位,所以本文将从从业务研发侧来聊聊精益实践。

1.

思考


说到精益就不得不提DevOps,它融合了精益和其他各种理论,从思想、方法论到实践无所不谈,我们不可能面面俱到,只能从自身的实际情况出发持续不断的优化,这也正是精益思想里表达的”为下游优化我们的工作“。在实际情况中,很多好的基础服务得不到推广,同时业务团队也不清楚怎么利用好基础服务,导致很多重复性工作和资源浪费。

我们通过分析DevOps各个环节,从实际需求入手,通过规范、引导、封装和创造基础服务来友好的支持业务需求,同时根据业务需求推动和优化基础服务的不足,达到一个良性循环,如果把业务团队和基础服务团队比作两个大的齿轮,为了让他们朝着一个方向转动,就需要一个介轮,而我们做的就是介轮的工作。下面我会从编码、测试、监控和生态四个方面来进行详细介绍。


2.

实践介绍


▍编码

定规范

在我们的实践中,第一条做的就是定规范,为什么把定规范放到这么重要的位置,这就像交通规则一样,没有规范,交通很容易瘫痪,更别说在上面行驶更快的汽车了。包管理就是我们实践的一个规范,我们遵循 SemVer 规范,从刚开始混乱的代码里抽离出一个个的库,并且按照 MAJOR.MINOR.PATCH 版本号规则来进行升级,同时业务在进行升级的时候自动更新到最新的兼容包,这样就可以实现 bugfix 和新功能等兼容升级能快速上线,而非兼容升级可以慢慢灰度。

得益于包管理的基础,我们开始抽象一些通用组件,慢慢形成了接下来要说的"搭架子",也就是框架。

搭架子

通过整合所有基础服务的 SDK 和基础功能组件,就逐渐演化成了一个公司级的定制框架,我们叫她 NUWA (女娲)框架。她减少了很多重复性的工作,比如技术改造、功能复用、优化化升级等等,对业务来说都是透明的。在框架中最核心的部件就属 RPC 了,因为它是微服务治理最重要的抓手,但由于历史遗留问题,线上存在多套通信方式:HTTP、Thrift、GRPC 等等,同时也存在多语言的问题(目前主要是 Golang 和 PHP ),尤其 php - fpm + Nginx 方式,在 RPC Server 方面,几乎没有什么开源解决方案,通过各方面考虑,同时借鉴 grpc-gateway 方案,我们实现了如下解决方案:

方案同时支持了 GRPC 和 HTTP 两种通信方式,但放弃了 Thrift,这主要从三个方面考虑:对现有基础服务的兼容性(比如网关支持的协议有限)、更灵活的透传机制( Thrift 没有Header 头,无法透传一些非业务参数,比如 Traceid,当然我知道有改造办法,但成本比较大)、对未来技术的兼容性(开源的 Service mesh 把 HTTP 和 GRPC 作为一等公民)。

▍测试

由于我们处在业务层,相当于后端服务的最上层,所以在测试上面临的问题会更严重一些,因为依赖方会更多,不管是从 mock 和搭建环境上成本都是最大的,所以针对重构类的测试,我们开发了流量录制&回放,免去了 mock 和构建环境的成本,同时实现了更精准的测试。

我们知道在测试环境中,线上仿真环境一直是一个高成本环境,除了机器资源,调用闭环(环境之间调用隔离)也是一个难题,如何实现复用一套稳定环境(pre)的情况下构建出每人一套的环境,并能实现调用闭环,我们在原来仿真环境的基础上新增了一个 sim sidecar,它把全链路追踪中的 Traceid 当成了数据通道,通过解析 Traceid 实现路由分发,最终实现以上目标。

▍监控

项目上线以后,标准监控并不能满足我们更细粒度的监控和分析,比如GC时间、耗时分析、火焰图等等,为让我们在发现和定位问题上更快一步,也更准确,我们依托公司监控平台定制了自己的监控指标和采集工具,依靠这些工具不止可以排查问题,还可以给线上服务做更详细的“体检”,提前规避风险。

▍生态

以上从三个方面介绍了一下我们的精益实践,这只是其中一部分,围绕DevOps我们打造了一套研发生态——NUWA生态,我们把局部的经验推广到全局优化,很多实践经验在全公司遍地开花。

3.

感悟与收获


在整个精益实践过程中,让我明白任何技术和思想都有可能过时或者淘汰,但唯独学习型的组织不会淘汰,因为它永远能找到更好的办法,并勇于尝试,但如何打造这样的组织,这个话题比较大,不如从我做起,把时间用在更创新的探索和优化上,而把那些无聊的工作交给机器去做。

本文作者

‍魏静武

滴滴 | 专家工程师

曾先后就职于百度和美团,专注于效率研发和性能优化,善于创新,坚信任何问题都有解决方案。2016年至今就职于滴滴业务技术团队,主要负责研发效率和性能优化,曾多次推动公司级技术方案落地。

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

长按订阅更多精彩▼如有收获,点个在看,诚挚感谢

滴滴业务研发的精益实践相关推荐

  1. 滴滴业务中台架构之道:来自技术总监的思考

    按:滴滴出行在创业初期,为了快速拥抱业务,架构的建设在体系化.完善度等方面会有所不足.随着时间的推移,架构在可持续性.稳定性等方面不断进步.这就是一种迭代思想,长期来看,没有系统是设计出来的.靠迭代演 ...

  2. 业务驱动的精益敏捷实施实践

    我们为什么要提升研发效能 随着5G.人工智能.IOT等新技术的迅猛发展,企业的业务都将构架在软件和互联网之上.软件交付能力成为企业的核心竞争力,随着市场竞争的加剧,企业对研发效能的期望越来越高. 然而 ...

  3. 滴滴业务中台架构之术:来自技术专家的实践

    按:业务中台是什么?阿里打个嘴炮,每家公司理解的都不一样.从业务技术的角度来看,意味着什么?没有答案,答案在每个实践者的心里.本文来自滴滴何修峰的分享,算是术方面的知识.还有一篇在道方面的,可以配合着 ...

  4. 云原生时代的“精益实践”:企业效能提升10倍“杀手锏

    简介:1月15日,国内知名"精益产品开发"研究和实践者.阿里云云效资深技术专家何勉在阿里云<云计算情报局>线上直播栏目中,分享其对研发新模式的最新思考,提出" ...

  5. 阿里云云效何勉:云原生是“精益实践”的最佳助力

    简介: 1月15日,国内知名"精益产品开发"研究和实践者.阿里云云效资深技术专家何勉在阿里云<云计算情报局>线上直播栏目中,分享其对研发新模式的最新思考,提出" ...

  6. 中台干货!百度/小米/滴滴/京东,中台架构实践大比拼!

    点击"技术领导力"关注∆  每天早上8:30推送 作者| Mr.K    编辑| Emma 来源| 引力山丘 小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台 ...

  7. 10000+ 代码库、3000+ 研发人员大型保险集团的研发效能提升实践

    本文共计7354字,建议阅读时间:14~15分钟. ‍ 阅读本文你将获得: 1.金融行业研发效能提升的整体情况 2.金融行业研发效能提升的痛点: 3.研发效能提升实践过程经历: 4.研发效能提升系统方 ...

  8. 【新书上架】 | 《全栈应用开发:精益实践》——历时两年二十万余字

    两年前,从 RePractise 的一篇文章里,我开始了 Growth 应用及电子书的编写.Growth 整个系列的内容在 GitHub 上已经有近万个 star.今天我们带来了 Growth 的纸质 ...

  9. 中小型研发团队架构实践:高效率、低风险,一键发布并测试的持续集成工具Jenkins...

    一.Jenkins 简介 \\ 当每月发布次数变得越来越多时,如超过 200 次,发布工作人员的工作量会翻倍,此时由人工发布操作失误引起的风险会变得越来越大.为了提高项目的发布效率,也为了降低由人工操 ...

最新文章

  1. 中断原理在计算机中的应用,计算机组成原理期末考试简答题重点
  2. TensorFlow被曝存在严重bug,搭配Keras可能丢失权重,用户反映一个月仍未修复
  3. 线程池的一些疑问和解答
  4. LA3177长城守卫
  5. PresentViewController详解
  6. OpenCASCADE绘制测试线束:拓扑命令之曲线和曲面拓扑
  7. linux getdents 例子,Linux内建命令和外部命令(整理)
  8. hbase获取表信息_HBase的读写和javaAPI的使用
  9. Java Integer类toString()方法与示例
  10. Java程序设计教程(第三版) 雍俊海 9.6 答案/代码
  11. 三极管NPN和PNP的区别
  12. 群晖之邮件服务器搭建
  13. Does love become hate or forgiveness after a double deviation?文章阅读
  14. objective-c类别catagory的作用?
  15. 类的加载过程详解:加载、验证、准备、解析、初始化
  16. 自己做量化交易软件(9通通量化框架的雏形建立
  17. 系统可打开最大文件数过小,导致CHECK_NRPE: Error - Could not complete SSL handshake
  18. sklearn之逻辑回归LR
  19. 十六. 项目干系人管理
  20. 64位操作系统支持的最大内存

热门文章

  1. python里感叹号什么意思_仪表盘上的感叹号是什么意思
  2. 字符串的html语言,html语言解析为属性字符串NSMutableAttributedString
  3. 树和二叉树(四种遍历,建树)详解+二叉排序树(包含图像和相关习题)
  4. java 取字段_java – 获取字段的名称
  5. 拆分命令_在MongoDB分片集群中拆分数据块chunks
  6. android自定义tab下划线变大,Android开发之设置TabLayout下方下划线的宽度
  7. [jdk8]Predicate 函数式接口
  8. 解决在Tomcat上手动部署WAR服务器不能自动解压的方法
  9. 如何通过 Vue+Webpack 来做通用的前端组件化架构设计
  10. jzoj6001. 【PKUWC2019模拟2019.1.15】Mines (tarjan)