研發中那些能夠自動化的事情

估計已經很多粉絲已經在線等急啦。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」,若是平時工做中遇到重複性勞動,那麼不妨稍微思考一二,看看有沒有更好的技術輪子能夠引進,說不定會提升工做效率,那麼就能夠抽出更多時間去喝咖啡、抽出更多時間去忙點本身的事情。


碼字不易,碼出能讓你一看就懂的文章更不易。若是感受稍微有點意思,不用讚揚,就點擊右下角的「在看」,或者多多分享轉發給你的朋友就很感激。

相關文章
相關標籤/搜索