CatCoding

第 2 期:云服务架构节省成本;Notion 创始人的访谈;Linux 复杂么

2022-02-24

这是我的 Newsletter 第 2 篇。

我很喜欢玩乐高,我发现很多好的抽象、设计的使用体验就像玩积木,比如现在这些迅猛发展的云服务、比如 Notion。每个组件都不复杂,掌握规律后很容易组合成我们想要的作品。

云服务架构节省成本

  • 以不到 400 美元处理每月 80TB 和 500 万的访问量

How we handle 80TB and 5M page views a month for under $400 – Poly Haven Blog

云服务这些东西用起来虽然方便,但是很容易出现资源浪费。我之前的公司一直使用 AWS,后来管理层觉得钱花得实在有点多,后来我们部门稍微优化一段时间,成本降下 1/3。

这篇文章详细讲述了 Poly haven 如何通过各种云服务来应对大量数据请求。

Poly haven 是一个专门用来让游戏开发者共享资源的网站,比如模型、纹理等等。这个组织非常透明,他们接受捐赠,然后把所有的花费都显示在个页面上:Finance Reports • Poly Haven

节省成本的方法简而言之就是缓存一切能缓存的东西,让缓存的命中率尽量地高。

缓存主要使用 Cloudflare 当 CDN,Cloudflare 和用来替代 S3 的 Backblaze 之间有流量联盟,一起用的话存储就不要钱了。

Google Firestore 用来作 Database,Vercel 用来跑 Web Server,系统中还有个 Vultr 服务器专门跑 API。我觉得这个 Vultr 跑的 API 是不是可以换成 AWS Lambda 一类的东西?至少没有单点问题,不过费用上不知道会不会更贵点。

顺便分享一下,我最近把自己的站点从 Vultr 迁移了出来,因为我的服务器跑了很久了,一个偶然的因素我重启了一下服务器,然后就 …… 再也起不来了,我的网站也处于停服状态。

我立马给 Vultr 发个 Ticket,这是我得到的回复:

我看了头大,一狠心就往 Github Pages 上移。过了不到一个小时他们客服问我解决了么,我回答说:Yes, What I’m doing is migrating to Github Pages, and I’m almost done.

原本我认为搞什么 ssl 证书会麻烦点,没想到 Github Pages 已经和 Let’s encrypt 集成了,不用管服务器真是香!

未来做业务的大部分公司,可能更需要的是对各种云服务非常了解的架构师,这种架构就有点类似自由式乐高,我们需要对组件了如指掌才能搭出节省成本的作品。

Notion 创始人的一个访谈

Notion CEO Ivan 专访:即使不会编程,人人都可以成为工作达人 - Linmi

Notion 的“积木感”在于页面无限嵌套,也在于一个简单的 ‘/‘ 让你选择下一个零件。

Notion 是由华人 Ivan 创建的,好像很多人都不知道这点,毕竟大家都还在吐槽 Notion 的中文支持得不够好和国内访问都不稳定。

这是创始人 Ivan 两年前接受韩国媒体的访谈,如果你对 Notion 感兴趣应该去看看。其中谈到了 Notion 的设计原则:

Q:有人说 Notion 简洁和直观性和苹果公司很像。

A:简洁是 Notion 的重要价值。用户们应该感到轻松和易于操作。品牌也是如此,我们希望用户想到 Notion 的话就能想到‘铅笔’。要像身体的一部分一样,成为自然而熟悉的工具。即使不会编程,也要让每个人都能直观地用鼠标解决所有问题。我们觉得自己是制作工艺品(craft)等工具的艺术家。

Q:Notion 的简洁感的哲学基础是什么?

A:我出生在中国,儿时移居加拿大。所以很熟悉东亚的儒学。Notion 的设计和开发哲学也与‘中庸’的概念有着深刻的共鸣。比起过分强调功能或追求变化,更保守地包含了克制。比起华丽,我们更愿意把注意力集中在本质问题上,我们提供有需要的东西用在很多人遇到的共同问题上。

2013 年,曾是 Zhao 的朋友的 Simon Last 在美国旧金山创立了 Notion 公司。最初开发的项目是‘代码制作应用’,但最终还是失败了。他回忆道:“当时只集中于想展现给世人的东西,但并不知道世界想要什么”。之后,他于 2015 年和 Last 一起来到日本东京并在那里停留了 1 年,构想了现在的 Notion。他在解释选择日本的理由时说:”需要一个语言不通的地方来一整天的集中精力去编程。”

我的感受是,很多好的产品都是非科班出生的人创造出来的,他们可能是学艺术、设计、心理学的等等,而经过了科班训练的人似乎更难找到世界的真实需求,大概是因为很多时候大家在拿着锤子找钉子。

这让我想到吴军地浪潮之巅里描述到的:

一个进入了麻省理工学院的高中毕业生很明确是为了学习理工的,而他们周围的同学也是如此。这些年轻人在一起不断交流,彼此在技术上越来越精深,内境逾宽、外延逾窄。

我和麻省理工学院的一些博士生谈论过各种浏览器的好坏,他们不和你谈微软的 IE 或者 Mozilla 的火狐,而是 Unix 用户更常用的字处理器 Emacs 下一个很小的浏览网页的功能,这个东西不仅不好用,而且在全世界用它的网民连万分之一都不到。他们和你谈的是里面技术上谁实现的好。

这些人以后可以是很好的科学家和工程师,但是很难创业。

Linux 复杂么

Linux 为什么如此复杂?这个 Quora 回答得很好,Linux 对比起来可能没有大多数用户熟悉的 GUI,命令行需要一段时间来学习如何使用。

但这只是表面的复杂,在内核设计上 Linux 相比 Windows 更简单。这是 2008 年某个安全人员绘制的 Windows 上运行 MS web-server (IIS) 和 Linux 上运行 Apache 的函数调用图:

IIS on WindowsIIS on Windows

Apache on LinuxApache on Linux

如果这是积木说明书,我当然更愿意玩第二个!

其他

huacnlee/autocorrect: 我的文档里中英文之间必须加空格,如果你也有这种偏执的话就试试这个工具。我把这个工具加到了 CI 里,这样我发布的文章都没有空格问题了。

Tailwind CSS Tutorial - YouTube: 学习 Tailwind CSS,这周我看完了这系列视频。在这个视频里作者从开始如何安装介绍,做了一个食谱的前端页面,过程非常详细。我理解 TailwindCss 主要还是一个更好用的原子化 CSS,感觉用起来很方便,借助 VSCode 的补全,用熟了会很有效率。

程序员做饭指南 | HowToCook : 偶然发现我司这位同事维护了一个程序员做菜指南,这段时间突然就火了。去年我去玩过他放在办公室的微软模拟飞行器,他还给我好好上了一节飞行课。他对飞行了解好多,讲解非常非常详细,他还考了一些飞行相关的证书,没想到对做菜也这么痴迷。这个 Github Repo 真是程序员居家办公,解决日常饮食的好手册🤣。

公号同步更新,欢迎关注👻