从0到1创建一个网站
Contents
前几个月我从0到1完成了 hot-crawler 这个网站项目,它也是我个人的第一个网站,至今(2019年12月)已稳定运行了四个多月。功能虽然很简单,但是整个过程却十分的艰难。当时完全没想到开发一个网站需要做这么多事情,很多事情都是第一次做,只能遇到问题解决问题,硬着头皮上。当时对完整的开发流程不是很清楚,做的时候基本上是想到什么做什么,流程可能不完善或者不正确,但从0到1实现一个网站要做的事情基本上都做了。根据之前的经验和整理,下面按照我自己的理解,介绍一下从0到1创建一个网站的大致过程。
I. 设计阶段
这个阶段主要是构思想法、收集需求、设计功能和时间计划。
主要的工作:
- 需求分析。
- 原型和UI设计。
- 系统设计。
- 时间规划和任务划分。
产出的结果:
- 用户需求和设计
- 软件需求规格说明书(User/Software Requirements Specification, SRS)
- 确定网站域名,网站名称,LOGO,Slogan。
- 系统交互原型图。
- UI 设计图。
- 软件设计
- 软件架构文档(Software Architecture Document)
- 数据库设计文档(Database Design Document)
- API 文档(API Documentation)
- 软件详细设计文档(Software detailed design)
- 开发流程规范文档
- 过程文档(Process Documentation)
- 项目计划,估计和时间表。(Plans, estimates, and schedules.)
II. 代码实现阶段
这个阶段主要是根据软件需求文档、软件设计文档和开发流程规范文档进行项目代码开发。
主要的工作:
- 配置服务器。具体包括:购买服务器,搭建项目运行环境,部署项目。
- 配置域名。具体包括:购买域名,DNS 解析,Nginx 反向代理,HTTPS。
- 搭建持续集成(CI/CD)。具体包括:创建 Git 仓库,添加 gitignore,搭建或购买 CI 服务,配置 Docker,配置 Jenkins。
- 后端代码实现。具体包括:创建项目,创建数据库,配置数据源,集成第三方类库,编写单元测试,编写模块代码。
- 前端代码实现。具体包括:构建项目,实现UI布局,实现交互动作,兼容多个终端(PC,Mobile,Tablet 等)
- 前后端对接。
产出的结果:
- 功能完整和可运行的前后端的代码。
- 项目说明文档(Source Code Document)。
III. 功能测试阶段
这个阶段主要是为预发布做准备。全面的系统功能测试、bug修复、功能优化等。
主要的工作:
- 功能测试。
- Bug 修复。
- 前端功能优化。如,优化样式,兼容PC端和移动端。
- 后端功能优化。如,可配置,可扩展,和用户体验优化等。
产出的结果:
- 软件能够达到需求文档的所有要求。
IV. 性能测试和性能优化
这个阶段主要是为发布前做准备,保证服务的高性能、高可用和安全性等。
主要的工作:
- 性能测试(Performance Testing)
- 负载测试(Load Testing)。测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,最大支持多少并发用户数,软件请求出错率等,测试的主要是软件系统的性能。
- 压力测试(Stress Testing)。测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的 CPU 利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同。
- 容量测试(Volume Testing)。确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。
- 高性能
- 算法实现优化。
- JVM 优化。
- 数据库优化。如,数据库表结构、索引和SQL优化。读写分离,分库分表。
- 添加缓存和搜索引擎等。
- 静态资源 CDN。
- 高可用
- 应用服务高可用。如,1. 详细的日志记录。2. 软件程序作为 Linux 服务,设置崩溃后可自动重启。3. DNS 负载均衡。4. Nginx 负载均衡。
- 数据库高可用。如,数据库集群,数据备份。
- 热部署、热更新。
- 云监控(阿里云监控)。
- 安全性
- 设置系统防火墙。
- 设置软件防火墙。
- SSH 公钥登录。
- 防止 SQL 注入和 XSS 攻击。
- 防止 DDoS 攻击。
产出的结果:
- 应用服务具备高性能、高可用和安全性等特点。
IV. 预发布和内测
这个阶段主要是小范围的推广试用,收集反馈意见,持续打磨和优化。
主要的工作:
- 推广。
- 收集意见。
- 持续改进和优化。
产出的结果:
- 软件功能完善、体验良好。
VI. 正式发布和推广
网站正式发布,全面推广。
VII. 日常维护
这个阶段的主要是潜在问题修复,用户体验优化,和功能调整等。
主要的工作:
- 潜在问题缺陷发现和修复。
- 优化用户体验。
产出的结果:
- 保证应用服务的正常运行。
- 功能持续调整和优化。
VIII. 其他
其他一些优化网站的事情。如下:
埋点,数据采集和分析。统计用户行为,分析数据优化功能。
SEO。
References
[1] Technical Documentation in Software Development: Types, Best Practices, and Tools