家园工作室项目注意事项(工作流)-新人必读

项目创建、数据埋点、监控埋点、代码规范、工作流、项目进度、上线部署、文档、项目存档(语雀)、监控、数据分析、交接。

恭喜你!如果你能独立负责一个项目,证明你已经有独挡一面的能力了。接下来请仔细阅读该文档。做好独立负责一个项目的准备吧!

前置知识,秘钥配置

你需要把你的秘钥,上传到我们的gitlab上。

1571650392063

ssh配置参考教程

项目新建

我们工作室所有的项目基本上都是保存在我们自己内部的gitlab上的。https://git.ncuos.com ps: 你需要被邀请加入项目组

创建项目在projects里点击新建new project后将会出现以下界面。

1571382102230

1571381776046

一般项目都会选择在dev组里新建,这样你的代码方便所有人进行查看。但是,因为gitlab具有严格的权限管理,一般来说这个时候你是没有Maintainer及以上权限的。所以你最好在User组新建 任意等级的项目(这是自己的私人项目)。然后一定要在 Setting Members invite group里邀请dev项目组的成员 这样别人就能看到你的项目,并参与开发了。

1571383767650

接下来就和github新建了项目一样了。

代码规范

为了提高可维护性、可阅读性。我们的项目统一采用了lint规范。所以必须上lint进行开发项目。

git规范: https://yanshuo.io/assets/player/?deck=58f7703ba22b9d006c15edee&tdsourcetag#/

技术文档规范: https://github.com/ruanyf/document-style-guide

前端代码规范: https://ncuhome.github.io/frontend-guide/

后端代码规范:

数据埋点

我们的数据埋点,采用的是Google Analytics的埋点。GoogleAnalytics 所以如果你的项目要面对大流量、之后再进行大数据分析的话,你要联系学长创建 对应你项目的埋点(我们的hanalytics.google 有个组织 Ncuhome,历史的埋点数据都会被集中在里面,以便进行分析)。一般联系你项目对应的产品经理或组长。

控制台参考图

将生成的跟踪代码 放入你的前端页面,就能实现数据收集功能。 Google Analytics 会生成可视化的视图提供你分析。

监控埋点

Sentry是一个实时事件日志记录和汇集的平台。其专注于错误监控以及提取一切事后处理所需信息而不依赖于麻烦的用户反馈。它分为客户端和服务端,客户端(目前客户端有Python,js)就嵌入在你的应用程序中间,程序出现异常就向服务端发送消息,服务端将消息记录到数据库中并提供一个web页方便查看。Sentry由python编写,源码开放,性能卓越,易于扩展 。 http://sentry.ncuos.com 这是我们的sentry,如果的项目需要长时间在线上环境运行,进行线上环境监控是非常有必要的。 创建你项目对应的sentry,然后进行埋点。教程参考下面的链接。

Sentry异常监控方案部署-前端攻略

sentry使用实践

一般重要项目出现服务宕机,会有报警电话(大公司架构)。我们可以配置报警邮件,及时去恢复服务。避免消耗用户的信任。

工作流

我们的git工作流程 采用的是企业级gitflow工作流。

master 分支

master分支上存放的应该是随时可供在生产环境中部署的代码(Production Ready state)。当开发活动告一段落,产生了一份新的可供部署的代码时,master分支上的代码会被更新。

本地分支

在本地创建的开发分支,开发完毕后,将该分支push到我们的gitlab上。 然后线上在 你的分支上提交merge request (提交后记得通知你的学长,让他merge你的commit), 代码经过上级的code review后会merge进入maser分支中。这时你的任务完成。

上线部署

我们的项目目前主要方向都是用CI部署模式,代码被merge入master分支,Travis脚本自动执行,gitlab-ci自动build部署到生产环境。

前端项目建议部署到阿里云的对象存储(OSS)上。访问速度快、无带宽限制,上行流量免费,无需运维人员与托管费用,0成本运维。

后端项目: 后端部署一般需要申请服务器,部署在我们家园自己的服务器上。(其实一般应该直接买一台学生机,练练怎么部署项目)

部署规范

项目部署位置

1
/var/www/project_name

请将所有的项目部署在这个文件夹内,并且要求项目名清晰明了。

Lxxyx学长在2016年写了一份项目及代码部署规范,在这里强调一下部署的规范和一些运维的要求,希望能为后来人的工作提供一点帮助。

项目部署方法

家园即将用上K8S,但在这里还是以Docker部署为主,待到之后更新了K8S在来更新这份文档。

使用Dockerfile和 .dockerignore 定义镜像,使用docker-compose.yml定义容器,在这里指定开放端口,数据卷等,docker-compose管理容器启动,关闭,重启。

日志存放位置

1
/var/log/project_name

使用docker-compose.yml将日志挂载在对应的项目日志文件夹。

项目的日志文件以及报错信息需要按照项目存放,方便查找和处理。

除了容器产生的日志,如果需要使用到nginx的日志功能,将该server产生的日志也存放于此。

Docker容器大小

因为服务器容量有被全部占用完全,导致服务无法正常提供,持续删日志的经历,也为了防止因错误原因持续产生垃圾日志导致服务器别完全占用,请为docker-compose.yml内所有的server加上:

1
2
3
4
logging:
driver: "json-file" // 可自行选择
options:
max-size: "50m" // 可选

##

服务器申请

我们的服务器申请有自己的一套流程,只需要在 服务器配置 里按照文档添加你的秘钥,你就能获得对应的服务器。申请服务器之前,请先询问你的学长,你能使用哪台服务器。

关于服务器账户

介于此时工作室的体量以及组织情况,目前服务器只需要一个开发用户dev,不需要其他的个人账户

该dev用户拥有sudo权限,所以请在使用该用户时不要进行危险操作

为了方便管理和安全,dev不允许密码登陆,需要使用服务器或部署项目的人需向管理员申请,管理员使用工作室专用的管理项目进行配置。

文档

请注意,每个项目都必须留存有文档,最起码要介绍一下这个项目是做什么用的,部署在什么地方,还有接口文档、这个项目里有什么注意的地方,有什么要给后来的人交代的地方。

项目存档

每个项目必须在语雀上留有存档、该存档一般由项目组成员共同编写。开发如果把文档写好了,只要简单改动下就可以保存在语雀上了。语雀

数据分析

你埋点的东西终于有了回报,看着有那么多人使用你开发的产品,你会有自豪感的!! 可以观察一下某些趋势,写入文档中,尤其是如果某些周期性项目(每年都要做的四六级查询等),一些用户数据存档是非常重要的。

https://analytics.google.com

项目交接

交接方面,一般如果你的项目有了继续迭代下去的需求,就必须考虑传承的问题了。如果你前面的文档写的不错,项目存档做的很好,这个不成问题了,如果做的不好,那请回去补全你的文档。那么以后下一批交接的人如果有问题找你,你只需要在空闲时间抽出时间回复学弟学妹问题就好了。

-------------本文结束 感谢您的阅读-------------