研发中那些能够自动化的事情

估计已经很多粉丝已经在线等急啦。python


敲黑板,讲重点。今天这篇分享主要聊一聊,工做中那些须要自动化的事情,稍微作个抛砖引玉,看看是否可以引发你的思考共鸣。另外不管你是处于猿门外,仍是久居猿门内,今天的分享你不得不了解一下,说不定能解决你的燃眉之急。web


01. 重复性的劳动(小白)面试


Q: 平常研发过程当中,你是否已经沉迷于如下几个操做步骤呢?tomcat


步骤一:同步更新本地项目 (SVN or Git)服务器

步骤二:本地项目编译打包 demo-web.war并发

步骤三:上传到服务器指定目录,例如:XShell、SecureCRT(显着牛掰的用rz)app

步骤四:重启 Web 应用服务器,例如:Tomcat、Resin。webapp


那沉迷于以上操做之余,有没有寻找过一款轮子,提高一下本身的开发效率,腾出更多时间去冲咖啡呢?maven



02. 腾出更多时间冲咖啡(久居猿门)svn


凡有人的地方都有江湖,凡是重复出力的地方,咱们均可以抽象出一款轮子,说白了也就是能够偷点懒。


从百宝箱里拿出开发过程当中,平时经常使用的自动化部署脚本 auto_deploy.sh 稍做分享,话很少说,直奔代码。


# 第 0 步:程序猿的世界都是从 0 开始,准备工做。

#!/bin/sh

projectName=demo_app

tomcatName=tomcat-7.0.90

tomcatPath=/app/tomcat/${tomcatName}

svnPath=/app/deploy/demo_app

targetProject=/target/demo_app-1.0/


# 第一步:进入 svn 目录,并进行更新,而后进行 maven 编译打包

# 其中 -P 后跟的是环境信息,若是项目区分开发、测试、生产配置不一样,则颇有必要。其中 maven 相关命令本次就不作深刻剖析啦。

cd ${svnPath} && svn update && mvn clean install -P dev -Dmaven.test.skip=true


# 第二步:进入 tomcat 目录,并中止 tomcat 服务

cd ${tomcatPath}/bin && ./shutdown.sh

kill -9 `ps -ef | grep ${tomcatName} | grep -v 'grep' | awk '{print $2}'`


# 第三步:进入 tomcat 应用部署目录,删除原有项目;

# 采用 rsync 进行同步除了.svn文件夹之外的全部文件,到 tomcat 应用部署目录

cd ${tomcatPath}/webapps && rm -rf ./*

rsync --exclude=.svn -r ${svnPath}${targetProject} ${tomcatPath}/webapps/${projectName}


# 第四步:启动 tomcat 应用服务器。

cd ${tomcatPath}/bin && ./startup.sh


到此,集 SVN + Maven + Tomcat 于一体的自动化发布脚本就完成了,其它编译、部署环境思想也雷同,照猫画虎分分钟 Copy 一套。


打造的一切技术轮子都是纸老虎。有时,发现打破纸老虎的最佳方法,莫过于亲身实践,大家不妨拿去试用一下,说不定会让你事半功倍,抽出更多时间冲咖啡。


03. 数据报告自动化(猿门顿悟)


明天要开产品技术大会,小王你统计一下天天接口访问量以及并发峰值。你们都懂就是拿出真实数据出来吹吹牛。


通常面试的时候,我也会常常问求职者这个问题,看看有没有相关解决思路。


条条思路通罗马,而你只需学会一招,由于一招在手,从此无忧。下面说一下分享一下个人解决思路。


从格式良好的简要日志提及。顾名思义,简要日志突出的是"简要"。通常只需包含:全局惟一的请求流水号,请求时间,接口名称,请求处理时间,返回码,返回描述信息。


举个栗子,深刻剖析。


简要日志的格式为:

reqId,yyyyMMdd,hhmmss,功能,请求处理耗时,返回码,返回信息描述


简要日志内容示栗:

R2019061029823,20190610,102737,UserQuery,10ms,0000,操做成功


简要日志栗子剖析:

全局请求ID为:R2019061029823

请求日期为:20190610

请求时间为:102737

请求接口为:UserQuery

请求耗时为:10ms

请求返回码为:0000

请求返回描述为:操做成功

分割符为:逗号(,)


简要日志搞定数据来源,那么接下来就是解析数据。稍微码过两天代码,解决这个问题都不是难题。


喜欢用 Linux 命令的,一行搞定全部(cat + cut + sort + uniq + head);喜欢用 Java 的,随便找一文件 IO 工具类,而后按行读取,再按照分割符分割,点到为止,so easy;喜欢用 python 的,请来熊猫 pandas 烧柱香,分分钟也能解决问题。


搞定简要日志拆分,那么把拆分后的数据稍做统计,再配上一杯定时任务的美酒,那就能够乐呵呵的天天看应用运行的指标结果啦。


到此,应用数据报告自动化难题就迎刃而解啦。


04. 带你装牛X,带你飞(猿门升华)


谈及自动化部署,除了本文中提到的简单的 auto_deploy.sh,那么不得不说一下基于 Java 开发的一种持续集成工具 Jenkins,它是一个集代码编译、打包、部署的 web 界面的平台,若是条件容许的状况下,不妨尝试使用一下。


谈及应用数据自动化,那么不得再也不升华一下。搞定了简要日志数据来源、简要日志数据分析,那么若是再配上一个漂亮的页面,那不就包装成产品啦(哈哈),若是稍加推广,那岂不是能够赚钱啦(低调低调)。


05. 寄语写在最后


仍是那句话“拒绝温水煮青蛙,拒绝一味的 CRUD”,若是平时工做中遇到重复性劳动,那么不妨稍微思考一二,看看有没有更好的技术轮子能够引进,说不定会提升工做效率,那么就能够抽出更多时间去喝咖啡、抽出更多时间去忙点本身的事情。


码字不易,码出能让你一看就懂的文章更不易。若是感受稍微有点意思,不用赞扬,就点击右下角的“在看”,或者多多分享转发给你的朋友就很感激。

相关文章
相关标签/搜索