Summary of《认识微服务——一颗银弹》

(P.s. 本文系摘要,点我阅读原文。)
 
 ——从《没有银弹》提出的软件工程本质性工作的四大难题讨论微服务的价值

软件工程的本质性与附属性工作

所有的软件创作都包括本质性和附属性工作:前者是创造由软件实体组成的复杂概念模型;后者是用程序语言表达软件实体,并在时间和空间的限制下翻译成机器语言。本质性工作存在四大难题:复杂性、隐匿性、配合性和易变性。

 

软件工程本质性工作的四大难题

1.复杂性

随着“软件吞噬世界”不断深入,软件对应的社会活动也越来越复杂。所实现业务的复杂,代表着软件系统的成功,同时意味更容易失败。

微服务提出以业务边界作为划分依据,将大系统拆分为由多个微服务构成的系统组,以降低单个系统的复杂性 ,同时增加了整个系统组的总体附属性问题。

2.隐匿性

未完成的软件在所有参与软件工程的人眼中都有盲区,盲人摸象造成了极大的沟通障碍。

微服务强调业务独立,缩短单个业务从需求到交付的开发周期。虽然没有降低系统的隐匿性,但是通过减少隐匿时间,以降低软件工程的总体隐匿性。快速交付要求团队具备持续交付和持续部署的能力,也模糊了需求、设计、开发、测试、验收、运维、运营等环节,造成了一定的生产力损耗。

3.配合性

软件开发到一定规模后,协同成本成为新增或修改业务的主要障碍,维持较高生产效率的一个思路是将系统控制在一定规模内。

微服务架构将单个系统内部的配合性问题转移到了各系统之间,由于系统间配合性问题通常更加复杂,所以微服务的划分变得非常重要。划分的原则是减少对外配合,将复杂的配合性问题留在单个系统内部。

4.易变性

软件所应用的环境由各各种易变的因素组成,单体架构对需求和性能的变化难以做出及时响应。

微服务业务独立,由负责本功能的团队直接面向用户需求,有利于想法在短时间内快速交流,加快响应速度。要求小团队拥有独立决策权,对传统IT公司的组织结构是一种挑战。同时微服务的交付模式也会挑战客户接受软件更新的习惯。

总结:微服务的价值

解放小团队的生产力,快速响应用户需求。

 

(P.s. 本文系摘要,点我阅读原文。)

posted @ 2017-08-05 17:41  wangyanxiang-  阅读(336)  评论(0编辑  收藏  举报