个人即公司

简介

如果把一个创作者看作是一个虚拟的公司,那么创作者所需要的软件也类似一家公司开发和使用的软件。创作者可能会使用 NAS 或者 VPS 来部署一些 self-hosted 的软件,可能是在家庭局域网内使用,也可能部署在公网环境,也可能提供服务给网络上的其他用户。为了便于书写文档,我们将这种使用场景所依赖的软件基础设施,称为”创作者的基础设施“(The Creator Infrastructure)。

我们会从以下3个维度开始:

  • 创建:
    1. 在一个空白的服务器上,快速从0开始,或者使用备份文件还原到之前的运行状态
    2. 用最快的速度部署一个新的应用,并且可以快速迁移
  • 维护:
    1. 如何备份数据?
    2. 如何升级软件或者替换软件?
  • 安全:
    1. 如何隔离网络环境并保证个人网络的安全?

为了便于维护和迁移,我们需要一些规则来抽象和简化部署软件的活动。

规则定义

空间划分

按照公开和私有两个维度,我们将创作者使用的基础设施的网络划分为公开网络和私有网络。

  • 开放网络:开放在互联网上,所有人都可以访问到,可以用于作品展示或者分享和沟通。
  • 私有网络:可以是家庭局域网网络,或者是信任的其他创作者

网络入口

开放网络的网络入口就是域名,可以不做任何的用户管理或者基础的用户识别机制。 私有网络的网络入口为了安全性,可能需要使用 VPN 软件接入,并且在每个软件上尽量使用用户认证机制。

域名

每一个软件有一个域名。 每一个域名可以在不同网络中指向不同的IP。 域名有TLS证书: 目前开放网络环境中,可以使用自动签发的证书。在私有网络内,可以选择自签证书。

IP

开放网络中,使用固定ip或者DDNS 更新IP。 私有网络中,可使用自定义 DNS 服务器来实现,也可以使用 VPN 软件等分配的其他私有IP。

中间件

在一个网络请求抵达真实的软件前,可以使用中间件来定制一些逻辑,例如流量日志审计或者身份鉴别,或者对流量限流等。

路由系统

将网络入口映射到具体软件上,做这件事情的角色叫路由系统。

服务器

当用户通过网络入口接触到具体的IP的时候,请求才真正抵达服务器。服务器上主要部署了

软件管理系统

软里管理系统负责对软件的生命周期进行管理。 软件管理系统支持远程自动化控制。

软件

在创作者基础设施上新增的每一个软件必须定义好以下的规则

  • 软件使用的域名是什么
  • 新增软件的步骤
  • 这个软件的数据如何备份以及备份策略
  • 这个软件是否有用户管理的功能
  • 如何衍生出 A/B/C 多个版本

存储设备

用于存储软件日常的数据

备份存储

属于备份链路的存储设备