# 从零独立开发一个互联网应用 ###### tags: `blog` `dev` ## 前言 我为什么要做这个项目:TBD ## 过程记录 1. 确定产品需求 - 功能点列举 - 产出:https://www.notion.so/Product-5dd7d95f221649f98c0b3edcee1f1c7f - 交互设计 - 工具:Figma - 产出:https://www.figma.com/file/PqrxUZFPRkAJlZzRcW0Gs4/I-m-on-fire?node-id=76310%3A649 2. 团队协助 - 文档管理 & Task tracker - 工具 1: [Notion](https://www.notion.so/) - 工具 2: [HackMd](https://hackmd.io/) - 代码管理 - 工具: GitHub - API 设计工具 - 工具:[RAML](https://raml.org/) 基于 YAML 语法,简单易上手。可用 [raml2html](https://github.com/raml2html/raml2html) 工具生成可视化的 html 3. 技术选型 - 部署 - Docker + VPS 云主机 - 首先不考虑生搞机器 - Google App Engine 国内无法访问,切不方便后续扩展/自定义/迁移/维护 - K8S 集群太贵(调研了阿里云 K8S),而且小规模应用暂时不需要 - Docker + VPS 云主机是综合考虑之后的方案 - GCP 机器本来就跑着 v2ray 和个人主页,可以用来做测试机 - 正式环境考虑部署到阿里云 - 没有比较过国内其他云,纯粹因为口碑(所在的公司和朋友的公司都用阿里云) - 后端语言 - Golang - 使用过 Python,弱类型的缺点太明显,写的时候容易出错,重构的时候更是难受,很难预知错误 - Golang 同时兼顾开发效率和程序运行效率 - 尽管我从未使用过 Golang,但是 Golang 很酷很新鲜,我个人是很喜欢尝试新东西的人 - 框架 - Gin - 朋友推荐的 - 支持 ORM - CMS - 文章管理:[HackMd](https://hackmd.io/) - 项目的主要内容是文章,HackMD 是一个强大的 MarkDown 编辑器,对于文章编辑来说,简单易用 - 可以通过 Docker 方便地部署到自己的服务器 - 可同步文章到 GitHub - 其他内容管理 - Flutter Admin - 采用 Flutter 减少 web 端学习成本 - 数据库 - MySQL - 众所周知的优秀的数据库 - 方向代理服务器 Nginx - 据我所知没有更好地 alternative 了 - 反向代理 + 负载均衡 - 起步只有一个 service,为后续扩展做好基础准备 4. 开发 hey API - 产出:TBD