东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

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

  • 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:3015210

评论

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

龙蜥操作系统上玩转铜锁密码库

OpenAnolis小助手

阿里云 操作系统 国密 龙蜥社区 铜锁

CloudXR在农业领域的用例表现

3DCAT实时渲染

CLOUDXR 云化XR

软件测试/测试开发/全日制 | Python全栈开发中的消息队列应用

测吧(北京)科技有限公司

测试

你的数智化底座物尽其用了吗?

用友BIP

数智底座

天翼云亮相操作系统大会&openEuler Summit 2023,斩获多项大奖!

天翼云开发者社区

云计算 大数据

程序员真是越来越懒了,Api 文档都懒得写?程序员:Api工具惯的!

不在线第一只蜗牛

如何将支持标准可观测性协议的中间件快速接入观测

观测云

可观测性 HBase

软件测试/测试开发/全日制 | 前后端数据交互与Fetch API应用

测吧(北京)科技有限公司

测试

感恩有你|一起见证 OpenTiny 这5个锦鲤时刻

OpenTiny社区

开源 前端 低代码 组件库

K8S学习指南(1)-docker的安装

俞兆鹏

效果图渲染角度哪什么小技巧?10个效果图渲染技巧

Renderbus瑞云渲染农场

云渲染 渲染农场 瑞云渲染 Renderbus云渲染农场 效果图渲染

软件测试/测试开发/全日制 | Python全栈开发实战:构建完整的Web应用

测吧(北京)科技有限公司

测试

6本报告,助你2024招聘「才」源滚滚!

用友BIP

智能招聘

演讲实录|博睿数据副总裁杨雪松:可观测性建设之路(上)

博睿数据

加入openEuler训练营,一起探索开源世界的无限可能!

科技热闻

软件测试/测试开发/全日制 | 实现实时通信:Python全栈开发中的WebSocket实践

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | 从MySQL到MongoDB:Python全栈开发中的数据库选择

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | 前后端协同工作:Python全栈开发的团队合作实践

测吧(北京)科技有限公司

测试

数据驱动运营?试试这款开源工具做可视化分析!

ClkLog

征程万里,行则将至|博睿数据2023年度盘点

博睿数据

程序性能优化全能手册

快乐非自愿限量之名

php 性能优化

软件测试/人工智能/全日制 | Python全栈开发:理解HTTPS加密机制与安全传输

测吧(北京)科技有限公司

测试

专业开发者的软件开发神器——低代码

高端章鱼哥

软件开发 低代码

多策略深度智能分货拣货,助力快消品企业提升核心竞争力

用友BIP

购买体育赛事直播系统源码,如何避免知识产权侵权和其它法律风险

软件开发-梦幻运营部

中国电信天翼云全国产化大数据平台落地广西!

天翼云开发者社区

云计算 大数据 云平台

一文详解动态 Schema

Zilliz

数据库 Milvus shema

物联网与低代码: 连接人与数字世界的无限可能

不在线第一只蜗牛

低代码 物联网

数字藏品如何赋能线下实体?以 BOOMSHAKE 潮流夜店为例

Footprint Analytics

NFT 数字藏品

MegEngine 11-12 双月报:新版本发布,开发者福利课程,MegEngine 使用技巧,精彩不容错过!

MegEngineBot

深度学习 开源 框架 寒武纪

K8S学习指南(2)-docker的基本使用

俞兆鹏

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