“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

  • 2019-08-23
  • 本文字数:1386 字

    阅读完需:约 5 分钟

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

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



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


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


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

功能团队

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


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


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

代码所有权

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


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


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

总结

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


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


原文链接:


How Microservices Architecture Impacted the Culture of Software Development


2019-08-23 11:3015200

评论

发布
暂无评论
发现更多内容

服务端技术进阶(三)从架构到监控报警,支付系统设计如何步步为营

No Silver Bullet

架构 支付系统 架构设计 5月月更 监控报警

web前端培训Vue3 TypeScript 如何实现useRequest

@零度

Vue 前端开发

在线HTML转ASP工具

入门小站

工具

小程序转App仅需7步

Speedoooo

ide APP开发 小程序转app 前端IDE

CC2530 ADC配置步骤

DS小龙哥

5月月更

智能手表的机遇与挑战

Geek_99967b

物联网

“技术商人”溯源考

IT民工大叔

华为 工程师 任正非讲话 商业意识 复合型人才

没有JDK和Maven,用Docker也能构建Maven工程

程序员欣宸

Java Docker maven 5月月更

拯救工程师,远程开发C++的四大秘笈|视频教程

OneFlow

c++ 教程分享

SAP UI5 框架的 manifest.json

Jerry Wang

前端开发 SAP Fiori SAP UI5 5月月更

浅析数字化转型与产业互联网

IT民工大叔

产业互联网 数字化转型

SREWorks持续交付云原生化: 镜像构建

阿里云大数据AI技术

大数据 运维 云原生

如何获得一场黑客马拉松的胜利?听听AWS特约评委怎么说

FinClip

小程序 黑客马拉松 finclip

在线文本左边批量添加字符串工具

入门小站

工具

王者荣耀商城异地多活架构设计

小虾米

架构师实战营

IOC思想开窍之路

留乘船

Java spring ioc

性能优化手记上篇之【原则】&【方法】

鲸品堂

校企融合,打造金融科技应用人才高地

非凸科技

校企合作 非凸

近一个月B站封禁直播间1874个:直播行业仍然是违规重灾区

石头IT视角

小程序生态构建能力,离不开UI定制自由

Speedoooo

ide 小程序ide

高校学生请注意:想成为技术大牛,参加这个计划就够了!

科技热闻

探密"一学就会,一用就废"的OKR

Bruce Talk

OKR 敏捷 Agile

纪念左晖:敢为天下先(修订版)

IT民工大叔

产业互联网 数字化转型 企业家精神 左晖

在FinClip Hackathon中夺冠是一种什么样的体验?

FinClip

小程序 黑客马拉松 finclip

给微信小程序配一个App如何?

FinClip

finclip 小程序转app

3000帧动画图解MySQL为什么需要binlog、redo log和undo log

CoderW

后端 面试题 Binlog Redo Log MySQL 数据库

企业电子文档管理需要注意的点及解决措施

小炮

文档管理

架构的尽头是架构师

IT民工大叔

架构师

如何在 JavaScript 中让代码更加精简

devpoint

ES6 6月月更

中小互联网公司研发效能团队规模、职能划分和优劣势分析

laofo

DevOps cicd 研发效能 持续交付 互联网公司

eBPF 简介

申屠鹏会

ebpf

微服务架构如何影响软件开发文化?_文化 & 方法_Albert Kozłowski_InfoQ精选文章