点击上方“方志朋”,选择“设为星标”

做积极的人,而不是积极废人

作者丨Albert Kozłowski

译者丨核子可乐

策划丨赵钰莹

微服务,并不仅仅是一种代码构造方式。

微服务概念一出现就引发了热烈讨论,很多文章都喜欢将其与整体式架构比较,乃至来自大型企业的用例等。然而,在说起微服务时,开发人员关注的往往是这场革命的技术意义,而非其象征的文化颠覆。虽然技术元素也很重要,但其中蕴含的文化变革更加值得重视。

我很幸运能够在 2014 年左右快速融入这场潮流,我也清楚地记得当时能够将陈旧的整体式应用迁移至新的、酷炫无比的微服务架构是多么令人兴奋。和很多朋友一样,我刚开始也只关注技术方面的影响——毕竟,当时正是革命性技术快速涌现的时期(例如,Docker 那时刚刚出现)。

然而,经过几年发展,尽管在技术层面发生了诸多变化,但我认为微服务对组织中软件开发方式产生的最大影响主要体现在代码归属权以及团队的职能定位上。

功能团队

虽然我们也可以在整体式架构下建立具有跨职能特性的团队,但组织通常会根据具体技术功能(例如前端、后端、系统管理员以及数据库开发等)进行团队拆分。因此,开发人员很少能够接触到生产环境,因此几乎不需要考虑生产与维护方面的问题。James Lewis 与 Martin Fowler 在最初定义微服务架构概念的文章中就强调过这一点。

微服务支持者倾向于消除这种固有模式,而更多将团队视为产品在整个生命周期当中的归属方。在这方面,比较典型的例子就是亚马逊提出的“谁构建、谁运行”原则,要求开发团队对生产环境中的软件负全部责任。

除此之外,将具有其他专业知识的人员引入团队(例如产品 / 营销),也使团队获得远超技术范畴的其他能力。团队将能够监控客户反馈、用户采用与商业价值,使团队对功能以及其中的各个层面负起完全责任。通过这样的新模式,团队将能够明确观察到他们的决策对于产品以及业务本身造成的影响。

代码所有权

在刚开始编程时,我曾投入数年时间研究游戏、桌面 /Web 应用程序以及网站等小型项目,把头脑中的想法转化为代码,给人一种莫名的愉悦感。然而,在开始从事软件开发职业之后,我发现真正的工作更像是流水线上的装配操作,而非艺术创作。

除了责任模糊外,在选择技术时,代码库与数据存储的集中特性同样有很多局限。关于框架、语言、设计模式以及数据库引擎选择方面的决策必须符合全局要求。简而言之,如果无法对所有要素进行整体把控,就很难获得理想的创造能力。

微服务架构还带来了小代码库概念。将原本的单一大存储库分散为几十个较小的存储库,能够确保特定存储库拥有明确的归属划分。很明显,代码所有权并不一定意味着必须由单个团队或者个人负责代码的整体维护。其他团队也可以根据需要提交 pull 请求(内部源)。但是,代码的所有者应当负责保障解决方案质量,并确保所有 pull 请求都符合代码标准以及 API 合约的要求。

总   结

就我个人看来,拥有明确归属权的小型团队能够在日常开发工作中享受更多乐趣,并为开发人员提供足以激发创造力的自由空间。此外,使用小代码库会给人再次参与小型项目的感受,这能够在大型组织之内建立起初创精神。

请别误会,微服务也不是什么百试百灵的“银弹”。虽然面向微服务的架构有助于建立代码归属权与功能团队,但对场景也有着相当具体的要求。毕竟,这些功能在整体式代码库中也完全能够实现,只是需要辅以更多的组织参与投入。总结来讲,这场文化变革应有怎样的面貌、又是否适合,还得请各位开发人员自行判断。

原文链接:

https://medium.com/better-programming/how-microservices-architecture-impacted-the-culture-of-software-development-6bba363ecdf1

热门内容:   

  

  • System.currentTimeMillis()竟然存在性能问题,这我能信?

  • 团队开发中 Git 最佳实践,不给队友拖后腿!

  • 面试官:为什么MySQL的索引要使用B+树,而不是其它树?比如B树?

  • 面试问你Spring如何解决循环依赖的时候,不要一脸懵逼了!

  • 面试官问我:一个 TCP 连接可以发多少个 HTTP 请求?我竟然回答不上来...

  • 为什么说「中台」程序员未来会最值钱?

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

微服务架构如何影响软件开发文化?相关推荐

  1. 微服务架构设计模式 pdf_中文书籍中对人月神话的引用(四)微服务架构设计模式、软件驱魔……...

    有同学说2014-2020年出版的引用<人月神话>的软件开发书籍里都是英文,难以阅读.特整理中文书籍引用--其实绝大多数还是老外写的.特别说明的是:本文只是陈述这些书引用了<人月神话 ...

  2. 微服务架构Day04-SpringBoot之web开发配置

    SpringBoot之web开发 概述 SpringBoot对静态资源(static-location)的映射规则 模板引擎 thymeleaf thymeleaf基本概念 引入thymeleaf依赖 ...

  3. 深析SpringCloud与Docker微服务架构

    前言 微服务架构师当前软件开发领域的技术热点.它在各种博客,社交媒体和会议演讲上的出镜率非常之高,相信大家也听说过微服务这个名词.然而微服务似乎又是非常虚幻的--我们找不到微服务的完整定义,以至于很多 ...

  4. java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...

    原标题:笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解 Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构.集群架构.分布式架构.SOA架构和微服务架构.下 ...

  5. 普元王文斌:微服务架构开发模式需要全栈团队

    容器技术的发展,让微服务的构建变得容易,例如普元公司正在使用Kubenetes作为一个底层的容器调度平台来支撑上层微服务的部署运行.日前,普元普元基础设施架构师王文斌接受CSDN记者专访,介绍了他对微 ...

  6. 普元微服务架构封闭式开发实战经验

    微服务(Microservice)架构目前受欢迎的程度已无需赘述.CSDN之前的文章解释了微服务是如何演变的,又为什么重要?然而微服务架构的迁移不可能一帆风顺,也会面临很多挑战,CSDN将通过已经投入 ...

  7. 基于.net的微服务架构下的开发测试环境运维实践

    眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...

  8. 深解微服务架构:从过去,到未来

    http://www.uml.org.cn/zjjs/im... 微服务的诞生 微服务架构(MicroserviceArchitect)是一种架构模式,它提倡将单块架构的应用划分成一组小的服务,服务之 ...

  9. 云原生架构下微服务最佳实践-如何拆分微服务架构

    转自: https://mp.weixin.qq.com/s?__biz=MzI3MzEzMDI1OQ==&mid=2651821066&idx=1&sn=8475f813a8 ...

最新文章

  1. Linux下SVN服务器支持Apache的http和svnserve独立服务器
  2. day002-HTML知识点总结:浏览器兼容性之指定IE浏览器使用chrome内核渲染页面
  3. python将数字转变为中文读法-Python转换数字到中文大写格式
  4. jax-rs jax-ws_Tomcat上具有JAX-WS的Web服务
  5. 信息学奥赛一本通C++语言——1028:字符菱形
  6. linux fstab 启动,修改-etc-fstab后Linux不能启动
  7. Lua开发工作笔记0001---什么是热更新为什么要热更
  8. mysql in 按顺序排序_Mysql查询结果顺序按in()中ID的顺序排列的实例分析
  9. JavaScript:如何将消息打印到错误控制台?
  10. origin作图中的图中图(将原图中的某个区域放大)
  11. pyQt5 帮助手册的使用
  12. 什么?Python的多进程居然比单进程慢?
  13. Midjourney8种风格介绍+使用场景(2)
  14. 复旦学子《可解释机器学习》中文版火了,完整PDF开发下载!
  15. 题目:求1+2!+3!+...+20!的和
  16. 视频中的水印怎么去掉,一键教你视频去水印!
  17. 微信公众号之全局计时器的案例
  18. 处理乱码文件,邮件,应用程序。。。。。。
  19. BLE:CC2540学习笔记
  20. 为什么有机硅消泡剂会如此受欢迎,到底有什么特点

热门文章

  1. shiro实战系列(一)之入门实战
  2. iframe元素內嵌页面如何去掉继承的html及body背景色/背景图片
  3. list,set,map,数组间的相互转换
  4. 看过的bootstrap书籍(附下载地址)
  5. 基于visual Studio2013解决面试题之0804复杂链表
  6. Ext UI 第一步
  7. Task04:青少年软件编程(Python)等级考试模拟卷(一级)
  8. 技术图文:如何利用C#实现Huffman编码?
  9. 基于Matlab的多层BP神经网络在非线性函数拟合中的应用
  10. SIFT 特征检测及匹配