程序员与产品经理打架,早已称不上互联网圈的新闻。怀揣改变世界的远大抱负,却要每天和多变刁钻的需求战斗,这是许多程序员的“生存困境”。那么除了板砖和拼死不从,程序员就没有别的对付变态需求的办法吗?
持续更新是产品常态
不否认存在过于异想天开或需求不清的产品经理,诸如要求“App随手机壳变色”,此时程序员只想抡起板砖,拍死产品经理。然而在这个互联网成为基础设施的数字经济时代,需求的变化是常态,不论哪个行业,不管是为满足客户或是出于竞争压力,都会有需求的变动挑战程序。很多时候,程序员即便把产品经理打到生活不能自理,也无助于解决企业发展的问题。
根据IDC《数字经济创新引领——2018中国企业数字化发展报告》,数字化创新需要打造的多项能力与变化有关,譬如:
敏捷能力:企业在不断变化、不可预测的经营环境中快速反应并给予恰当应对措施的能力。
数字化产品与服务:通过不断迭代、实验和测试的方式开发新产品与服务,并实现频繁乃至连续更新,不断提供客户价值的能力。
鉴于当前市场竞争的激烈程度,我们甚至可以推论,企业所允许的迭代频率,决定了这个企业成长的下限。在这种情况下,程序员的工作变得更繁忙、更琐碎也是必然。
微服务的曙光与阴影
解决这种矛盾,必须把目光投向一直在迭代中发展的互联网公司,新的答案将是“微服务架构”。以不追逐风口稳健发展的网易为例,网易考拉采用微服务架构之后,每天的发布次数从2次做到了1000次,500倍的提升,可谓从步枪到大炮。
所谓微服务架构,就是将应用服务按功能拆分成一组相互协作的服务,每个服务负责一组特定、相关的功能,可以独立开发、部署。用网易副总裁、网易杭州研究院执行院长汪源的类比解释,就是把系统划分成多个非常小的模块,而且这些模块都可以通过一套标准的服务接口进行沟通,从而持续发展——类似人类社会,基于人这个最小单位,设计了标准的语言、文字、货币、法律,发展形成了发达的文明。
微服务对整体问题的分解,为迭代带来了好处——局部的技术选择、变更不会影响整个系统,而且不同模块的开发可以同时进行。然而,整个系统的完善程度,也受限于微服务“分”与“合”的各项标准,这正如文字、法律等标准的成熟度决定一个文明的高度。
微服务的“标准”至少需要解决如下问题:微服务之间的调用和通信、服务之间的发现、服务调用链的跟踪和质量问题、微服务的测试因依赖关系变得复杂、跨服务的更改。
当然,还有分区的数据库体系和分布式事务这样的问题。
立体化的微服务方案缓解矛盾
解决上述问题的,有不少微服务框架。在微服务技术迅速普及的今天,Spring Cloud、Dubbo等开源微服务开发框架在某种程度上成为了微服务的代名词。知乎上有不少相关的讨论。
微服务框架并不能解决所有的问题。比如Dubbo在服务治理方面很优秀,但功能不如Spring Cloud完善;Spring Cloud虽是一个体系化的微服务解决方案,却也没有覆盖整个应用生命周期,比如对微服务测试就鞭长莫及。
网易考拉使用的工具,是网易云在2018网易云创大会上发布的“轻舟”微服务解决方案。汪源表示,轻舟微服务基于微服务这个基本单元,构建了多维度完整的解决方案,让架构可以像人类社会一样持续发展。
根据网易云官方资料显示,轻舟微服务包括微服务框架、API网关、DevOps、容器服务、AIOps和测试平台等模块,是一套复杂的解决方案,但是对用户来说是功能完整、易接入、易运维——因为该平台兼容开源微服务框架,并整合了网易微服务架构实践的各种工具,借助智能化、自动化的能力,能够快速分析整个服务链路,技术发现和解决问题,让微服务顺畅运行。
相信这个立体化的微服务解决方案,能够启发企业建设新的开发流程,使企业的数字化产品与服务能够更快、更好地迭代,程序员也有更多的时间去和产品经理进行有效的沟通,让双方的矛盾得以缓和,而企业业务目标的完成也不会受到影响。