基础架构、基础服务、基础平台、基础中间件等等
程序开发毕竟还不是搬砖这种无脑体力劳动,需要事先有标准,有架构,有设计,绝对不是新公司今天创立,明天就可以开始编码的。其实很多公司在起步的时候没有财力和资源建设独立的基础架构或平台架构部门,甚至运维团队都没有,但是这不妨碍我们心中有一个蓝图知道努力的方向,本文我们就简单聊聊平台架构相关的工作内容(或者说作为一个技术管理,应该去梳理、统一、明确的部分)的蓝图。由于本文覆盖的内容比较多,只能抛砖引玉大概提一些,无法一一展开太详细的东西。图中的数字是我认为的优先级,仅供参考。
规范
规范它虽然不是一个实际的代码或组件,只是一个文档,但是我觉得非常重要。没有规范,那么员工加下去任何一行新代码可能都是错的,整个研发流程也可能会因为没有规范导致很多不必要的事故产生。
代码提交&分支管理规范,我们可以在gitflow基础上根据实际情况(结合运维流程,项目复杂度,团队人数,发布周期)进行细化,涉及到:
有哪几个常驻分支,哪几个临时分支?
分支命名规范?
提交代码描述规范?
分支迁出和合并的时机?
哪些分支普通开发没有权限直接提交?
测试用什么分支,上线又用什么分支?
多版本并行开发如何提测?
Hotfix如何处理分支?
编码规范,比如Java代码可以以阿里Java开发手册为基础,大家一起过一遍,针对项目的实际情况(时间要求,对性能要求),选择其中的一些坚决执行,然后补充一些其它的。我们也可以让大家的IDE使用(导入)统一的Code Style Template来要求一致的编码格式。因为Code Style的不一致导致提交的时候大范围的代码新增删除完全会污染提交,让大家很难看出提交的代码到底改了什么。
数据库设计规范。阿里Java开发手册里包含了一小部分数据库设计规范,术业有专攻,这个还是应该请资深DBA来给出一定的规范,包括但不限于:
命名(表和字段前缀后缀命名,外键字段命名、通用字段命名统一)
规范
字段设计类型规范
字段冗余规范
通用字段规范
索引使用规范
项目结构规范,对于Java Maven项目来说基本目录结构比较统一,对于其它语言的项目(比如Python),目录结构没有一定标准的话,项目源码结构会千奇百怪,最好还是对于项目结构有一个规范,包括:
三层结构目录划分
多环境(Profile)配置文件
服务接口、服务实现、Web、Job模块命名
最后是项目管理流程,有一些公司会有专门的PMO,有一些初创公司研发Leader也会充当PMO的角色,虽然这个活一般和平台架构没啥关系,不管怎么样,既然是项目肯定少不了项目管理,作为技术管理角色需要关注的一个点,项目管理流程也是比较重要的:
迭代周期,迭代周期中的大环节大概发生的时间点
开哪些会,开会时间点是?(日站会、周例会、启动会、回顾会、复盘会、排期会、PRD预评审会、PRD评审会、测试用例评审会、上线方案讨论会)
项目生命周期中每一个角色产出哪些文档?
任务在哪里管理,每一个角色怎么去维护任务
状态的流转?不可能任务的每一个状态的流转都由PMO来做
基础框架
使用一些基础框架来做应用开发是必须的,对于Java技术栈,大家所熟悉的框架有Spring Cloud全家桶、Spring Boot套件(封装的各种starters)、Mybatis等,直接使用这些框架进行开发是可以的,但是更建议的是由基础架构团队封装自己的框架,自己做一层封装,我们可以以类似Spring Boot Starter的模式,为所有的组件