自動化 XXX 的陷阱
今天把這段埋藏很久的想法,分享給公司內年輕的朋友:『自動化測試?』我提出來的問題是,我們平常說的『自動化』真的是自動化?什麼是『自動化』?
- 自動化測試
- 自動化部署
- 自動化維運
自動化挖礦自動化加薪- 自動化 就是 黑魔法
- 有『自動化』就下班了
我的看法是:不要陷入『自動化 XXX 』的迷思,特別是『中文』語意常常有陷阱。。。
聽起像是在鑽牛角尖的文字遊戲。。。且聽我 Tiger and Blue 。。。
- Updated 2023/07/19: 本文部分內容收錄在個人著作 《SRE 實踐與開發平台指南》 - 2023/08 上市
自動化 XXX - 陷阱
我覺得一般說的 自動化
大多說的是把 程序 / 步驟
變成程式碼,透過排程、或者其他方式驅動跑起來。。。
說文解字一下,先翻譯成英文:
- 自動化:Automation / Automatic
- 程序:Process / Procedure
- 步驟:Steps
自動化
其實是把 程序 / 步驟
變成程式碼,所以 自動化 = 程序 = 步驟
,所以:
1 | Automation = Process Control = Steps ?? |
What? Are you kidding me ???
別鬧了。。。這就跟中文說 監控 意思很詭異一樣,其實只有 監 (Monitor)
的語意,沒有 控 (Control)
的意義,明明就是兩件事都要有,卻完全忽略另一個很重要的 控制
。我知道這國文老師會說這叫做『偏義副詞』。。。不過搞 IT 應該沒有 偏義
這種事情。。
什麼是『自動化』?
軟體系統的自動化監控
很久以前,老闆就希望我們可以試著把監控的 Alert 通知,後續維護的動作變成『自動化』,然後大家又可以躺著幹。。。實務上,可以從以下的角度切入:
- 要有 realtime 監控指標的 Solution,我選擇 AWS CloudWatch Log 作為 Solution
- 主要是我可以自訂 Log ,然後產生自訂的監控指標。
- CWL 這段幾乎都可以透過 “程序” 部署與管理
- 監控指標達到某一個臨界值 (Threshold) 之後,不是直接發動
Action
,最難的是要決定
發動哪一個 Action,或者怎樣的 Action?通常這件事情都需要 “人” 才能判斷。
所以我整理出以下的流程圖,這張圖 Feedback
,從 Log Collection
-> Analyze
-> Conditions
-> Actions
是標準的 Log Process or Big Data Process,我只是做一些修改而已:
這段最難的是 Conditions
的部分,也就是通常是需要人為判斷,才能下 Actions
,這段未來可能會是 AI / ML
取代人的判斷。
下圖則是 AWS Big Data 的 Process,這個流程也是我拿來做 Log Process 的主要參考流程:
出處:AWS Summit 2016: Big Data Architectural Patterns and Best Practices
當然撇除我的鑽牛角尖,做到簡單的 程序性
控制是不難的,類似的概念在 淺談系統監控與 CloudWatch 的應用 有說明,大概是 CWL + SNS + Lambda 。
結論
這段想法其實是我兩年多前,剛到公司時想分享的心得,簡報做好後,因為一些原因,沒有真的拿出來分享,但想法一直放在心裡。後來把這段想法放在系統監控應用裡。
身為 IT 人員,遇到英文縮寫是很理所當然的,但是縮寫那麼多,沒有搞懂意思,是不容易記憶的。所以,我會盡可能而把每個字的意涵都弄清楚。。。。
像是我常常會問同仁 VPC、ELB、EC2 全名是啥?你有思考名字背後的意義嗎?還是你寫程式都亂取變數名稱?反正能動就好。。
不過不要以為我自圓其說之後,以後我就不會用『自動化』來溝通,因為普遍的人已經習慣那樣用了,特立獨行只會被當作是來亂的 XDD
延伸閱讀
- 個人著作《SRE 實踐與開發平台指南》 (2023/08 上市)
- What is Automation?
- 自動化帶來的問題
- 淺談系統監控與 CloudWatch 的應用 - AWS User Group Taiwan
- 軟體自動化測試常見的問題
- What is Ops?
- 思考本質、實踐、想像力、教育
參考資料
- SRE - Ch12 Effective Troubleshooting
- Automatic Control#Open-loop and closed-loop (feedback) control
- AWS Summit Series 2016: Big Data Architectural Patterns and Best Practices on AWS
- Process control