开发框架
本章节主要介绍企业级产品服务的开发框架,即涉及哪些开发工具、开发环境,相互依赖是什么,使用到的技术栈有哪些。让开发者有个整体的全貌,具体的工具概念、运行机制不了解可以细看后面对应的章节内容。
软件的开发生命周期大致包括一下几个阶段:
需求调研与分析:明确自己要做什么软件/需求,涉及哪些功能,实现的可行性,有没有第三方依赖等等。
设计阶段:包括概要设计和详细设计,选择技术框架、技术栈,UED设计、数据模型(数据存储表结构设计)、接口定义,定义软件架构、模块组成、相互交付等。
编码阶段:开发编码、单元测试阶段。
集成测试:开发完成,部署到测试环境进行集成测试与效果验收。
部署上线:验收通过,发布到线上环境提供服务。
运维运营:对生产环境持续运维与运营。然后不断地对软件产品进行迭代更新。
结合以上软件开发过程来介绍上面的大图:
- 工具服务
- GitLab:代码仓库管理,企业级开发团队,团队成员很多,大家一起开发同一套软件,代码不可能存储在自己的电脑上,不然代码最终怎么组合,GitLab存储代码、解决代码冲突、代码评审等等。
- Jenkins:持续构建集成,开发的代码质量怎么样,能否打包成功,可能你会说本地已经run起来了呀,但是本地run起来了不代表仓库里最终的代码就能run起来,比如你提交代码漏提交了某个文件、你和别人的代码冲突了、你依赖别人的代码而别人的代码没有提交等等,Jenkins会集成一些工具实现一些流水线,如集成Git把代码的某个分支拉下来、集成Maven对代码进行打包,并把这些过程做成自动化的事情,比如你提交了代码就会触发Jenkins拉代码以及打包来验证你提交的代码是否有问题,避免大家都提交了有问题的代码,别人拉了你的代码,本地环境run不起来影响开发进度的事情发生。Jenkins还可以持续部署,将你开发的代码持续部署到验证环境让测试测试验收。
- 需求管理、进度跟踪:用于管理需求、拆解需求,将需求转换为一个个任务分配给开发进行开发,同时开发持续维护自己的开发进度,最终可以通过看板的形式来了解最终的开发进度,比如PingCode就是一个研发项目管理工具。
- 本地开发环境
对于开发来说在了解了软件形态(toB、toC等等)以及需要开发哪些功能后要做技术选型,比如选择何种技术栈,是单体应用还是前后端分离的应用,需要哪些中间件(数据库、存储、缓存?),然后就是概要设计与详细设计阶段,需要设计数据模型(涉及哪些库、哪些表、哪些字段,字段是什么类型、长度是多少、要不要构建索引、构建什么索引)、设计接口(和前端怎么交互,接口名是什么、入参是什么、出参是什么),在设计的过程中可能一下还想不是哪些清楚,但一定要理个大致清晰,不然开发的时候都不知道从何下手,最终可以在开发的过程中去慢慢完善。
设计清晰了之后就是开发阶段了,开发阶段都是在自己电脑上进行开发,那就需要搭建自己电脑的开发环境,比如Java需要装JRE、JDK、Maven,前端需要装node、vue等等,还需要装git,因为我们最终的代码是要提交到Gitab仓库的,可以通过git命令行管理,然后装代码编辑器IDEA、VSCode等,如果你是自己开发或者学习,没有专门的服务器,还可以在本地安装MySQL、MINIO等等,后面章节再详细介绍。
- 服务器环境(测试环境、预发环境、生产环境)
对于企业来说会涉及各种环境,开发人员本地开发好了提交到GitLab仓库,通过Jenkins持续构建部署到测试环境,这样测试人员就可以进行测试,功能都开发完毕、测试完毕会部署到预发环境(预发环境一般和生产环境同库,因为有些业务场景可能特定的数据才能测出来,而开发环境没有特定的业务数据会遗漏测试场景,预发环境就是解决这种场景测试遗漏的情况),最终测试通过会部署发布的生产环境给客户提供服务。具体需要哪些中间件依赖比如MySQL、Redis、Kafka、NGINX、MINIO等是根据业务情况定的,MySQL是数据存储一般都会用到。具体的中间件安装部署使用后面章节再详细介绍。