Coolblue 的技术开拓者Paul de Raaij提出,持续部署会得到更强的责任感和更好的部署质量。代码规范预防代码库混乱,自动化检查很合适完成冗长而无聊的检查,人工检查很合适去检查代码的逻辑和用法实际上是否成立。

\\

De Raaij 写了一篇博文《我们软件的持续部署》,在文章中他解释了Coolblue是如何完成持续部署的。

\\

\

仅仅开发软件是不够的。你还需要让它投入使用,并确保部署了高质量的软件且未对其造成破坏。

\

\\

Paul de Raaij 将在敏捷和软件架构专题研讨会2016上讨论Coolblue的持续部署。InfoQ有幸采访了他,请他谈了谈Coolblue的部署、持续部署的优势和缺点、质量保证的技术和实践、代码规范、应用监控,以及Coolblue面临的挑战和他们将如何应对。

\\

InfoQ:什么使Coolblue决定要创造条件让开发人员自己完成部署的?

\\

\

Paul de Raaij:我们希望软件尽快投入使用。这能帮我们快速得到我们开发的功能的反馈意见,并使用这些反馈去了解是否需要改变方向。我们也喜欢让开发团队对他们的产品有完全的所有权。举例来说,比如发布工程师正在转移责任,其关键就在于拥有完全的所有权。如果你破坏了它,就必须由你来修复它。没有人为你擦屁股。它会使大家拥有更高的责任感,使部署有更高的质量。

\

\\

InfoQ:目前部署是如何来做的?

\\

\

De Raaij:很难就此给出一个简单而又全面的答案,简短概括一下:我们使用gitflow 工作流并将GIT作为分布式版本系统工具。当一名开发人员想要把他的新代码提交上线时,会创建一个pull请求。这个pull请求将会得到自动化和人工的审核。全都亮绿灯了?那么就会自动地把它打包并放到部署和验收测试服务器上。人工按一下按钮就会把它部署到生产环境。当然,这里面还有很多的内容,我将在ASAS会议上详细探讨。

\

\\

InfoQ:持续交付的优势是什么?

\\

\

De Raaij:它有很多的优势。对于初学者而言,如果做法正确,你就有能力把自己的软件部署到一台服务器上。通过各种检查工具的自动化检查,它将显示明确的质量水平。如果适当地设立了回归测试,你就能保障原有功能在你部署之后仍可正常工作。

\

\\

InfoQ:有什么缺点吗?

\\

\

De Raaij:在最后他仍然是个人工过程,是由人来配置的。它能轻松确保愉快路径,但有些东西仍有可能出错。所以在你的持续集成过程配置中有许多值得思考的地方。例如,如果你使用的在线服务(比如GitHub)出故障了,那么会对你的流程造成什么影响?

\\

另外还要想想你的开发团队的规模。500个开发人员在同一流程中工作和只有两个人去做更新肯定会让你的持续集成流水线有完全不同的工作方式。所以,提前思考你的解决方案有怎样的可伸缩性。能否轻松地为代码检查增加额外的代理?在一个pull请求接受检查之前等待半个小时是否可行?

\

\\

InfoQ:哪些技术和实践被Coolblue拿来用于质量保证?为什么?

\\

\

De Raaij:我们使用了多种方法,它们也使人工和自动化检查更加多样化了。自动化检查能很好地完成冗长乏味的检查(比如linting)、代码规范的检查、回归测试的执行。人工检查很合适去检查代码的逻辑和用法实际上是否成立,实际编码的内容是否实际解决了全部的使用案例。

\

\\

InfoQ:如何应用编码规范?这么做会带来什么好处?

\\

\

De Raaij:编码规范非常重要,能避免你的代码库变得混乱。如果每位开发人员都按自己的缩进、间距和命名规则的话,很快就会变得一团糟。这将极大影响软件和可交付物的质量,也会令开发人员的工作难以开展,迅速产生挫败感而恼怒不已。

\\

在我们的案例中,代码规范大多数是遵循行业规范来定义的。比如我们的PHP规范就主要遵循了PSR的规范,同时又进行了少量的微调。

\

\\

InfoQ:你们是如何监控应用的?

\\

\

De Raaij:很多工具都在我们的监控中发挥着作用。针对机器的技术监控,我们严重依赖Nagios作为我们的监控应用。这实际关注的是机器的状态以及应用和守护进程是否在运行。在我们的软件生态中监控极其重要,所有应用都有自己的指标,我们将它们用于健康检查、洞察力和分析。这些指标通过一个StatsD像聚合器一样发送到数据日志。除了指标,我们还会利用ELK栈深入分析日志。

\

\\

InfoQ:Coolblue正在面临着什么挑战,你们将如何去应对它们?

\\

\

De Raaij:完全的持续交付对于我们来说可是个大事。我们已经取得了相当的进展,但我们前方还有许多障碍,横在我们走向真正的自动化部署的路上。其中一个大的障碍是如何处理系统中的数据迁移,在我们应用的生态中它可是个大难题。如果我们解决了它,事实上就非常接近真正的持续部署了。

\

\\

敏捷和软件架构专题研讨会2016将于2016年9月28日在荷兰阿纳姆的GelreDome球场召开:

\\

\

ASAS是一个具体解决方案驱动的会议,在这里技术带头人、软件架构师、业务分析师和工程主管能够了解和讨论交付软件解决方案的更好的方式,使其更适合于他们的用户。

\

\\

InfoQ将使用问答、总结和文章全程报导本次大会。

\\

查看英文原文:Continuous Deployment at Coolblue

Coolblue的持续部署相关推荐

  1. Android架构篇-5 CI/CD(持续集成、持续交付、持续部署)

    Android架构篇-5 CI/CD(持续集成.持续交付.持续部署) CI CI是指持续集成,代码的更新会定期自动构建.测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持 ...

  2. iOS架构篇-5 CI/CD(持续集成、持续交付、持续部署)

    iOS架构篇-5 CI/CD(持续集成.持续交付.持续部署) CI CI是指持续集成,代码的更新会定期自动构建.测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持续部署, ...

  3. SpringBoot+Docker+Git+Jenkins实现简易的持续集成和持续部署

    前言 本篇文章引导你使用Jenkins部署[SpringBoot项目],同时使用Docker和Git实现简单的持续集成和持续部署.(项目地址:sso-merryyou) 流程图如下: push代码到G ...

  4. 在Google Cloud Platform上持续部署Node.js

    by Gautam Arora 由Gautam Arora 在Google Cloud Platform上持续部署Node.js (Continuous Deployment for Node.js ...

  5. k8s aws 部署_如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署

    k8s aws 部署 by Adam Watt 通过亚当·瓦特 如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署 (How to setup Continuous Deployme ...

  6. Docker持续部署图文详解

    2019独角兽企业重金招聘Python工程师标准>>> Docker持续部署图文详解 博客分类: docker 架构 JAVA项目如何通过Docker实现持续部署(只需简单四步),即 ...

  7. Spinnaker:云原生多云环境持续部署的未来这样玩!

    Gartner的报告指出,到2020年,将有50%的传统老旧应用会以云原生的方式被改造,到2022年,云原生和容器化的普及率将达到75%. 随着2020 KubeCon线上大会的结束,我们发现企业拥抱 ...

  8. CI Weekly #7 | Instgram/Quora 等大公司如何做持续部署?

    终于,你们期待的 flow.ci iOS 项目持续集成 开始公测了.在这几个工作日, flow.ci 做了些许「功能优化」与「问题修复」,性能和体验都在持续优化中.比如: iOS 快速入门文档更新: ...

  9. DevOps笔记-07:持续集成,持续交付,持续部署之间的区别

    假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付(deliver) -> 部署(deploy) 1.持续集成 持续集成:Cont ...

最新文章

  1. yii2 导入开源php项目_终于来了,yii2和phpstorm的完美整合,支持到你不要不要的。...
  2. 万字干货|逻辑回归最详尽解释
  3. React路由---react-router-dom、获取路由参数、ant design ui组件、fetch发送请求(默认不能跨域)、Switch...
  4. 最大整数(Noip1998连接多位数)
  5. AjaxPro怎么用
  6. acwing2041. 干草堆(差分数组)
  7. 将试用版visual studio 2008升级为正式版 --更新
  8. SharePoint2007 配置MOSS基于AD的Forms验证
  9. Mybatis框架_part1
  10. MYSQL学习笔记三:日期和时间函数
  11. mysql二级缓存redis_redis实现二级缓存
  12. 女生学的计算机专业有前途吗,计算机专业好不好 女生学计算机有前途吗
  13. 使用yuicompressor 压缩js, CSS
  14. BZOJ 3531[Sdoi2014]旅行
  15. ANDROID中使用开源框架CITYPICKERVIEW实现省市区三级联动选择
  16. java 爬虫大型教程(一)
  17. linux查看数据库实例名端口号,查看数据库tns配置
  18. 任正非《以客户为中心》
  19. c++中文件打开失败
  20. 第三方支付——微信web端支付(java)

热门文章

  1. 换个姿势学数学:二次函数与拆弹部队
  2. 【转】python包导入细节
  3. 如何避开项目管理陷阱?
  4. 浅谈Java throw, throws, try catch异常处理
  5. mkfs.ext4 /dev/sdb 与 mkfs.ext4 /dev/sdb1
  6. 如何有效地提升 JavaScript 水平?
  7. ActionScript 3.0 Step By Step系列(五):走在面向对象开发的路上,以类为基础去思考编程问题...
  8. VC知识点:关于没有提示的内存泄露
  9. django之Ajax
  10. 前端面试常考知识点---js