在QCon纽约2016大会上,Etsy软件工程师Stefanie Schirmer介绍了其公司如何成功转换到API优先的架构,实现了多设备支持,解决了服务器端性能问题,被开发团队迅速采用。

\\

Etsy工程团队已经名声在外,他们设计的架构针对变更进行了优化,方便了持续试验,让他们可以每天部署50次。因此,你可能会觉得意外,几年前,他们还在研究解决严重的性能问题。

\\

他们的目标是1000毫秒以下,因此,他们需要降低每个客户端请求的服务器处理时间。遗憾的是,单线程的PHP世界轻易不允许并发API调用,只能缓慢地顺序执行。Schirmer及其同事需要解决如何实现并发,否则,他们就会冒着永久性性能问题的风险。更为复杂的是,他们并不清楚,性能退化的根本原因是后台问题,还是客户端请求的性质。

\\

遗憾的是,开发团队不能只是致力于提高性能。除了要支持和升级Etsy.com网站外,移动应用的新特性需要从平台上增加可扩展性。这两个问题的解决方案需要API团队采用一种新的设计哲学,同时要保证它们是开发团队所熟悉且易于为他们所使用的API。

\\

Etsy使用“元端点(meta-endpoints)”创建了一个两层的API,而不是依赖于一个有一组扁平端点的API。和Netflix及eBay的ql.io的模式类似,Etsy的每个元端点都聚合了多个其他的端点。这让服务器端可以将底层的通用资源组合成设备或视图特有的资源。

\\

整个技术栈构成了一棵多层的树,如下图Schirmer的幻灯片所示。面向客户的“订制(bespoke)”主页被裁剪成了特定的视图。它使用了一个并行元端点层,后者反过来又调用了原子组件端点。只有最底层的组件(它们不是元端点)能够和数据库交互。

\\

\\

元端点层降低了组合网站和移动应用订制视图的复杂性。不过,多个元端点单线程处理无法满足性能需求。Etsy工程师利用cURL发起并行HTTP调用,甚至是修改libcurl以满足需求。自定义的监控工具在请求通过框架扇出时将其调用层次可视化,让开发人员可以定位故障点。

\\

他们还创建了其他的内部工具,用于简化新API的应用。Etsy首先自动化了API客户端(它知道每个端点的具体参数)生成,然后又配上了文档,简化了开发人员的学习曲线。团队没有采用一种通用的培训方法,而是参加实验小组、代码实验室、午餐和学习研讨班,以及与有经验的开发人员结对。

\\

Schirmer认为,她讲述的故事是一个关于架构变革的案例,可以移植到其他系统。与API辅助工具和服务相关的工作有助于平台团队将新API“卖给”开发人员。为此,Schirmer及其同事一直保持着与开发团队的沟通,以确保框架在不断演化的过程中可以照顾到所有人的利益。

\\

查看英文原文:How and Why Etsy Moved to an API-First Architecture

Etsy如何及为什么迁移到API优先的架构相关推荐

  1. api函数原型大全_如何使用您的API优先平台来使原型做好生产准备

    api函数原型大全 by Mike Sedzielewski 由Mike Sedzielewski 如何使用您的API优先平台来使原型做好生产准备 (How to use your API-first ...

  2. 揭秘 Uber API 网关的架构,建议收藏!

    来源:InfoQ 近年来,API 网关成为微服务架构中不可或缺的一部分.因此,一个架构良好的 API 网关显得尤为重要.本文详细介绍了 Uber API 网关的架构设计,以飨读者. 近年来,API 网 ...

  3. OceanBase迁移服务:向分布式架构升级的直接路径

    2019年1月4日,OceanBase迁移服务解决方案在ATEC城市峰会中正式发布.蚂蚁金服资深技术专家师文汇和技术专家韩谷悦共同分享了OceanBase迁移服务的重要特性和业务实践. 蚂蚁数据库架构 ...

  4. 推荐国产神器Eolink!API优先,Eolink领先!

    前言: 在我们后端开发者做项目的时候,避免不了与前端界面的交互,对于我来讲,在做项目的时候用到过postman,swagger做接口测试工作,在公司的时候公司主要用YApi可视化接口平台,最近使用了一 ...

  5. Dubbo API 笔记——Dubbo架构与使用

    架构演变 单一应用架构 所有功能部署在一个应用上,用于简化增删改查工作量的数据访问框架(ORM)是关键 垂直应用架构 将应用拆分成互不相干的几个应用,以提升效率,此时,用于加速前端页面开发的Web框架 ...

  6. Migrating to Cloud-Native Application Architectures中文版《迁移到云原生应用架构》

    云原生的崛起 软件正在吞噬世界. -马克·安德森 软件公司正在吞噬那些稳定的具有领导型的传统大企业.像Square.Uber.Netflix.Airbnb和Tesla这样的公司继续拥有快速增长的私有市 ...

  7. 深入微服务 API 网关之架构实践篇

    以下文章来源方志朋的博客,回复"666"获面试宝典 随着这些年微服务的流行,API网关已经成为微服务架构中不可或缺的一环.一方面它承担着服务对外的唯一门户,一方面它提取了许多应用的 ...

  8. 迁移到MySQL的业务架构演进实战

    来自:DBAplus社群 作者介绍 杨建荣,dbaplus社群联合发起人,竞技世界资深DBA,前搜狐畅游数据库专家,Oracle ACE,腾讯云TVP.具有十多年数据库开发和运维经验,目前专注于开源技 ...

  9. 针对ASP.NET Core Web API的先进架构

    \ 本点要点 \\ 与传统的ASP.NET相比,ASP.NET Core的新架构提供了一些好处\\t ASP.NET Core从一开始就包含对依赖注入的支持\\t 单一职责原则简化了实施和设计.\\t ...

最新文章

  1. 《Redis入门指南(第2版)》一第2章 准备
  2. Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx
  3. spring中配置properties资源文件
  4. 使用Base64加密URL
  5. 求斐波那契数列前n项的值
  6. Java IO模型:BIO NIO AIO及netty介绍
  7. python3 连接数据库
  8. 唯品会在 Flink 容器化与平台化上的建设实践
  9. php符号 set,PHP 符号大全
  10. 几秒之后自动关闭广告
  11. chatterbot mysql_ChatterBot代码解读-介绍和框架
  12. python包管理工具pip的使用
  13. nginx upstream配置_效率倍增!网易杭研Nginx自动扩缩容实践
  14. 【Python】爬取TapTap原神评论并生成词云分析
  15. 磁性元件:初始磁导率、有效磁导率、品质因数、矫顽力、电感因数。。。。。
  16. Java【递归及过滤器】
  17. 量化交易让股市成为你的印钞机
  18. html 苹果app安装app,未越狱的苹果手机如何安装非App Store的应用?
  19. 英国4g网络频段_英国需要网络会议
  20. MATLAB 矩阵处理及多项式计算

热门文章

  1. 人工机器:jetbot小车密码
  2. 八种Docker容器开发模式解析
  3. 指定输出路径_新手Python必须知道的文件路径和变量命名技巧
  4. vcf文件(call variants得来的)怎么看变异是纯合还是杂合的
  5. Cocos2d-x 3.1.1 Lua演示样例 ActionManagerTest(动作管理)
  6. 分布式设计与开发(一)------宏观概述
  7. .NET Remoting开发系列:(三) Remoting服务发布方式
  8. 浅谈ICMP Flood***原理
  9. shell输出没有换行符
  10. flink sql planner到底是干嘛用的