写点什么

微服务经济学:Phil Calçado 在 CraftConf 大会上强调要避免微单体陷阱

  • 2017-05-21
  • 本文字数:1583 字

    阅读完需:约 5 分钟

在匈牙利布达佩斯举行的 CraftConf 2017 大会上, Phil Calçado 呈现了“微服务经济学”的演讲。演讲的要点包括:在对单体应用进行改造时,“反康威定律”可以作为一个有用的应用架构指导工具,不过这有可能导致出现“微单体”(迷你单体),除非创建新服务的“交易成本”低于在已有单体或服务里添加新服务的成本;单体从“域经济”中获益(比如,增加新功能不需要实现新的部署流程),而微服务则从“伸缩经济”中获益,不过为了支持伸缩,需要额外的自动化成本(有时候需要在前期投入)。

来自DigitalOcean 的产品工程总监Calçado 将康威定律作为演讲开场白,讲述了他的团队在改造单体架构方面的经历。由Thoughtworks(以及 James Lewis )所提倡的“反康威定律”可以用于重组组织的结构,从而相应地改变软件应用的架构,一般会朝着更小的服务发展,比如“微服务”。不过,微服务的成功实施需要前期的投入,用于支持部署和解决众多的横切面(cross-cutting)问题。在后期,这些小型的服务可能变得难以维护,所以要小心谨慎。

Calçado 借鉴了企业管理领域的一些思考模式,他引用了 R.H. Coase 所著“企业的性质”一书的内容,将单体应用比作“企业”,将微服务比作“自由代理机构”:

当企业内部的整体交易成本低于外部自由代理市场的成本,企业才能得以生存。

……直到内部的交易成本与通过外部开放市场进行交换的成本等同,或者与重新组织一个企业的成本等同。

当一个组织开始向微服务架构迁移时,往单体里添加功能的“交易成本”要低于构建整个服务(包括所有相关的交付机制)的成本。反康威定律会让往单体添加功能的交易成本高过构建新服务的成本,不过 Calçado 建议最好还是想办法降低构建新服务的成本,让它们低于往单体或已有的服务里添加新功能的成本。

持续不断地往一个已有的微服务里添加功能会导致出现“微单体”,它们实际上就是小型的单体。

让“错误”的事情变复杂,这在一开始是没有问题的,不过如果能够将“正确”的事情简单化,它会将你带向卓越。

Calçado 在演讲的下一个小节剖析了微服务的交易成本,并引用了 Martin Fowler 的“ Microservices Prerequisites ”一文的内容,他基于自己的经验建议添加额外的四项前提:

  1. 快速调配(Fowler)
  2. 基本的监控(Fowler)
  3. 快速部署(Fowler)
  4. 易于调配的存储
  5. 访问边界,例如,一个暴露给客户端的新服务需要访问“边界”功能,如会话数据,还有可能要求处理横切面问题,如审计和速率限定
  6. 认证和授权
  7. 标准化的远程过程调用(RPC),例如,使用微服务底层框架,如 Twitter 的 Finagle 或 Netflix 的 Karyon (现在已经不建议使用),或者使用服务网格框架,如 Linkerd Envoy

Calçado 说单体从域经济上获益,而微服务则从伸缩经济上获益。例如,一旦配置好单体应用的部署流程,增加新的特性一般不会造成额外的成本。而对于微服务来说,创建新的服务一般意味着需要新的部署脚本或管道。这个就涉及到之前讨论的降低"交易成本"的话题,降低微服务迁移成本最有效的方式是减少增加单个服务的成本。

在演讲结束时,Calçado 提醒大家,没有必要在前期就知道所有降低交易成本的方式。业务的主要目标是为客户、用户和利益相关者带来价值,从 Calçado 的经验来看,开发团队在向微服务的迁移过程中要保持交付业务价值,一般需要遵循以下五个步骤:

  1. 试验——开发人员要经历架构问题,并尝试在单体之外构建服务。
  2. 检查清单和标准——标准化和文档化的手动构建服务流程。
  3. 拷贝和黏贴——通过拷贝代码来开始新服务的开发。
  4. 类库和工具——将上一步提到的代码拷贝封装成一系列类库和工具。
  5. 平台——微服务生态系统的支持平台,包括所有的要素。

Phil Calçado 的演讲幻灯片“微服务经济学”可以在 SlideShare 上找到,可以在 CraftConf 2017 的 Ustream 频道观看相关视频。

查看英文原文: The Economics of Microservices: Phil Calçado Recommends Avoiding ‘Microliths’ at CraftConf

2017-05-21 19:001260
用户头像

发布了 322 篇内容, 共 144.6 次阅读, 收获喜欢 148 次。

关注

评论

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

蹲坑的时候该读什么?

善宝橘

不了解Raft算法敢说研究过分布式?

心平气和

分布式 raft

第1周作业:食堂就餐卡系统设计

Steven

食堂就餐卡系统设计

Alvin

极客大学架构师训练营 第一周命题作业 2组

架构师训练营第 1 期第 五 周学习总结

郑凯元

极客大学架构师训练营

Architecture Phase1 Week5:HomeWork

phylony-lu

极客大学架构师训练营

Architecture Phase1 Week5:Summarize

phylony-lu

极客大学架构师训练营

Raft算法之日志篇

心平气和

raft

架构 2 期 - 第一周作业(2)

浮生一梦

极客大学架构师训练营 第一周总结 2组

第一周-作业

ray-arch

极客大学架构师训练营

设计自己的核心竞争力链

boshi

职场 随笔杂谈

架构师训练营第五周作业

四夕晖

架构师训练营 1 期 - 第五周作业(vaik)

行之

极客大学架构师训练营

【架构师训练营第 2 期】第1周作业

知致

week05

……

分布式事务实现及比较

luojiahu

分布式事务

Raft算法之快照篇

心平气和

raft 快照

一致性hash算法及标准差计算

知行合一

架構師訓練營 week5 作業

ilake

架构2期-第一周作业(1)

浮生一梦

极客大学架构师训练营 第一周命题作业 2组

Raft 作者亲自出的 Raft 试题,你能做对几道?

多颗糖

分布式系统

学习笔记:架构师训练营-第五周

四夕晖

缓存 消息队列 负载均衡架构 session处理方案

第一周-学习总结

ray-arch

极客大学架构师训练营

架构师训练营第 5 周作业

netspecial

极客大学架构师训练营

Raft算法之选举篇

心平气和

raft 选举

第一周作业

CraspLion

架构师训练营第 1 期第 五 周作业

郑凯元

极客大学架构师训练营

Java一致性Hash算法及测试标准差

A p7+

极客时间架构师培训 1 期 - 第 5 周总结

Kaven

架構師訓練營 week5 總結

ilake

第1周 架构方法作业

心在那片海

微服务经济学:Phil Calçado在CraftConf大会上强调要避免微单体陷阱_架构_Daniel Bryant_InfoQ精选文章