当一个项目开发完毕后,要做的是啥,就是把项目发布到线上让用户去使用。
这里有几个问题,项目开发的配置文件和线上的配置文件需要配置。
版本1:把线上生产环境的数据库配置,如ip、端口、用户名、密码、库等数据写入代码,打包后,将包上传至生产环境。
以上大家很快发现一个问题,线上数据库的用户名和密码所有的开发都能在代码里看到。于是大家开始重构这个流程。
版本2:把配置文件抽离出来,放在线上单独成为一个外部配置文件,这样管理员可以修改配置文件且可以不用重新打包。
大家又发现了一个问题,如果遇到了线上的故障,开发需要去生产服务器调试,就可以发现这个配置文件。于是大家很快又重构了这个流程。
版本3:引入一套管理日志的系统,大家通过这个系统可以快速查阅日志。
项目越来越大,用户量也越来越多,一台服务器撑不住了,开始集群,又发现了一个问题,每次改一个配置文件,需要登录多台服务器去修改。如果漏了一台,就会出现一些神奇且难查的bug,大家又优化了这个流程。
版本4:引入了一套配置文件管理系统,这样所有的服务器都可以统一读取配置。
项目决定升级某个系统应用,各个服务器之间存在差异,这里有些VM的环境不一致导致了运行差异。很快大家做了优化。
版本5:引入Docker,把系统环境和运行的服务打包发布。这样就能保证所有的服务都运行在同一种环境中。