共计 1212 个字符,预计需要花费 4 分钟才能阅读完成。
第一阶段 – 项目成立
随便在阿里云买了一台虚拟机。
在万网买了一个不是很满意的域名。
使用免费的 Gitlab 创建了自己的代码项目。
通过朋友介绍认识设计师小 A。
第二阶段 – 开始运营
另外多买了一台虚拟机。
购买了阿里云的负载均衡服务,并且将 80,443 端口指向这一新一旧两台服务器。
考虑到数据库安全,购买了阿里云的 RDMS 服务,不再担心数据丢失与备份问题。
给服务器创建了一些短信告警。
第三阶段 – 天使在望
注册用户竟然达到了惊人的 10 万。
一些调皮的用户开始对你的系统进行业务测试,你开始关注防火墙与 SQL 注入等安全问题。
为队列系统购买了数台服务器充当 RabbitMQ Cluster 与 Worker Cluster 角色。将一些非实时性与高消耗任务迁移到队列。
发生短信 / 邮件。
计算用户行为。
统计各项数据报表。
同时购买了阿里云的 RDMS 从库,使用 KingShard 等中间件进行透明读写分离。CPU 不在持续在 80% 以上。
开始开发全端客户端,使用 Access Token 权限机制代替 Session。
开始处理当初写下得烂 SQL,优化系统性能。
招聘了程序员小 B,小 C。
第三阶段 – 数据量的盛宴
你开始从别人的口中听到你的产品消息。好的或者不好的。
系统数据量开始以超过 60 度角的水平递增,你坐在电脑前 tail -f /var/log/nginx.access.log 享受着 qps 带来的荣耀感。
你开始在办公室挂了 2 块屏幕显示当前系统的平均响应时间和异常总数。
几张极度增长的 MySQL 数据表开始让你担忧,开始设计下一代系统。引入了分表分库,将搜索功能迁移到了 ElasticSearch。你在 Google 上疯狂的搜索 SQL 优化技巧。
开始将一些独立的服务从主系统剥离,使用 RPC 进行构建。
权限系统
存储系统
多媒体处理系统
验证码系统
你的日 PV 达到了千万级。内部系统的 hits 达到了数亿。
你从几篇博客里学习了几篇 DDD 的知识,要求程序员小 B、小 C 开始写单元测试。直接使得小 C 的不满,导致小 C 的离职。小 C 认为小单元测试是对他技术的不信任。你没有多说什么,招聘了程序员小 D,同时将小 B 提拔为技术总监,你开始将精力放到了你不擅长的商务领域。
第四阶段 – 全球覆盖
你终于迎来了你的第一个海外客户。但是你的客户将他那高达 2300ms 的 ping 截图甩你脸上令你羞愧不已。
下定决心开始构建全球系统。
将静态资源存储在 Amazon S3, 并且使用七牛回源到中国大陆。
使用阿里云的智能域名解析,将域名的 ip 解析到离客户最快的海外节点。海外节点与主系统构建 VPN 系统相连接。
开始引入多语言系统,对系统的错误码,文案进行多语言翻译。
你开始拥有了 6 位程序员,你将小 B 和小 E 分为系(加)统(班)保(不)障(给)组(钱). 其余人分为前端后端两大组。
小 B 和小 E 完善了你的 Bug Worker 程序,引入了完善的 ACK 机制和异常处理,解决了偶尔充值不到账的问题,客服小 U 对小 E 心生爱意。
终于,你拥有了一个现代化的全球 Web 后台系统。