五件应该被禁止自行托管的事情(5 Things That Should Be Illegal to Self Host)
李升伟 编译
我爱自行托管。我运营一个Docker托管平台,让每个人都能自行托管。我认为每个开发者都应该知道如何部署自己的东西。
但即使是我也有限制。
当自行托管从“赋权”变成“你为什么要这样折磨自己”的时候,就到了一个分界点。并不是所有事情都需要运行在你的5美元VPS上。有些事情最好留给超大规模企业或其他人,而不是你自己。
所以这里是我的黑名单:五件在我看来应该被禁止自行托管的物品,除非你纯粹是为了学习或者你在运营自己的大陆。
1.邮件服务器
自行托管邮件就像试图在挫败中赢得奥运金牌一样。可靠地发送出站邮件就像是包裹着SPF记录、DKIM密钥、rDNS和声誉分数的黑色魔法。一旦出错,你的邮件就会进入Gmail的垃圾邮件文件夹或者更糟的是悄无声息地被丢弃。
无论你的Postfix配置有多好都无关紧要。如果你不是已经在有多年声誉的热门IP上运行,你会遇到麻烦的。只需使用Postmark、Mailgun、SES或其他类似的服务即可。将来你会感谢自己的决定。
除非你只是给自己发送可爱的项目状态更新邮件,否则这可能是为真实应用做出的最糟糕的决定之一。
2.对象存储(Object Storage)
像MinIO和SeaweedFS这样的S3克隆工具让自托管对象存储看起来很容易实现。当然启动它们是很容易的。但是保持数据安全和持久性?那完全是另一码事。
对象存储的全部意义在于持久性。AWS有11个9的持久性是有原因的——他们会在数据中心之间进行复制(这些数据中心你可能永远也看不到)。而你?你可能在一个Hetzner盒子上运行着一个单节点MinIO实例——离永久遗憾只有一步之遥了。
还有规模经济的问题。超大规模企业可以负担得起将对象存储做得非常便宜——而你则不能做到这一点。
3.你自己的CDN(内容分发网络) AWS CDN
有些人正在构建他们自己的CDN——我不确定为什么他们会这样做,但他们确实存在了人会将服务器部署在两个位置并称之为全球边缘网络,然后 wonder为什么他们的延迟在南美洲那么糟糕。 CDN不仅仅是nginx加上缓存;它们涉及到路由、缓存、清除、TLS终止、源站保护、防护盾牌以及数十个边缘位置等复杂问题。 你不可能在一个周末的项目中伪造这一切。 只需使用Cloudflare或CloudFront或Bunny即可。 你的用户会因此而爱你!
4.软件包注册库(Package Registries)
我明白你们的意思:你们想要拥有自己的供应链;你们不相信Docker Hub;你们想要一个私有的注册库。 但除非你是像Sliplane这样的实际平台提供商, 否则你可能不需要自托管你的注册库。 Docker Hub, GitHub Container Registry以及云服务提供商的注册库存在都是有原因的:它们工作良好, 速度快, 而且不会在你磁盘填满时丢失层。 你可以自托管这个软件包注册库, 但你真的需要这么做吗? 可能并不需要吧!
5.DNS服务器(DNS Servers)
这件事简直应该是一种犯罪行为才对啊!
除非你在构建自己的顶级域名(你能做到吗)或者在娱乐目的下深入研究DNSSEC领域, 否则在生产环境中完全没有理由运行你自己的DNS服务器。 从值得信赖的人那里购买你的域名; 使用管理型DNS提供商; 他们将处理冗余性、延迟任何播送以及DDoS保护等问题, 这样你就不用操心了。 你那可爱的小BIND9容器是不可能经受住僵尸网络的攻击的; 而且当DNS崩溃时, 整个系统也会随之崩溃下去!
最后的话:
我不是说自行托管是坏事;相反,我很喜欢。它的一部分成为优秀工程师的部分就是知道什么不应该自己搭建。
这些五项内容都是经过实战检验的基础设施层,当作为服务来使用时既便宜又快又可靠,但在没有专业知识的情况下自我搭建则会陷入混乱之中。合理利用时间吧,把有趣的事情留给自己,把其他事情留给那些已经花了十年时间把它做对的人吧!
干杯,
Jonas, Sliplane联合创始人
原文链接:https://dev.to/code42cate/5-things-that-should-be-illegal-to-self-host-3d21