HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

发布了 946 篇内容, 共 538.2 次阅读, 收获喜欢 1105 次。

关注

评论

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

Dubbo 接口,导出 Markdown ,这些功能 DocView 现在都有了!

程序员小航

markdown idea插件 IntelliJ IDEA 文档生成 Doc View

前嗅教你大数据——什么是代理IP?

前嗅大数据

爬虫 数据采集 静态IP 代理IP 动态IP

SQL数据库:窗口函数

正向成长

窗口函数

#不吐不快# CV千千条,修改最重要。代码不规范,伙伴两行泪!

程序员小航

奇葩的经历 不吐不快

圆通快递回应内鬼泄露用户信息:严打数据倒卖灰色产业

石头IT视角

synchronized 到底该不该用

古时的风筝

Java synchronized

MySQL从库维护经验分享

Simon

MySQL 主从复制

Glide.with(view)挂在了谁的生命周期上

mengxn

生命周期 Glide Activity Fragment

DàYé的CTO姗姗学步路

曲水流觞TechRill

管理 CTO

SpringBoot:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)

比伯

Java 编程 架构 面试 计算机

【涂鸦物联网足迹】涂鸦云平台消息服务—顺带Pulsar简单介绍

IoT云工坊

人工智能 物联网 云服务 Apache Pulsar 云平台

太赞了!腾讯T3-3架构师整理了5000页的Java学习手册免费开放下载

Java架构之路

Java 程序员 架构 面试 编程语言

CSS 排版与正常流 —— 重学CSS

三钻

CSS 排版

什么是云服务?

anyRTC开发者

音视频 WebRTC 云服务 RTC

IoT企业物联网平台,从设备端到云端业务系统全链路开发实战

不吃米饭

阿里云 最佳实践 物联网 IoT

云原生2.0时代下,DevOps实践如何才能更加高效敏捷?

华为云开发者联盟

云计算 数字化 华为云

什么是低代码(Low-Code)?

移动研发平台EMAS

工具 研发效能 低代码 开发 代码

#不吐不快# 三观很正的Boss,你遇到过么?

架构精进之路

职场成长 奇葩的经历 不吐不快

一瞬间让我秒变“快男”!腾讯内部强推Java性能优化手册,快了不止一点点。

Java架构追梦

Java 架构 jdk 面试 性能优化

高性能利器!华为云MRS ClickHouse重磅推出!

华为云开发者联盟

数据库 Clickhouse MRS

一次 Java 进程 OOM 的排查分析(glibc 篇)

996小迁

Java 编程 架构 面试 计算机

【活动回顾】WebRTC服务端工程实践和优化探索

ZEGO即构

WebRTC 服务端工程

Nginx-技术专题-技术介绍

洛神灬殇

Jira停售Server版政策客观解读——如何最小化风险?

爱吃小舅的鱼

项目管理 研发管理 Jira Atlassian

科普干货|漫谈鸿蒙LiteOS-M与HUAWEI LiteOS内核的几大不同

华为云开发者联盟

华为 鸿蒙 IoT

年轻人不讲武德不仅白piao接口测试知识还白piao接口测试工具会员

测试人生路

接口测试

小学妹问我:如何利用可视化工具排查问题?

田维常

可视化

分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定

互联网应用架构

分布式事务 springboot

《垃圾回收的算法与实现》.pdf

田维常

垃圾回收

区块链,音乐,流媒体和版税

CECBC

区块链 艺术

区块链在债券市场如何应用

CECBC

区块链 债券

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