部署也是工程的一部分,也要编程(自动化)

部署和开发一样,同样面临变化。同样有复杂的细节。

同样应该代码化,自动化。把复杂性、思路,操作,都固化下来,显式表达。

不要“雪花”式配置。

把最近看的文章摘抄一下 集句:

1频繁做让你感到痛苦的事情:小步快走,分散痛苦与风险 《持续交付的实践与思考

2将复杂的构建流程纳入一个简单的脚本文件,然后用一条命令调用。《流水线即代码

(凡是可以被编码的东西都已经被代码化了。《流水线即代码

为软件发布创建一个可重复且可靠的过程、将几乎所有的事情自动化, 把所有的东西纳入版本控制《持续交付的实践与思考

3 『Done』意味着『已发布』:没有完成百分之多少这种说法《持续交付的实践与思考

4工程师文化是自由+效率,在自由的环境下对提高效率的痴迷,就一定会发生创新。《什么是工程师文化?

5 把懂简化喜欢自动化的人招进来,然后在绩效考核和升职的地方设置上一条硬性指标——你今年简化了什么?自动化了什么?《什么是工程师文化?

自己的切身体会:

对于1,其实这是反人类的方式(趋乐避苦)。频繁做痛苦的事而不是爽的事。

不但不避苦,反而还要频繁,反复多吃N多苦,然后才能把痛苦分散和化解。(和《反脆弱》里说的释放金融风险,要多次小崩溃才能避免1次大崩溃,军事上也是一样,其实是同样的道理。)

这几天用docker部署taiga的过程,回头看,其实是把痛苦的安装操作系统,配环境自动化,然后多次重复,1天重装系统几十次、上百次的过程。

只不过每次都是用1行命令而已,
体会到了痛苦,才知道什么最有价值。回过头看之前的自己,确实感觉到了“功力向前进,功效向后看”。

2 部署本身也是个软件工程,也有需求(交互步骤),也是要写代码的。

3 还有欠缺

4 5 我还是做到了,去年到今年在简化的道路上功力大进了。

  1用《软件方法》和EA简化了需求到分析到出文档的大量工作。

2用版本控制和docker 简化了开发工作 配环境,拉代码

——未来需要研究一下CI/CD,把测试、发布搞起来

—— 继续简化产品使用。

时间: 2024-11-13 08:20:26

部署也是工程的一部分,也要编程(自动化)的相关文章

部署React+webpack工程的步骤

# 部署React+webpack工程的步骤ps:以Mac os系统做开发环境.因为npm现在使用灰常的慢,所以我使用淘宝境像cnpm. 1,准备工作: 先确保存已经安装了node.js: 2,文件部署: (1),在终端中找到react-build项目的目录,键入cnpm init初始化一个package.json文件,该文件是存放接下来项目用的一些模块, 在终端中根据提交一步步的输入,或者可以直接新建一个package.json文件,文件内容大概如下: { "name": "

同一个tomcat中部署多个工程,不能访问的问题

个人解决最快的方法是:给每个工程的web.xml中加入一个 <context-param> <param-name>webAppRootKey</param-name> <param-value>web1.root</param-value> </context-param> 保证 <param-value>web1.root</param-value> 不同. <param-value>web2.

tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决

在开发新项目的时候,有时候为了省时,直接把曾经做过的项目工程A拷贝成改名为B工程,然后再在B工程上进行功能的开发, 此时若把A,B工程同时部署到tomcat下,会发生只能访问A,B工程中的其中一个,而另一个会出现404错误,此时可参照如下方法解决: 步骤1:找到工程下的web.xml文件 步骤2:修改webAppRootKey的属性,使得两工程的不一致便可 A工程的webAppRootKey属性如下: <context-param> <param-name>webAppRootKe

Apache部署静态html工程

项目需要链接一批静态html做的小游戏,所以需要把一堆静态的html部署到服务器,就是一个文件夹,里面是游戏html页面文件夹,还有css,img等文件夹,一个统一入口,就命名为game.html吧.本来打算直接放tomcat里面.可以是在server.xml配个目录直接访问啦,或者是Eclipse建个web工程然后把工程打包出来放到webapps目录下,嗯,都简单,可是问题来了.放上去,都是乱码.工程和html页面也都是UTF-8了,html的meta标签也对charset设好了UTF8,但是

Jrebel简单的热部署一个web工程

前言:博主最近在做Hybris开发,漫长的启动时间大大的拖累了项目的进度,而Jrebel的出现就是为了减少项目重启的时间或者说修改了代码后直接不用重启就可以看到修改的结果,但是Hybris的部署一直没有成功,博主就先做了一个小demo,试试看效果如何. 第一步:在线安装IDEA Jrebel插件 第二步:注册Jelbel获得序列号       这里博主是通过去Jrebel的官网 https://my.jrebel.com,FQ通过推特账号登录获取到的他的激活序列号的,但是我看到网上有一些破解的,

Tomcat热部署,Web工程中线程没有终止

近期项目中,用 jenkins 热部署 web工程时,发现工程中静态持有的线程(将ScheduledExecutorService定时任务存储在静态Map中),导致不定时出现数据库访问事务关闭异常,如下:org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.Il

2018-09-01HTTP响应+HTTP请求封装+HTTP响应封装+服务器部署步骤+DynamicWeb工程创建

HTTP协议: HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的 一种网络协议!所有的WWW文件都必须遵守这个标准,设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法! Http协议由HTTP请求和HTTP响应组成,当在浏览器中输入网址访问某个网站时,  你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请求后会组织响应数据封装成一个HTTP响应返回给浏览器,即没有请求就没有响应! 1:请求行 请求方

如何使用jenkins部署maven父子工程

最近使用jenkins自动部署项目时遇到一个问题,如果部署单个的maven工程,没有什么问题, 但是在部署maven创建的父子工程,如果只从svn或者git上拉取子工程源码时,会报找不到父 工程pom或者relativePath的错误,这是因为,maven子工程是依赖父工程的pom的,所以拉取 代码的时候要先拉取整个父工程下来,然后再单个拉取子工程,也就是父工程创建一个任务, 然后子工程各一个任务.操作方式如下: 说明:我使用的jenkins是root权限 首先登陆jenkins到达jenkin

于Heroku平台部署maven webapp(java web)工程

眼下,需要Heroku上述部署java web工程,该项目必须使用maven管理 一:新maven webapp工程 编者pom.xml档,增加下面的配置为例, <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.o