基础架构

软件初期用于军事、学术、银行,单机运行;20 世纪下半叶,互联网(TCP/IP)诞生,出现了 C/S 结构的邮件服务(SMTP)、网络游戏 Multi-User Dungeon(MUD,多用户地下城);1990 年万维网(Web)和浏览器诞生,发明了 3 项关键技术:URI、HTML、HTTP。

所以架构不只是 Web 架构,而是各种程序的服务器架构,按照行业可分为:

按照语言本质可分为:

静态资源架构

静态网站不只是个人博客、公司官网、动态网站的 CSS/JS 资源,还有目前很流行的前端单页应用(SPA)、用户上传。

静态网站架构是最简单的,在互联网早期,除了放在服务器上,大家还可以使用便宜甚至免费(插入广告)的网页托管服务(web hosting service)。

2006 年,AWS 云计算诞生,第一款产品是云存储,价格低廉;

2008 年,CDN 云服务诞生,配合云存储,成为最廉价又最快的静态网站架构方案。

目前最佳架构是「云存储」+「CDN」,当然还有一些基于此技术的 SaaS 服务商,比如 GitHub/CODING Pages。

注意:上传到云存储后,需要刷新 CDN(「腾讯云」可配置「云函数」实现自动刷新)。

可以看出,静态网站虽然简单,但做到极致也涉及多方面的知识,多款云产品的使用(云存储、CDN、DNS、云函数),可作为架构入门。

架构 服务商 购买成本 运维成本 可靠性
Pages CODING、GitHub 0 0 内地低、海外高
云存储、CDN 各家云 极低(¥10 元/年) 0

注意:由于各家云计算的云存储都无法备案,目前个人或公司制作静态网站需要先买一台服务器,成本较高。腾讯云 Serverless 将推出廉价备案服务,所以将作为静态网站首推架构。

网络

网站架构不只是服务器,还包括这些网络知识:

HTTPS

SSL 安全级别检测:https://myssl.com/

整站 HSTS 会面临两个特殊问题:

no-www

Chrome 已隐藏 www,网站采用 no-www 根域名是大势所趋,但是根域名 CNAME 和 MX 冲突,没法 CNAME 到 CDN,所以最好是 DNS 支持 ANAME,可惜除了 CloudFlare、DnsMadeEasy、AWS Route 53 支持,国内 DNS 都不支持。

解决方案:

www/no-www 二选一,需要跳转,比如 www.example.com 跳转到 example.com,所有 DNS 都支持「URL 显性转发」,但是只有 Google 支持 HTTPS 跳转,其他 DNS 都不支持。比如 https://alipay.com 打不开,这在开启「整站 HSTS」时将会导致问题。

解决方案:

后端架构

后端架构从早期的专用主机、主机托管,到了虚拟化技术带来的「虚拟专用服务器(Virtual private server,VPS)」,又到了云计算——租一切。

其中的程序运行环境也从裸机进化到了容器,从虚拟主机(ASP、PHP 空间)进化到了 Serverless。

目前最先进的架构是 K8s 和 Serverless。

Docker、K8s

K8s 对性能要求较高,最低 1c2g,一般 2c4g。于是轻量级的容器化技术诞生了:KubeEdge(支持 128MB 内存) 和 K3s(支持 512MB 内存),但目前各家云计算都没有支持 1c1g,所以暂不可用。

服务商 独立部署版 托管版 弹性/无服务器版 边缘托管版(KubeEdge)
腾讯云 最少 3 + 1 台 最少 1 台 最少 1 台
阿里云 最少 3 + 1 台 最少 2 台 最少 1 台 无(最低 1 台 2c4g,不是 KubeEdge)

小型网站

常见场景:私有文档、大公司的 OA 等内部系统、中小公司的会员等对外系统。

单台服务器一般配置较低(比如 1c1g),甚至自建数据库也要占用一部分性能,所以过去只能采用 SSH 文件部署。

现在容器化技术带来极大的便利,单点 Docker 占用 100MB 内存,而云服务器是 1GB 起步,一般够用,可以取代文件部署,降低了维护成本,不过不像 K8s 那样便于管理。

小型网站如果购买云数据库,推荐基础版(腾讯云 ¥290/年,阿里云¥400/年)。

架构 服务商 购买成本 运维成本 可靠性
虚拟主机(PHP、MySQL) 只有阿里云 低(¥200/年) 0
单台服务器 + 自建数据库 + SSH 文件部署 各家云 中(¥650/年)
单台服务器 + 自建数据库 + 单点 Docker 各家云 中(¥650/年)
单台服务器 + 云数据库 + 单点 Docker 各家云 高(¥950/年)
单台服务器 + 云数据库 + KubeEdge 高(¥950/年) 0
Serverless + 云数据库 腾讯云、阿里云等 低(¥300/年) 0
Serverless + 共享云数据库 腾讯云 极低 0

大中型网站

大中型网站基础设施包含:

当项目越来越庞大,团队超过 10 人后,沟通成本上升,这时应拆分为多个项目组,项目也需要拆分为不同业务模块,变成「微服务」。

架构 服务商 购买成本 运维成本 可靠性
服务器 + 文件部署 各家云
服务器 + 托管 K8s 各家云 0
无服务器 + 弹性 K8s 各家云 0
Serverless 腾讯云、阿里云等 极低 0

腾讯云产品

腾讯云 CDN 每月免费 10GB 流量(含 HTTPS),云存储 COS 注册免费 6 个月,适合静态网站以及各种架构配套的存储。

七牛云 CDN 每月免费 10GB 流量(仅含 HTTP,而 HTTPS 收费),云存储每月免费 10GB,相比之下各有千秋。

IPv6:各地负载均衡已全面支持,而 VPC、CDN 需要申请。https://cloud.tencent.com/solution/ipv6

Serverless 备案服务即将上线,价格低廉。

用户情景和最领先方案

用户情景 分类 最领先架构
个人博客(不可备案) 静态网站(不可备案) Pages
个人博客、企业官网(可备案) 静态网站(可备案) Serverless
开放文档、企业官网、静态资源(已备案) 静态网站(已备案) 云存储+CDN
私有文档、OA、会员系统 小型网站 Serverless 或 K8s
ToB 固定流量的大中型网站 托管 K8s
2C 突发流量的大中型网站主业务 弹性 K8s
2C 促销 突发流量的大中型网站临时简单业务 Serverless

能力成熟度评级

评级仅面向企业用户,不面向个人不备案的情况。

考虑:大部分行业适合使用公有云,但往往因为被害妄想症,而选择自建或者私有云,这是否在我们评判范围内?

不太可行,因为有的客户有钱、传统,就是要用私有云,那被评 0 分?或者说这事没有正确答案?

私有云和自建云的界限在哪里?OPPO、VIVO、海尔 这些公司都在招人自己搭 K8s,可以认为是浪费人力物力,不属于私有云;而头条也是自己搭的,做出来一个「字节云」,以后应该会拿出来售卖,那就是私有云甚至公有云了。

成熟度 服务器 云存储和 CDN 网络
1 PaaS 数据库 静态网站架构 强制 HTTPS、www/no-www 跳转
2 开发测试与生产环境一致 静态资源 HSTS 和 frame、不占用未买的域名和 IP
3 容器化或 Serverlss 用户上传、图片/视频处理 SaaS 自定义域名、Apple ATS、PCI DSS
4 PaaS K8s、SaaS 前端上传 IPv6、HTTP/2
5 K8s 自动伸缩、微服务 静态资源独立域名、webp 整站 HSTS
  1. 小项目架构未入门,买了一台服务器,部署方式可能是:手动拉代码、持续集成 SSH(属于持续集成的评估),常犯的错误是:自建数据库缺乏维护、静态网站不知道用云存储、未开启 HTTPS、no-www 无法访问。

    经过我们的培训,知道使用 PaaS 数据库、静态网站架构(用云存储和 CDN,甚至云函数),网站开启「强制 HTTPS」,www 和 no-www 都能访问,二选一进行跳转,达到基本的用户体验。

  2. 做到了上面的静态官网用云存储,用户对云存储有了概念,但有些普遍问题:开发测试与生产环境不一致、动态网站的静态资源不知道用云存储、配置了 HTTPS 仍然被劫持、占用未买的域名。

    经过我们的培训,做到开发测试与生产环境一致、静态资源放云存储,配置防劫持,内部使用 .lan、.localhost 等合法内网域名或购买公网域名。

  3. 做到了上面的要求,服务器架构仍然不佳,应该采用容器化或 Serverless,正好这种架构下,用户上传的文件没地方放,应采用云存储,而且图片裁剪也不用自行开发了。还存在一些普遍问题:邮箱等 SaaS 不知道配自定义域名,导致影响客户和员工的办公效率、不了解 PCI DSS 要求禁用已经不安全的 TLS1.0。

    经过我们的培训,小网站采用单台服务器也能达到此评级,达到优秀的技术体验、安全保障和低廉的维护成本。

  4. 上一步采用单点 Docker 难以管理,应采用 K8s,还有:采用各种 SaaS 而不是自建、前端上传、IPv6、HTTP/2,都对开发者的学习能力和技术热情有一定的要求。当然 IPv6、HTTP/2 在 PaaS 的负载均衡/CDN 中只是一个开关,就看有没有去学习了解。

    托管 K8s 支持单台服务器,但对配置要求较高(2c2g、负载均衡),做政企低访问量网站的外包公司可能不需要这种架构,所以达不到这种评级,这也合理,我们不能给专做小网站的外包公司架构评分很高,那样会误导客户,觉得这公司能做大项目。

  5. 大流量网站对架构的挑战最高,需要自动伸缩和微服务。「静态资源独立域名」是一个技术细节,而「webp 自适应」、「整站 HSTS」的难度不小。

参考资料