写点什么

逃离 AWS 后,我们将服务器的年开支省下了 80%

  • 2022-10-08
    北京
  • 本文字数:2245 字

    阅读完需:约 7 分钟

逃离AWS后,我们将服务器的年开支省下了80%

近日,skilled.dev 和 gitconnected.com 网站的创始人 Trey Huffine 采访了 Prerender.io 的首席工程师兼经理 Zsot Varga。Zsot 告诉大家,Prerender 设法摆脱了对 AWS 的依赖,并构建了内部基础设施来处理流量和缓存数据,这一做法为他们节约了 80 万美元的年开支。

 

“目标是降低成本,同时保持相同的渲染速度和服务质量。像这样的迁移工作需要周密的计划和认真的执行,因为不正确的配置或执行不力会让客户网页和社交媒体按钮挂掉,影响他们的搜索排名,并可能增加我们的流失率。”

Pretender 公司简介


Prerender 提供的服务是缓存和预渲染客户的JavaScript页面,给搜索引擎提供一个纯 HTML 文件来抓取和索引。客户只需在自己的网站上安装一个中间件就能搞定了。这个服务需要云端处理数据,所以 Pretender 选择了 AWS,之前每分钟能处理 7 万个页面,存储了 5.6 亿个页面数据,每年的 AWS 费用超过一百万美元。而三个多月的迁移工作完成后,总成本下降了 80%。

迁移计划


Pretender 在AWS的开销主要分为两部分:

 

  • 数据缓存。预渲染的页面都得存在 AWS 服务器上,然后搜索引擎爬取的时候提供静态页面,网站用户点击时提供动态 JS 页面。存储、维护费用是很高的。

  • 流量成本。把数据导入 AWS 是免费的,问题是实践中这些数据还要被经常读取,这个费用也不容小觑。

 

所以他们的解决方案也很简单,将缓存的页面和流量迁移到 Prerender 自有的内部服务器上,尽量摆脱对 AWS 的依赖。一开始 Pretender 估计成本能砍掉 40%,但除了降本,渲染速度和服务质量是不能打折的。

 

谨慎起见,Pretender 规划了三阶段的迁移计划,可以随时在客户无感知情况下回滚。不过系统性测试需要持续跑几周甚至几个月。

分阶段迁移

第 1 阶段:测试(4 到 6 周)


第 1 阶段的主要工作是设置裸金属服务器,先在容易管理的小规模集群上测试,然后再扩展上去。这个阶段需要的软件适配工作是最少的,所以团队决定跑在 Linux 上的 KVM 虚拟化环境里。

 

5 月初,第一批服务器上线,1%的 Prerender 流量被定向到新服务器。迁移两周后,日成本就已经下降了 800 美元。到月底,大部分流量负载都从AWS迁移走了,每日 chrome 渲染负载成本降低了 45%。

 

当时的服务端成本是每月 13,000 美元,综合来算开支削减了 22%。


测试阶段对后面的工作非常重要。团队在已有监控板之外还做了一个新的渲染监控仪表板来加强可观测性。之后一切顺利,第二阶段启动。


第 2 阶段:技术设置(4 周)


第二阶段时间是 6 月至 7 月初。主要工作是将缓存移动到裸金属服务器上。

 

6 月中旬,Pretender 自有的 300 台服务器缓存页面总数达到了 2 亿。注意这些服务器上都使用了 Apache Cassandra节点,这种节点是和 AWS S3 兼容的,确保平滑迁移。

 

线上迁移分为四步,每两步之间相隔一两周。团队首先测试了 Prerender 页面是否可以同时缓存在 S3 和 minio 对象存储中,显然没什么问题。之后流量逐渐从 AWS S3 转移到 minio 上。迁移完成后又节省了每天 200 美元的 S3 API 费用,缓存在 Cassandra 集群中的数据也准备删掉了。现在服务器成本从 AWS 上的 3.5 万美元每月降到了自有服务器的 1.4 万美元每月。

 

AWS 上还剩下一点数据,每天开销大约 60 美元,但过几星期这些数据就自然过时不用了。之所以不选择一次性把这些数据都迁走,是因为数据迁移出 AWS 时还要一次性浪费 5000 美元的转出流量费用。所以这里就是一个坑:数据导入 AWS 不收钱,提取出来可就不一样了。另外不同地区的流量费用可能还有差异,比如说亚太的流量费用就比北美的要高不少。很多公司都对这方面的成本稀里糊涂,莫名其妙就花了冤枉钱。还好 Pretender 算好了这部分支出,没有一激动就把数据迁走而是等它自己过期。第二阶段结束后,总成本下降幅度从第一阶段的 22%来到了 41.2%。


第 3 阶段:实施和扩展(4 到 6 周)


剩下的工作就是把其他数据都迁到自有服务器上。这一步需要迁移所有 Amazon RDS 实例,而且得一个切片(shard)一个切片移动。这一步最容易出错,不过因为剩下的数据也不多了,所以就算出问题也没什么大影响。具体的步骤是:

 

  • 在 Cassandra 集群中存储 cached_urls 表的 PostgreSQL 分片镜像;

  • 将 service.prerender.io 切换到 Cloudflare 负载均衡器,提供动态流量分配;

  • 启动新的私有重缓存服务器,位于欧洲;

  • 持续压测,解决各种性能问题。

 

最终迁移圆满成功。所有缓存页面都被重定向后,每月的服务器费用下降了 80%,远超之前 40%的预测。

迁移经验和总结


大规模迁移过程中一旦出现问题或者进度落后,都可能造成巨大风险。所以 Pretender 在每个迁移阶段都有故障安全措施,一旦出问题就会回退。另外迁移之前要先在小集群上做好测试。迁移的计划都要精心制定,每一步扩展到大规模之前都要做测试,这样风险就是可控的。

 

Zsot 还谈到了关于 Pretender 公司与他个人的一些事情。

 

  • Pretender 提供的服务能让客户把关注的焦点从网站 SEO 转移到用户体验上。这样客户想用 JS,想用 React,想用什么动态页面都不用担心影响 SEO 排名了。

  • 公司使用的技术栈就是 JS,毕竟业务就是针对 JS 页面的。针对全球部署,公司选择的是 CloudFlare;公司还选择了 DigitalOcean 来保证可用性,以及其他很多 SaaS 服务来提升效率。

  • Zsot 自己家里放了 8 台服务器,不过平时的工作都是用 Macbook 完成的。玩游戏的时候就找 Windows 笔记本,平板自然也不缺。

  • Zsot 日常主要用 VSCode,最近还在尝试新出的 Copilot。代码仓库主要用 GitHub,GitLab 也会用。消息应用主要是 Slack,这些天 Zsot 还发现了 Spike 这个电子邮件客户端很好用。主力容器工具是 Docker,K8s 也在适应中。

 

原文链接


https://levelup.gitconnected.com/how-we-reduced-our-annual-server-costs-by-80-from-1m-to-200k-by-moving-away-from-aws-2b98cbd21b46


2022-10-08 18:115939
用户头像
李冬梅 加V:busulishang4668

发布了 963 篇内容, 共 560.7 次阅读, 收获喜欢 1119 次。

关注

评论

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

StarkNet新手入门教程:教你用bitget 钱包入门

大瞿科技

怎样降低LED显示屏模组的成本

Dylan

科技 LED显示屏 户外LED显示屏 led显示屏厂家 户内led显示屏

专为大模型训练优化,百度集合通信库 BCCL 万卡集群快速定位故障

百度Geek说

程序员有哪些常用的技术网站呢?

小齐写代码

从原理到实践,大咖带你拆解人工智能的神秘面纱

霍格沃兹测试开发学社

Linux网络配置文件:MAC,UUID,设备名,子网掩码,网关,DNS等底层结构、架构图,工作原理 ,使用场景详解

百度搜索:蓝易云

Linux 运维 Mac DNS 云服务器

Anthropic Claude 3 Sonnet 基础模型现已登陆 Amazon Bedrock

亚马逊云科技 (Amazon Web Services)

生成式人工智能

浅谈漏洞扫描技术

于顾而言

网络安全 云安全 漏洞扫描 漏洞检测 web漏洞

文本溢出解决text-overflow: ellipsis;不生效的问题

百度搜索:蓝易云

云计算 Linux 运维 云服务器 ECS

Amazon Bedrock 上的新一代 Anthropic 模型 Claude 3

亚马逊云科技 (Amazon Web Services)

生成式人工智能

更无缝地管理 API 访问

Gingxing

kong API网关 Kong 网关 消息网关 Kong Gateway

Apollo配置中心介绍

百度搜索:蓝易云

云计算 Linux 运维 云服务器 Apollo

SAAS系统建站的优势是什么

百度搜索:蓝易云

云计算 Linux 运维 SaaS 云服务器

速存,详细罗列香橙派AIpro外设接口样例大全(附源码)

华为云开发者联盟

开发 华为云 开发板 昇腾AI处理器 华为云开发者联盟

AI加速“应用现代化”,金融核心系统转型正当时

华为云开发者联盟

云计算 华为云 华为云开发者联盟 华为云CodeArts 华为云盘古大模型

QCN9274/WiFi 7: Exploring the cornerstone of the next generation of digital life

wallysSK

让运维无忧,实战解析巡检报告功能实现方案

袋鼠云数栈

大数据 运维 大数据运维 巡检报告

Apps分类:深度解析多维度标准与应用领域

天津汇柏科技有限公司

创业 软件开发 小程序开发 app定制开发 软件开发定制

读架构整洁之道的一些感悟

于顾而言

架构设计 架构设计原则 编程范式

【案例分析】一个小型数据管理系统

贺公子之数据科学与艺术

用几张图实战讲解MySQL主从复制

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟

Java 枚举(Enums)解析:提高代码可读性与易维护性

小万哥

Java 程序人生 编程语言 软件工程 后端开发

马斯克和OpenAI:分手,不要体面

脑极体

AI

C++中的const成员变量和成员函数

百度搜索:蓝易云

c++ Linux 运维 云服务器 const

智能便捷|AIRIOT智慧充电桩管理解决方案

AIRIOT

物联网平台 智慧系统 智慧充电桩

StarkNet新手入门教程:教你用bitget 钱包入门

石头财经

技术管理者如何避免被裁掉(2)

芃篙君

管理

《操作系统导论》PDF

程序员李木子

aigo发布“国民好物合创工程” 携京东、HICOOL助力中小微企业走向科技发展之路

ToB行业头条

在k8s中用label控制Pod部署到指定的node上

百度搜索:蓝易云

云计算 Linux Kubernetes 运维 云服务器

【论文速读】 | AI驱动修复:漏洞自动化修复的未来

云起无垠

逃离AWS后,我们将服务器的年开支省下了80%_数据库_Trey Huffine_InfoQ精选文章