写点什么

面向服务的开发:Rafael Schloming 关于构建微服务的经验分享

  • 2017-11-27
  • 本文字数:2538 字

    阅读完需:约 8 分钟

San Francisco QCon 大会上,Rafael Schloming 提出了“面向服务的开发”,他认为,想迁移到微服务的组织必须要寻求一种方法来打破单一的开发过程,而不仅仅是试图打破传统的系统架构。将新成立的微服务团队看作是内部的“衍生品(spinoffs)”,他们具有团队边界,并且鼓励他们自给自足和自我管理,除此之外,这些团队必须得到有效工具的支持,以便在生产中调试、部署和监测服务。

Schloming 是 Datawire 的 CTO 和首席架构师,演讲开始时,他问了听众一个问题,将一个庞大的系统迁移到基于微服务的应用程序时,他们遇到的第一个难题是什么。常见的回答有:“如何分解一个大型系统?”、“如何用微服务构建我的应用程序?”以及“我需要怎么样的基础架构才能使我在微服务中受益?”。根据他 2013 年在 Datawire 开发微服务应用程序的经验,Schloming 说,最重要的问题也是通常最容易被忽略的问题是“如何分解一个大型系统?”,因为开发过程对于建立和保持开发速度来说至关重要。

在开发应用程序或服务时,应用程序的交付生命周期可以划分为三个阶段:原型(prototyping)阶段、生产(production)阶段以及关键任务(mission critical)阶段。在原型阶段,维护高速的功能交付通常要容易得多,因为在这个阶段产品稳定性不那么重要。当产品交付从生产阶段转移到关键任务阶段时,为了提高稳定性往往会牺牲速度。对于应用程序中的所有组件来说,使用单一交付过程是十分低效的,因为这样做往往会导致在单一稳定性与速度间侧重点的不同(总是要牺牲其中的一项)。

以基于微服务的系统开发一个应用程序时可以使用多个流程:每个微服务产品团队都可以根据当前该过程在交付生命周期中的阶段而选择合适的流程。微服务可能是一个分布式的开发架构,但是它们也可以使用分布式的开发工作流,该工作流由各种的同步开发过程组成,并且具有不同的速度与稳定性间的侧重程度。然而,采用这种工作方式需要组织的变革以及技术的改变。

站在组织的角度来看,创建一个围绕产品开发自给自足、自治的软件团队是颇有裨益的。然而,从单一过程到微过程的转变需要训练、交流和代理(delegation)。微服务产品团队中的每个人都将经历完整的开发生命周期(从本地编码到通过持续交付将代码部署到生产,再到监测应用程序),这个过程需要额外的训练。最终,这种变化意味着专家有机会成为多面手,从而使得整体系统以及各项操作的实现更加完善。

在产品团队中,人们可能不会使用同一种语言,但是如果这种冲突处理得当的话,它会成为协作的来源。组织内的一个小团队可能把握着整个系统的重要部分,自治是一个组织在快节奏的市场环境中有效规模化的唯一方法。团队应该努力确保他们不需要依赖其他团队来实现自己的目标,这其中包括消除对中心化架构和运营团队的依赖(即使依赖一个提供自助访问架构的“平台团队”通常情况下是有好处的)。

Schloming 认为,要想实现微服务的组织变革,最好的方法是把每一个产品团队都看作是一个商业衍生品。就像现有的开发团队可能会使用诸如 Twilio Stripe 这样的第三方服务一样,产品团队也应该使用同样的方式与内部服务进行集成。

关于微服务的技术实现,Schloming 概述了产品交付生命每个周期阶段的目标。原型阶段的目标:工具以及用户的快速反馈;生产用户以及增长(production users and growth)阶段的目标:不影响用户的前提下增加新功能;以及关键任务阶段的目标:保证稳定性。这样通常会形成一个并行的单一平台(基于微服务的)工作流,该工作流可以随着产品的成熟而转换。可以使用 Docker Kubernetes Envoy 服务代理作为底层平台组件,这个实例就展示了产品生命周期中每个阶段的技术挑战。

在原型阶段,要在生产过程中获得组织对实验性项目的投资是很有挑战性的(例如,进行 A/B 测试或者 canarying 的试验)。除此之外,从技术上来说,在本地运行微服务也是具有挑战性的。克服这一问题的策略是提供自助服务供应(provisioning)和开发容器,这些容器可以通过连续的交付流水线部署到远程环境中。Schloming 给出了一个使用 Datawire 创建的开源工具( forge.sh telepresence )的例子。forge.sh 用于创建一个轻量级的开发环境,它是产品构建和相关依赖关系的单一数据源。telepresence 用于代理远程的 Kubernetes 集群。通过这种方式可以使本地开发的应用程序 (以及相关的调试工具) 与远程服务进行交互,就好像它在集群中运行一样。

对于交付生命周期的生产用户和增长阶段,核心挑战是度量用户对实验性功能的影响 (并认识到在速度和稳定性之间的侧重点),以及测试新特性和降低软件缺陷的影响。使用多版本部署可以克服这些问题,通过 canarying 添加新特性(将其部署为新服务),并随着所观测的用户指标的升高,逐渐增加流量。Envoy,是一个第7 层(应用层)代理,它是由Matt Klein 和Lyft 工程团队构建并运行的,它可以用于解决上述问题,因为所有的流量都可以通过这个代理进行路由和控制。在过去的6 个月里,由于 Istio (它使用 Envoy 作为服务网格数据平面)和其它“服务网格(meshes)”的出现,人们对这个概念越来越感兴趣了。

最后一个阶段,关键任务软件阶段围绕防止软件功能和应用程序可观察性的倒退而进行。克服这一问题的策略包括定义服务水平目标(SLOs)和实现第7 层(应用层)的可观察性。SLOs 的创建和执行需要通过契约型服务级协议(Service Level Agreements,SLAs),并且需要在整个组织范围内进行应用。第7 层的可观测性可以通过 Envoy (或者类似的代理)进行实现,因为这个代理在网络堆栈层中运行,并且可以访问网络中的所有服务端到服务端的流量。

Schloming 在演讲的最后阶段总结道,当一个组织开始进行微服务迁移时,需要注意的是,除了分解整体架构之外,还应该优先对整体流程进行分解。将微服务产品团队组织为自给自足和自治的“衍生品”是有好处的。除此之外,组织必须创建相关工具来实现有效的面向服务的开发。

Rafael Schloming 主题演讲“面向服务的开发”(PDF,2MB)中的演示文稿可以在QCon SF 网站上进行访问。这个演讲的视频以及所有的演讲视频会由InfoQ 在接下来的几个月内整理出来,届时可以在相关网站进行访问。

查看英文原文: Service-Oriented Development: Rafael Schloming Shares Lessons Learned with Building Microservice

2017-11-27 18:001474

评论

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

Android APP性能优化

北京木奇移动技术有限公司

Android开发 软件外包公司 APP外包公司

ZOC8 for Mac(终端仿真器软件)v8.10.0激活版

iMac小白

Perfectly Clear Workbench for Mac(智能图像清晰修复软件)v4.6.1.2724永久激活版

iMac小白

金融科技生态合作+1!YashanDB与维恩贝特完成兼容互认证

Geek_2d6073

共筑金融数字化新生态!YashanDB与恒生电子完成兼容互认证

Geek_2d6073

挑战数据传输路由规划,与DeepSeek共探大模型算法优化

华为云开发者联盟

人工智能 动态内存 大模型 LLM 路由规划

TechTool Pro for Mac:全面守护您的Mac健康

iMac小白

My Metronome for Mac(音乐节拍器软件)v1.4.2激活版

iMac小白

iReal Pro for Mac(优秀的音乐练习参考工具)v2025.2激活版

iMac小白

CRM系统(源码+文档+讲解+演示)

深圳亥时科技

合合信息2025届春季校园招聘全面启动!

合合技术团队

人工智能 AI 招聘

动效资源交付的突破:Vision平台准入准出方案

快手技术

Java 大前端 动效

foobar2000 for mac(多功能音频播放器)v2.24.2免激活版

iMac小白

精选案例展 | 智己汽车—全栈可观测驱动智能化运营与成本优化

博睿数据

满血版DeepSeek落地东南大学!昇腾先进架构和卓越性能全程护航

Geek_2d6073

国内十大专业SEO公司评测

科技汇

Tipard FixMP4 for Mac(视频修复软件)v1.0.16激活版

iMac小白

政策利好!数造科技抢滩可信数据空间,加入开放数据空间联盟

数造万象

数据资产 政策 数据流通 数据要素 可信数据

tcl85t6l和85s11k选哪个

妙龙

智能电视 tcl电视

Screen Wonders for Mac(3D壁纸屏保软件)v3.3.1激活版

iMac小白

2600 万表流计算分析如何做到? 时序数据库 TDengine 助力数百家超市智能化转型

TDengine

数据库 时序数据库

时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍

TDengine

数据库 大数据 时序数据库

TCL电视75T6L和75Q10K选哪个

妙龙

智能电视 tcl电视

Luminar Neo for mac(图像编辑软件)v1.23.0中文激活版

iMac小白

如何利用MES系统进行产能分析呢?

万界星空科技

制造业 mes 万界星空科技mes 制造业转型 产能分析

Tower for Mac(强大的Git客户端)v12.5.1注册激活版

iMac小白

智能制造与精益生产的深度融合

积木链小链

数字化转型 智能制造 精益生产

小红书笔记详情API接口(小红书API系列)

tbapi

小红书笔记详情接口 小红书API 小红书笔记详情采集

行云堡垒-助力深圳企业快速过等保

行云管家

等保 深圳 等保测评 过等保

【GreatSQL优化器-15】index merge

GreatSQL

Flyingbee PDF Converter - PDF to Office for mac(高效的多合一PDF转换器)v6.7.5激活版

iMac小白

面向服务的开发:Rafael Schloming关于构建微服务的经验分享_架构_Daniel Bryant_InfoQ精选文章