【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

逃离 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:115431
用户头像
李冬梅 加V:busulishang4668

发布了 819 篇内容, 共 388.0 次阅读, 收获喜欢 1006 次。

关注

评论

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

这几款小程序插件可以让效率翻倍

Geek_99967b

小程序

webpack热更新原理(面试大概率会问)

Geek_02d948

webpack

全彩LED显示屏在单位形象的作用

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

Python基础(十四) | Python之禅与时间复杂度分析

timerring

Python 时间复杂度 10月月更 python之禅

说说Nodejs高并发的原理

coder2028

node.js

如何制作企业在线产品手册?这里有一些简单的方法!

Baklib

阳振坤:分布式技术引领关系数据库发展

OceanBase 数据库

webpack模块化的原理

Geek_02d948

webpack

爬虫练习题(五)

张立梵

Python. 10月月更 爬虫案例

展示出你的创意,知识库搭建也可以这样玩!

Baklib

如何打造优秀的客户体验?

Baklib

客户体验 客户体验管理

企业级低代码开发平台有哪些?

优秀

企业级低代码平台 企业级低代码

DataOps核心理念是什么?包括哪些模块?

雨果

DataOps

深度理解NodeJS事件循环

coder2028

node.js

Apache SeaTunnel(Incubating) 2.2.0-beta 版本发布!API 重构,连接器与引擎解偶

Apache SeaTunnel

数据同步 Seatunnel 版本发布 数据集成平台 新版本/特性发布

如何搭建知识库网页?

Baklib

实验精神终将胜利:量子纠缠的祛魅七十年

脑极体

为什么最近关注“元数据”的人突然增多?

雨果

元数据 元数据管理 元数据管理平台

数字化转型最核心的是数据吗?不,是数据思维

雨果

数字化转型 数据思维

KunlunBase功能体验范例

KunlunBase昆仑数据库

MySQL 数据库

5分钟带您了解DSL、以太网线缆和光纤之间的区别,值得收藏!

wljslmz

dsl 光纤 以太网 10月月更

小程序容器技术,或许是提升智能设备安全等级的又一解决方案

Speedoooo

浏览器安全 小程序容器

一文了解 Python 中的对象比较方法 is 和 ==及其本质

宇宙之一粟

Python 10月月更

量化自动套利分红机器人系统开发(成熟技术)

开发微hkkf5566

详解webpack构建优化

Geek_02d948

webpack

企业如何低成本快速搭建团队知识库,实现企业知识管理?

Baklib

【指针】有哪些类型?

Geek_65222d

10月月更

强引用、软引用、弱引用、幻象引用的区别

zarmnosaj

10月月更

外包学生管理系统

早安

架构

【一Go到底】第十天---位运算and移位运算符

指剑

Go golang 10月月更

英国国民信托 CIO:如何讲好可持续发展故事

雨果

CIO

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