10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

“微服务并不是一切”:Fred George 谈论技术性、流程性与组织性障碍

  • 2016-02-29
  • 本文字数:2580 字

    阅读完需:约 8 分钟

在 microXchg 2016 大会上,Fred George 进行了一场主题为“微服务并不是一切”(It’s Not Just Microservices)的演讲。他在演讲中表示,微服务确实能够帮助组织“发展得更快”,并快速地交付商业价值。但他认为, 微服务的实现本身并不会带来成功,必须找到在技术、流程和组织等方面对业务的敏捷性增长造成阻碍的原因,并冲破这些阻碍。

George 是 Fred George Consulting 公司的首席顾问,他在演讲的开头部分首先表示,当前业界存在着许多“热门话题”,例如微服务、Docker 和精益创业,这些话题都是围绕着更快地交付商业价值的意愿而展开的。通过对于 Cynefin 框架的引用可以发现,许多组织所开展的业务是非常复杂的,由于这种复杂性,而无法确定因果关系,并且“目前有效的做法未必今后也同样有效”。因此,如果期望在应对这种复杂性时能够做到“更快地发展”,就必须找到在技术、流程以及组织方面的发展障碍并消除他们。

George 引入了技术性障碍这一概念,为了详细地讨论这一问题,他首先对“硅谷科技”的爆炸式发展进行了探索。在硅谷地区,有大量成功的商业组织充分地应用了云计算、专用数据库、开源框架与持续发布等技术,这就让其他组织开始反思,是否他们自身在技术方面的选择阻碍了他们的发展。尤其值得一提的是,如果组织将应用程序的部署从数据中心的裸机迁移至虚拟化的云平台以及基于容器的环境,那么就能够减少硬件的交付周期,进而缩短了应用的部署周期,这种差别往往是指数级的。

George 认为,由于硬件的交付周期缩短,再加上现代化的硬件平台具有更好的灵活性,这将促进服务设计的发展。久而久之,IT 产业的革新者逐渐开始从单一的一体性应用转变为由多个大尺度的面向服务架构(SOA)组成的服务。这一趋势最终演变为由多个小规模的单一职责(微)服务所组成的系统,由此带来了简化代码变更、缩小迭代规模以及更快的实践等优点。

通过不断发展的技术,我们将能够创建松耦合、高性能的应用架构,例如使用(利用 Kafka 等技术)持久化事件总线,并通过一个轻量级的消息代理(messaging broker)以减少对于核心事件总线(通过 Zero MQ 等技术实现)的读操作的负载。在同样由 George 所主持的另一场演讲“实现微服务所面临的挑战”( Challenges in Implementing Microservices )中,他还将对这一概念进行进一步的探索。

George 为听众举了一个车辆租赁业务领域方面的应用示例,该应用通过某个服务向事件总线发送一条消息,基于客户的数据发起一条租赁报价请求。而其他服务则能够对该请求发出出价的回复。通过这种松耦合、异步消息驱动的架构,就可以轻松地添加新的出价服务(例如某个开发者认为他们实现了一种改进型的出价算法),并且由于单一的出价服务不会造成整个系统出错的涟漪效果,从而也提升了系统的容错能力。

在关于如何缓解技术性障碍的讨论的总结陈词中,George 提出了开源所带来的爆炸性优势,如果组织无视一些现有的技术,例如 Netflix OSS 技术栈或 Docker ,那么就可能会将资源浪费在开发自有平台上。此外,George 还表示,对于某些用例来说,函数式语言或许能够成为解决问题的“银弹”。他提到了一个有趣的案例,某组织将一个包含 13 万行代码的 Java 遗留应用重写为基于 Clojure 的应用,仅用了 4 千行代码。

在演讲的下半部分,George 讨论了如何缓解流程上的障碍,而解决这一问题的关键在于首先要理解组织所开展的业务。对于明显或有一定复杂度的项目,可以通过传统结构的软件开发方式应对。但对于高复杂的问题则必须采用不同的策略。传统的“瀑布”模型的做法是在项目开始时为开发团队创建一个需求列表并进行任务分解,这种方式并不适合于处理复杂的问题领域,而应当采用“由实践驱动创新”的方式,开发者应该转而关注于“特性”层面,而不是继续停留在任务层面。

项目干系人应当直接与开发者讨论需要达成的业务目的、如何评价业务的成功,并且清晰地指出开发团队可以选择的“手段”。这一过程的关键在于“衡量重要的指标”,避免使用一些无用的指标,例如“代码行数”以及“完成的里程碑”,而应当使用一些专注于业务的指标,例如销售量、点击次数以及客户保留率等等。

在 George 谈论如何缓解组织性障碍的开始,他提出了一点建议,即应当避免开发团队任务的过度专业化。他发现,虽然理论上专职人员具有更好的生产力,但往往会受到过多的沟通与不均衡的工作安排的干扰,由此造成了工作的堆积与延误。George 为听众展示了某个组织的工作过度专业化的学习案例,他同时认为:各种漂亮的头衔对于项目的业务价值交付毫无意义。

我们有 50 位 IT 专家,其中超过 25 人有较高的头衔,但没有一个人理解他们所参与的项目的意义……

对于这个学习案例中所表现的过度专业化的问题,George 提出了一种解决方式,即创建一份简短的清单,列出对于组织有战略性重要意义的关键技术,并基于新手、熟练工及专家的模型创建相应的头衔。在这个学习案例中,新创建的头衔包括:“新手开发者”,即还未掌握某项技术的人员。“开发者”,即掌握了某项关键技术的人员。“高级开发者”,即某项关键技术方面的专家。“系统开发者”,即掌握了5 项或更多关键技术的人员。以及“开发者专家”,即3 项或更多关键技术方面的专家。

除了头衔的简化之外,另一个关键在于组织的工作空间的安排,这种安排的目的是让团队能够进行密切的合作,并且保证高效的沟通。团队应当实现“不设立专职主管”,以避免在团队中出现无谓的上下级结构,并且在处理因复杂的问题而出现不断变化的挑战时,这种方式能够带来更大的灵活性。而George 所提的最后一条建议是“将工作安排给固定的团队”,因为短期项目团队的组建与解散是一种低效的方式,团队需要一定时间才能够达到较高的生产力。

George 在本次演讲的总结中说道,虽然对于复杂的业务领域来说,微服务是一种解决问题的好方法,但只有处理好其他技术性、流程性与组织性障碍的问题,才能够有效地利用微服务交付商业价值。George 最后向参加此次专注于开发者的 microXchg 大会的听众传达了一条信息,他表示在开发团队中必须有系统管理员与运维人员的参与(“DevOps”),并且应当拥抱全栈开发者的观念。

Fred George 在 microXchg 的演讲“微服务并不是一切”的视频可在大会的 Youtube 专属频道上观看。

查看英文原文:“It’s Not Just Microservices”: Fred George Discusses Technology, Process and Organisation Inhibitors

2016-02-29 18:002178
用户头像

发布了 428 篇内容, 共 194.4 次阅读, 收获喜欢 39 次。

关注

评论

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

业务架构那点事(2)如何通过高层访谈获取企业战略信息?

涛哥 数字产品和业务架构

业务架构 访谈

订阅标识符与订阅选项--MQTT 5.0新特性

EMQ映云科技

物联网 IoT mqtt 订阅 企业号 3 月 PK 榜

金三突击面试,收获6个Offer,原来面试还能这么简单!

Java java面试 Java八股文 Java面试题 Java面试八股文

喜讯|百度入选“移动互联网APP产品安全漏洞治理”优秀案例

百度安全

设备使用HTTPS协议接入IoT物联网平台——设备接入类

阿里云AIoT

面面俱到!四面阿里拿offer后,才发现师哥给的面试笔记有多强大

Java java面试 Java八股文 Java面试题 Java面试八股文

通过Flutter实现一个能在多端运行的扫雷游戏

编程的平行世界

flutter 前端 游戏 移动端 扫雷

支付宝小程序-MQTT模拟器体验阿里云IoT开发——设备接入类

阿里云AIoT

物联网

交易系统之数据库弱依赖解决方案

京东科技开发者

数据库 高并发 灾备 db 企业号 3 月 PK 榜

亿级用户中心的设计与实践

Java 服务架构 亿级流量 用户中心

OPPO、京东云 loT 项目数据架构改造,数据处理痛点这样破解

TDengine

tdengine 数据架构 时序数据库 用户案例 loT

中国流程挖掘迎来新“启点”,望繁信科技全面升级

ToB行业头条

Acrobat Pro DC 2023发布,有哪些新的改进?

Rose

adobe pdf编辑器 Acrobat Pro DC 2023

CleanMyMac4.20专业的mac清理软件

茶色酒

CleanMyMac4.20

国家中心城市手机银行发展洞察

易观分析

金融 经济 手机银行 城市

ElasticSearch必知必会-Reindex重建索引

京东科技开发者

elasticsearch 索引 ES 集群 企业号 3 月 PK 榜

真香!阿里最新出品Java面试核心讲(终极版),Github已星标50K

程序员小毕

Java 程序员 面试 后端 架构师

直播教学!20 分钟开发可视化「智能门铃」丨RTE 开发实战课 • 第一期

声网

最佳实践 直播 RTC 声网

Last Week in Milvus

Zilliz

Milvus Zilliz 向量数据库

跨平台开发成为移动应用程序开发趋势

没有用户名丶

React数字滚动组件 numbers-scroll

观纵科技

JavaScript 前端监控 React

VPN客户端Shimo mac版使用教程:如何创建新的 VPN 帐户?

Rose

vpn mac系统 Shimo下载 Shimo教程

企业不想走弯路,不如试试低代码开发

引迈信息

低代码 低代码开发 JNPF

从稀疏表征出发、召回方向的前沿探索

百度Geek说

召回 预训练模型 稀疏矩阵 企业号 3 月 PK 榜

AntDB数据库助力中国移动华南中心计费项目

亚信AntDB数据库

AntDB 国产数据库 aisware antdb AntDB数据库 企业号 3 月 PK 榜

SpringBoot项目就连创建目录都让人抓狂

Java Spring Boot 框架

K8S部署应用详解

tiandizhiguai

使用抓包工具Wireshark分析IoT设备网络行为——设备管理运维类

阿里云AIoT

网络协议 物联网 网络性能优化

“微服务并不是一切”:Fred George谈论技术性、流程性与组织性障碍_方法论_Daniel Bryant_InfoQ精选文章