Netflix试图通过开发者自治调和大规模API

最近在Netflix公司的技术博客网站上,该公司的工程经理Katharina Probst和Justin Becker合作撰写了一篇博客,内容是关于如何在API环境中维持开发者自治的问题。这篇发布于2016年8月23日的博客帖子题目为“工程上的权衡及Netflix API的重架构”,文中探究了在API环境中使用多种团队共享的服务时,调和开发者代码和流程所有权中所存在的难点问题。

当前微服务正在崛起,完全自包含、自维护的软件栈也正受到软件工程社区的日益重视(例如使用Docker这样基于容器的开发很受欢迎),但是这种趋势与一些用户的需求是相互矛盾的,因为这些用户希望能访问一些不同类型服务的数据,但不希望大量额外地增加自身应用的复杂度。对于围绕着代码复用和协作的工业标准最佳实践而言,它们与微服务间也有着复杂的关联性,因为它们在外部软件的微服务中建立了内部依赖。

在这篇博客帖子中,Probst和Becker写道:“……我们的工作就是去调和貌似冲突的工程原则,其中包括了速度及完全所有权与代码复用最大化及合并之间的冲突”。鉴于API本身就意味着多个服务间的通信,一个棘手的问题就是如何去维持一个团队内部所使用数据的所有权问题。如果每个微服务都具有与消费者直接通信的API,那么该微服务必须承担其所有消费者的各种请求,对请求整体的削弱就构成了一个完全独立且最大产出的服务。但是如果存在一个用做所有微服务缓存层的独立API,尽管这意味着个体服务对用户实际上如何消费自己的数据并没有多少的控制权,但是这也使得API可以涵盖所有可能的消费者请求。

Probst曾在QCon 2016纽约大会上报告称,为更好地适合很多自治应用的需求,Netflix正计划对自身API进行可能的改进。在Netflix有一个API用于提供微服务与各自API间的编排服务。在由该API承担所有独立微服务中一千多种不同设备的消费者请求的同时,也引入了单点故障问题。即该API的宕机将会影响到所有的消费者服务,而不是仅仅影响到一小组相关用户。为缓解这样的服务污染的隐患,Probst计划在未来版本的API中采用容器技术。她在QCon大会的报告中提出:“今后,当某个脚本对一大类情况都存在问题时……当某个设备或设备脚本不可用时,将不会影响到其它的设备,也不会影响到API。”通过保留单一编排API并使用容器分隔过程实现对风险的降低,Probst得以保留与所有面向消费者微服务通信的单一API,进而形成完美的共享工具和服务的平台。而对很多微服务而言,共享工具和服务是一个臭名昭著的痛点。

虽然Probst已经确定了使用容器去分隔脚本等在内的一些关键API决策,但是很明显还存在其它的一些问题,这些问题尚未给出最优的解决方案。例如该博客帖子的一个主要话题就是,是否应该具有多个编排API,这些API赋予底层服务对编排更大的控制能力;或是让已有的API包含更少的逻辑以成为更严格意义上的数据接口服务,而让大多数的逻辑围绕着消息而构建,并在将消息于逻辑自身服务组特定的逻辑层中提供给消费者之前,将该逻辑添加到数据层中。对于第一种方法,难点在于同时同步所有不同的编排,这构成了共享软件跨越多个服务分组的障碍。对于第二种方法,难点是对于非真实添加的功能,即仅是在各服务间做更大程度上的区分和更细粒度的控制,如何验证它们所导致的延迟增加。这个博客帖子最终并未给出明确的抉择,但是暗示了未来的选择取决于不同权衡间的妥协。考虑到随着通用工具、库和消费者连接性的需求增长会持续增加更多的独立自包含服务,所以可能当前并没有一种完美的解决方案。

本文转自d1net(转载)

时间: 2024-09-20 09:34:30

Netflix试图通过开发者自治调和大规模API的相关文章

Netflix 试图通过开发者自治调和大规模 API

最近在Netflix公司的技术博客网站上,该公司的工程经理Katharina Probst和Justin Becker合作撰写了一篇博客,内容是关于如何在API环境中维持开发者自治的问题.这篇发布于2016年8月23日的博客帖子题目为"工程上的权衡及Netflix API的重架构",文中探究了在API环境中使用多种团队共享的服务时,调和开发者代码和流程所有权中所存在的难点问题. 当前微服务正在崛起,完全自包含.自维护的软件栈也正受到软件工程社区的日益重视(例如使用Docker这样基于容

Android开发者指南(10) —— Android API Levels

前言 本章内容为开发者指南(Dev Guide)/Appendix/Android API Levels,版本为Android3.0 r1,翻译来自:"jackeylu",欢迎大家访问他的博客:"http://jackeylu.wordpress.com/",再次感谢"jackeylu" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com.   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://

OSRAM Sylvania 向开发者开放 Lightify REST API

OSRAM Sylvania最近宣布将为开发者社区提供开放的Lightify REST API,开发者可将其集成于自己的iOS和Android应用,以及网站中Lightify是一种涵盖硬件.云,以及移动设备的物联网(IoT)体系,通过OSRAM的iOS和Android免费应用,可以使用移动服务控制Lightify LED灯泡的灯光. 例如,最近有人使用Lightify为欧洲歌唱大赛(Eurovision Song Contest)增色添彩:瑞典斯德哥尔摩的七座地标式建筑通过不同色彩体现电视观众对

【视频】2008 Google开发者日--Advanced Maps API

本讲座将介绍最近添加的高级地图API - Maps API for Flash. Ben Appleton Ben, Google资深软件工程师,目前领导Google 的地图API 团队.之前负责领导 Mapplet 小组并为 Google Maps 新增 KML 支持.在加入 Google 之前,Ben 於澳洲昆士兰大学取得影像分析的博士学位. 请在附件中查看讲座资料 YouTube Video 附件 (1) Beijing_GDD_slides-appleton.pdf 1376k - 创建

宣布将终止对第三方开发者的API调用

一直以来Neflix提供服务的同时,还向第三方开发者开放API,不过它刚刚宣布将终止对第三方开发者的API调用,11月14日生效.到时候所有调用 Netflix的命令都将得到404的反馈. 很多第三方开发者都使用其API搜索Netflix的数据库和用户队列.但随着公司的壮大,它也希望对Netflix的体验有更多控制. 这不足为奇,去年它就宣布不再面向新的开发者开放API. Facebook将利用用户网站和App*浏览记录**提供广告服务* 遍布全网络的"转发到Facebook".&qu

8点1氪:Neflix宣布终止向第三方开发者开放API

摘要: Neflix宣布终止向第三方开发者开放API 一直以来Neflix提供服务的同时,还向第三方开发者开放API,不过它刚刚宣布将终止对第三方开发者的API调用,11月14日生效.到时候所有调用 Netfli Neflix宣布终止向第三方开发者开放API 一直以来Neflix提供服务的同时,还向第三方开发者开放API,不过它刚刚宣布将终止对第三方开发者的API调用,11月14日生效.到时候所有调用 Netflix的命令都将得到404的反馈. 很多第三方开发者都使用其API搜索Netflix的

iOS开发:对Yo的API学开发者的一些体验

 开发:对Yo的API学开发者的一些体验-"> 在「别让开发者不开心-」一文中我们提到了开发者体验(DX, Developer Experience)的重要性.好的开发者体验,让开发者可以快速透过 API 来打造所需要的服务,替你的产品或服务创造更大的附加价值.本篇文章透过?Yo API?为例,让大家更清楚了解一个好的 API 服务所应具备的条件. 还记得在去年造成极大轰动的?Yo App? 吗? 他是一个只能传送一个 Yo 讯息的 App,你没看错,他的功能就只有这样.Yo 在一开始推出

YouTube发布新API,帮助游戏开发者实时发布游戏视频

[科技讯]3月29日消息,试想一下在玩DOTA对战的同时,就能将游戏画面以视频形式发布到手机上,这种功能是游戏开发者梦寐以求的.而现在,国外视频网站YouTube发布了一系列新的应用程序接口(API)能帮助游戏开发者实时发布游戏视频. 据外媒报道,YouTube在旧金山游戏开发者大会上发布了新的API,游戏开发者可以将这些API添加到现有的游戏应用中,突破桌面的限制,将游戏视频实况提供给移动设备用户.YouTube还提供视频转码服务,向用户提供更流畅的视频体验. YouTube此前曾向部分合作商

MySQL可用的API

    5.1MySQL可用的API    为了方便应用程序的开发,MySQL提供了用C 编程语言编写的客户机库,它允许从任何C 程序的内部访问MySQL数据库.客户机库实现应用程序编程接口( A P I),API 定义客户机程序如何建立和执行与服务器的通信.    然而,使用C 来编写MySQL程序并不受限制.许多其他语言处理器本身也是由C 编写的,或具有使用C库的能力,所以MySQL客户机库提供了这个方法,由此, MySQL对这些语言的约束可以建立在C API 的上面.这就为与MySQL服务