首页
学习
活动
专区
圈层
工具
发布

Etsy 的移动应用持续部署实践

•自动任务完成发布分支的创建和预发布版本的准备工作 •Ship 获取了这个消息,并 给验收测试团队发送一封邮件....Ship 会统计分析这些数据,来评估影响哪些工程师会出现版本影响人员列表,这个列表会作为邮件通知的重要依据,以保证关联人员可以及时获取信息。...此外,在发布过程中,工程师可以登录改变他们的通知状态,他们往往是因为需要获取更多版本信息,或者 Ship 错误识别了代码改动信息,并把他们添加到了不需要的版本通知列表中。...我们采用 Deployinator 基于几个以下几个原因: •Etsy 的工程师非常熟悉这个平台 •通过一键操作封装复杂的发布过程操作 •便捷的日志提取和错误追踪功能 在我们的系统中采用了 cross...Connect 我们使用 Spaceship 来实现非官方的 API 的调用。

1.1K00

超 1.7 万个 JavaScript 文件,Etsy 大型代码库如何完成向 TypeScript 迁移?

该函数可以将任何旧的字符串作为参数接受,但是如果它使用这个字符串来创建元素,那么最好能够确保该字符串实际上是一个真正的 HTML 元素的名称。...几乎我们网站上所有的数据都是通过 Etsy API 实现的,所以如果我们能在那里提供类型,我们很快就可以涵盖大部分的代码库。...Etsy 的 API 是用 PHP 实现的,并且我们为每个端点生成 PHP 和 JavaScript 配置,从而帮助简化请求的过程。...结果是,类型中存在一个循环依赖关系,它帮助我们创建不可变的对象的内部实用程序。...为了避免这种过早地采用,我们编写了一个简单的 git 提交钩子,禁止不属于安全列表的用户修改 TypeScript。当一个团队准备好时,我们只需将他们加入到安全列表即可。

88810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    被升级整疯了,Etsy 放弃 React

    开发人员一般都比较喜欢 React 16 的新特性(例如,error boundaries、fragments、错误堆栈跟踪、自定义 DOM 属性、React 16.8 中的 hooks),虽然 React...我们遇到了一个错误,花了 2 天时间才找到对应的 library,你可能也会遇到同样的问题。”...但是, Preact 的 API 与 React 兼容,这意味着团队不用进行任何更改。...Sangster 强调说:“我们有很多古老的‘无主’代码和很多旧的库,升级到 React 16 会导致一些 API 问题(尤其是 Portals/legacy Context/refs),需要做大量的工作才能够解决...使用 codemods 以迁移至“现代”React 生命周期方法(不算是硬性要求,因为 Preact 也完全能够支持同一 API 的两个版本,但我们觉得这是个很好的长期发展目标)。

    63241

    【错误记录】HarmonyOS 编译报错 ( 创建与 DevEco 版本不匹配的 API 版本 | No matching version found for @ohoshypium@1.0.11)

    一、报错信息 在 DevEco Studio 4.0 中 , 创建 API 8 的 鸿蒙应用 , 发现 在进入界面后 , 首次编译 , 就出现报错的情况 , 报错信息如下 : D:\001_Develop...翻译后就是 没有找到与 @ohos/hypium@1.0.11 版本匹配的软件包 ; 该 DevEco Studio 4.0 开发环境 , 匹配的是 API 9 , 如果创建 API 8 的相关应用 ,...会出现一些匹配问题 , 本次报错就是该问题 ; 在项目根目录下的 build-profile.json5 配置中 , 配置的 SDK 版本都是 API 8 版本 ; 完整配置如下 : { "app...] } ] } ] } 但是在 项目根目录下的 package.json 包配置中 , 配置的 @ohos/hypium 版本为 1.0.11 , 这是 API...9 使用的版本 , 该版本对于 API 8 来说有点高 ; 将 @ohos/hypium 版本改为 1.0.5 与 API 8 正好匹配 ; package.json 包配置 完整带代码 : {

    1.6K10

    如何正确选择一个云服务商?

    自从2005年 Etsy 网站开始运营,Etsy.com 和大多数相关的服务就被部署在自托管的数据中心。今年早些时候,我们决定评估是否要把所有服务部署到云上。...这标志着Etsy从自托管转为选择了一流的提供商。 这使得我们在维护基础设施上节省了时间,而可以在战略特性和服务上投入更多的精力,从而巩固了Etsy市场。...例如:我们不仅仅需要知道MySQL数据库的延时容忍度还包括新增和删除数据API对数据仓库的需求。为了方便收集所有的需求,我们使用RACI模型来确定子项目的关系。...我们定义了一些关键指标用于选择在云环境中创建基础设施的工具,包括:高灵活性、可靠性、安全性和集中访问控制。我们的预备团队借助这些指标评估了几个工具,在架构审查中讨论并提出了新的流程。...很明显,根据上文 Etsy 的决策矩阵应该只适用于 Etsy(根据 Etsy 的需求填写,由 Etsy 的工程师做权重排名)。

    2.6K60

    改善十年应用的部署体验

    三年前,Etsy 向云端迁移时,这种蓝绿部署的方法被“提升和转移”。...第一个限制是,我们不能使用单一的负载均衡器活 API 断电来控制流入流量的数量。...但是,Etsy 的 PHP Web 应用是搜索应用的唯一客户端。对于 Etsy,这是一种常见模式,因此,配置负载平衡通常是直接在 Web 应用本身中进行管理。...具有预先定义的流量比例的部署阶段被硬编码到系统中,当在当前滚动发布阶段中添加的所有 Pod 都完全创建并正常运行时,Switchboard 就会过渡到下一个阶段。...Smoke 测试在部署的不同阶段运行,向新的一端发送人工创建的和真实的历史搜索查询请求。开发人员只需监控图表,以确保滚动发布的工作顺利进行。

    51030

    如何做一次高效的事故复盘?

    此外还有一个长长的改进任务列表,列出各种长期或者短期的任务,从流程上或者意识上避免再犯类似的错误。往往能看到一些诸如参加安全操作培训,以后线上操作更小心之类的改进事项。...很遗憾任务列表上的任务往往很少得到跟进。 这种复盘,是一种Blame Game(即甩锅游戏),是不适应现代快速发展的系统架构和云基础设施的要求的。...另外,回到人为错误上,犯错误本身就是做创新性工作的不可避免的副产品。现在的竞争环境下,要求我们以越来越快的速度进行迭代和试错。所以每天10+的部署也是很正常的一件事情。...他在该博文上描述在他们Etsy公司进行Blameless PostMortems的做法和考虑。为什么要这么做呢?...所以该办法并不是保证工程师犯错误可以免除惩罚,而是更关注获得重要现场信息来持续对系统进行改进,避免错误重复发生。

    1.8K20

    DevOps 三步工作法之持续反馈的技术与案例

    书中提到了Etsy公司的监控实践,简单介绍一下Etsy公司,这本书的作者是三步工作法公司的CTO,Etsy公司是做垂直电商卖一些小众的手工艺品。...Etsy在公司的监控实践里,它2009年就开始从传统的运维模式向DevOps转型,到2011年,这本书的作者认为Etsy这个公司已经转型的差不多了,是一个比较成熟的DevOps公司。...第三,书中还提到在构建监控能力时,应该尽可能把监控能力服务化,包括哪些能力是可以给用户自助去完成的,或者提供可二次开发的API给开发团队,让他们按照他们的使用场景去封装。...例如像Fatal的错误,致命的错误,可能我们在设计一个告警能力的时候,它就应该打电话,如果只是警告的级别,可能隔天发一个统计的邮件让我们去处理。...最好的状态是日志不落地,直接通过API的形式,应用程序直接把它的流的数据上报上来。

    1.7K70

    REST API有关幂等性等11条最佳实践

    在我的职业生涯中,我使用了数百个 REST API 并制作了数十个。由于我经常在 API 设计中看到相同的错误,因此我认为写下一组最佳实践可能会更好。...Etsy 的新API充满了这样的东西: # GOODGET /v3/application/listings/{listing_id}# BADPATCH /v3/application/shops/{...# BAD{ "id": 123 }# GOOD{ "id": "123" } 优秀的 API 将比您、您的实现代码以及创建它的公司更长久。...如果发生错误,客户端无法知道服务器上的操作是否成功完成。如果客户再次提交订单,我们可能会创建重复订单(“至少一次”)。如果客户不重新提交订单,我们可能会丢失订单(“最多一次”)。...糟糕的选项:提供一个端点来列出最近的交易 如果 API 未提供任何有关幂等性的显式帮助,则这是客户端开发人员的解决方法: 每次提交之前,从服务器获取最近事务的列表。

    1K20

    PHP的现代复兴:从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡

    这些误解包括但不限于:“PHP只是模板引擎”:错误观点:认为PHP只能混编HTML做简单页面现实情况:现代PHP完全分离视图层,如Laravel Blade是独立模板引擎“PHP性能低下”:错误对比:拿...>现代PHP开发模式:纯API服务:// Laravel路由示例Route::get('/api/products', function() { return response...()->json( Product::select('id','name')->paginate(20) );});专业前端协作:前端:Vue/React通过axios消费API后端...严格类型检查 }}类型系统演进:PHP5:参数无类型PHP7:标量类型声明PHP8:联合类型、mixed类型、返回类型静态分析这使得现代PHP代码能获得IDE的智能提示和静态检查,大幅降低运行时错误...四、成功企业的技术选型案例4.1 全球独角兽的PHP实践Vimeo:全球第二大视频平台完全基于PHP+HackLang日均视频处理量:150万+Etsy:手工电商巨头PHP服务+React前端2023年

    44600

    手工艺品电商平台Etsy的个性化推荐

    摘要:本文介绍了手工艺品电商平台Etsy的个性化推荐算法实践及优化思路,计算过程分为基于历史数据建模和计算推荐结果两个阶段,采用的手段主要包括矩阵分解、交替最小二乘、随机SVD(奇异值分解)和局部敏感哈希等...然而,我们注意到,使用这种方法时,我们不能采用在ALS中使用的优化方法:为错误值赋于同样的“权重”的方法。但是对于某些数据集,如果其零的个数没有压倒性的超过非零,则此方法是可行的。...我们还使用这个方法产生除了用户喜好以外其他物品清单的向量,例如珍藏品,或者其他用户在Etsy创建的列表。用这种方法,我们可以从其它清单中,推荐其他相关物品。...店铺多样性:Etsy是一个由众多卖家组成的市场。为了公平对待这些卖家,我们限制了展现给每个用户的同商铺推荐结果数。...相似用户的物品重排列:我们使用LSH代码找到用户之间的最近邻(所以对每个用户,我们可以发现与其有相同兴趣爱好的用户)然后为了产生物品推荐的结果,我们可以利用这些用户的喜好列表,根据物品向量和目标用户向量之间的内积重新排列它们

    71630

    美国电商平台的个性化推荐算法实践及优化思路

    本文介绍了手工艺品电商平台Etsy的个性化推荐算法实践及优化思路,计算过程分为基于历史数据建模和计算推荐结果两个阶段,采用的手段主要包括矩阵分解、交替最小二乘、随机SVD(奇异值分解)和局部敏感哈希等...然而,我们注意到,使用这种方法时,我们不能采用在ALS中使用的优化方法:为错误值赋于同样的“权重”的方法。但是对于某些数据集,如果其零的个数没有压倒性的超过非零,则此方法是可行的。...我们还使用这个方法产生除了用户喜好以外其他物品清单的向量,例如珍藏品,或者其他用户在Etsy创建的列表。用这种方法,我们可以从其它清单中,推荐其他相关物品。...店铺多样性:Etsy是一个由众多卖家组成的市场。为了公平对待这些卖家,我们限制了展现给每个用户的同商铺推荐结果数。...相似用户的物品重排列:我们使用LSH代码找到用户之间的最近邻(所以对每个用户,我们可以发现与其有相同兴趣爱好的用户)然后为了产生物品推荐的结果,我们可以利用这些用户的喜好列表,根据物品向量和目标用户向量之间的内积重新排列它们

    1.7K80

    什么是DevOps?

    Ops说Dev给他们提供了错误的工件。Dev说在测试环境中一切都运行良好。生产环境不是开发人员和质量保证人员的职责,所以当Ops花费整晚的时间来解决生产问题时,他们不会插手。...该团队计划如何创建可用于部署的工作软件。 每天,当开发人员完成代码时,都会部署新的代码。自动化测试确保代码可以部署。在代码通过所有自动化测试之后,它将被部署到少数用户中。...DevOps社区将位于DevOps连续体右上方的组织称为粉色独角兽,因为目前这种组织太少了.这些独角兽公司中最流行的示例是Netflix、Etsy、亚马逊、Pinterest、Flicker、IMVU和谷歌...Netflix、Etsy、亚马逊、Pinterest、Flicker、IMVU和谷歌都是进行持续部署的公司的成功示例。 6 DevOps的价值是什么?...这些基础设施具有api,允许您使用配置管理工具(如Puppet和Chef)以编程方式创建新机器。也有私有云。例如,VMware有vCloud。私有虚拟基础设施允许在数据中心的硬件上运行云。

    1.2K40

    优化软件交付:部署和发布明显区别

    它是 SDLC 的最后阶段,跨域执行 将用户暴露于软件中的错误版本、错误和问题的风险更高。 但是,由于部署发生在受控环境中,因此将用户暴露于容易出错的构建的风险低于发布。...测试阶段确保构建中没有错误和漏洞。但是,部署准备情况需要全面检查。...您可以利用 DevOps 文化并为软件发布创建有凝聚力的策略。DevOps 的众多好处之一是更快地解决导致快速发布的问题。...因此,他们结合使用 DevOps 和 CI/CD 来创建可靠的交付机制。 将版本容器化以获得更高的灵活性 容器化是一种进程隔离方法,可以降低不同环境中的复杂性。...Etsy 的瀑布问题和解决它的 DevOps 策略 Etsy拥有由开发人员、数据库管理员和操作人员组成的孤立团队,使得发布成为一项艰巨的任务。他们花了数周时间才准备好构建。

    2.3K41
    领券