搜索 K
Appearance
博客正在加载中...
Appearance
最近在带个新人,关于环境管理和配置管理讲了很久。考虑到在我刚工作的时候也对这两个部分没概念,写个文章记录和总结下吧,如有不足和补充欢迎指出 。
在阅读之前,读者应该具有 Web 开发的相关知识。
这里说的环境是一个系统运行的环境。一个系统应该至少有 1 个测试环境和生产环境。
测试环境:开发人员用于测试新功能、排查 bug、分析需求时用的,服务器一般在内网,不直接对客。
生产环境:直接面对客户使用的,所用的服务器配置比较高,数据库里都是真实的客户和业务数据。
举个例子,本人在开发一个电商系统。一开始是本地开发的,需要在本地搭建开发环境,数据库,配置 Tomcat 或 Nginx,造数据测试等;
如果开发完了,准备给客户用了,怎么操作呢?部署到服务器上,并且初始化好数据(清理掉测试数据,配置好业务数据,例如菜单表等),这个服务器是可以在外网访问的,然后配置好域名等,至此,就可以提供客户来使用了。
在这里,你的本地环境就是测试环境,服务器上的环境就是生产环境。
补充的知识点:
很多时候,我们需要不少测试环境,这就有很多专业的术语指示不同的环境,笔者曾接触过下面的环境:
为什么有这么多环境呢?因为有时候会用到这么多。例如,一个系统几十份需求,几十个开发人员;
有些时候,一些需求还在开发中,需要部署到服务器上测试;但有些功能已经开发完了,需要质控人员进行测试,为了不让未完成的功能影响到已经完成的功能,单独创建一个 uat 环境是很有必要的;
有些时候,一些需求以及质控测试完了,但是有些需求还在测试,此时我们可以将已经测试的需求,单独部署到另一个环境上,在投产前再测试一次,避免其他测试中的需求,影响到本次要上线的功能等。
如果需求比较少,无需这么多套环境也可以,因为这么多环境管理起来也很麻烦。但至少生产和测试都有一套环境比较合理。
有这么多环境,要怎么管理呢?这里列一下笔者知道的吧:
一些大型的企业,有专门的环境管理规范,并有专门的环境管理人员(或小组)负责维护环境的增加、删除和修改配置等。
这里的配置管理包含几个部分:
这里说的版本是指代码的版本。虽然我们可以用 Git 来管理代码,但还是有一些问题要搞清楚
这里说下笔者接触过的管理方法:
怎么使用分支呢?
GitLab 用户管理
一个系统可能有几十个人维护,不可能谁都可以提交和修改分支,不然容易混乱,得有个规范。
一些术语
以上方法可能比较多,繁琐,但对于多人使用的话是可行的。如果是小公司或者个人,可以不用这么多规范。
当开发完功能后,需要编译出部署包,然后部署到服务器上,并且重启;这些步骤可以叫构建
其实这些步骤是很固定的,甚至可以说是重复的,无意义的。
因此,出了很多工具,例如 Ant,Maven,Jenkins 等帮我们构建和持续集成。
有了这些工具后,我们只需编写好构建的脚本或者做相关的配置,就可以在编写完代码后一键构建,不用开发人员亲自编译、出包和部署,重启等。节省大量的时间。
笔者的博客就是用 GitHub Action 来完成持续集成的,当笔者提交后,后台就自动编译,然后部署到服务器上。如果失败了会有邮件告知。
这些工具不仅能节省我们时间,还减少了出错的概率。笔者曾经遇到过手工部署的系统,一次投产十几个文件,一个个部署到服务器上,然后换一台服务器继续部署…………一旦有一个文件放错或者漏了,都很难检查。
后来笔者也曾自己写过部署脚本,就是执行 shell 文件,将部署包放到服务器上后,依次部署文件(就是 mv 和 cp 命令),然后重启等,也节省了不少时间;但缺点是每次都要重新编写和检查,较为麻烦。
一些公司会自己内部搭建持续集成的工具。笔者接触过的公司就用过,其内部使用方法和 GitHub Action 差不多。