docker已老, 函数式运维才是未来-01:springboo
2018-08-01 本文已影响2200人
larluo_罗浩
经常上线部署代码的人会知道,版本是个很头疼的问题,环境也是很头疼的问题。
这些是很简单的问题,但是总避免不了。
为啥 ?因为人总是会犯错误的。
不要太相信人类,代码才是最公正的。
所以 有人喜欢docker,但是docker实在是太复杂了。
为啥 需要虚拟化,为啥 你需要挂载?
你真正需要的,的确是函数式运维!
什么是函数式运维?
在函数式运维的体系里面,软件包即值,配置即状态。
软件包是不可变的,稍弱改动软件包之后产生了一个新的软件包。
那么函数式运维有啥好处呢?
由于软件包无状态,配置即状态 ,所以很轻松建立了配置驱动编程
的体系。
对于配置,加上严格的版本控制,自然就有了代码即文档
的效果。
由于软件包即值,配置多版本管理,从一个环境传递到另一个环境是那么自然 。
对于软件的多版本,即是不同的值那么简单。
由于函数式的不可变,中间过程相同输入产生的输入只用处理一次,后续可复用。
如果服务器直接提供二进制构建,即不需要源码构建进行软件包安装,
否则重新编译一次后续复用,大大提高构建效率。
如果没有函数式运维你会难受么?
肯定会有那么一天的。
如果你安装hadoop,并且没有网,或者系统库版本不一致。
突然系统找不到protobuf,找不到zlib库,你会心慌吗?
怕不怕sudo一下把系统搞挂掉?敢不敢用root权限操作一把?
函数式运维比docker好在哪里?
无须虚拟化! 再说一遍!
无须学习新技术,只需要学习简单命令行及简单的nix函数式编程!
不与系统任何底层交互,仅仅只是文件拷贝,天然绿色环保无公害!
将网络与构建过程分离,通过hash值仅需下载一次,使构建无副作用!
真正的多版本支持!同一版本,任何改动,产生新的软件包。
何止多版本,还有版本依赖管理 ,nix简直强大到没朋友!
docker,滚粗吧。
说了这么多废话,应该有点效果,那么开始正题吧。
且听老夫讲解springboot如何轻松轻松一键构建并发布
第一步: 新建spring boot项目


第二步: 下载依赖并运行



第三步: 打包并运行



第四步: 上传版本控制系统github(gitlab或者svn亦可)


准备工作就绪,接下来进行自动化构建
第一步: 编写构建脚本

第二步: 运行构建



第三步: 导出软件包
查看依赖:

一键导出所有依赖

第四步: 导入软件包到远程服务器,搞定收工(普通用户亦可)


