『自動化 XXX』的陷阱


今天把這段埋藏很久的想法,分享給公司內年輕的朋友:『自動化測試?』我提出來的問題是,我們平常說的『自動化』真的是自動化?什麼是『自動化』?

  • 自動化測試
  • 自動化部署
  • 自動化維運
  • 自動化挖礦
  • 自動化加薪
  • 自動化 就是 黑魔法
  • 有『自動化』就下班了

我的看法是:不要陷入『自動化 XXX 』的迷思,特別是『中文』語意常常有陷阱。。。

聽起像是在鑽牛角尖的文字遊戲。。。且聽我 Tiger and Blue 。。。


自動化 XXX - 陷阱

我覺得一般說的 自動化 大多說的是把 程序 / 步驟 變成程式碼,透過排程、或者其他方式驅動跑起來。。。

說文解字一下,先翻譯成英文:

  • 自動化:Automation / Automatic
  • 程序:Process / Procedure
  • 步驟:Steps

自動化 其實是把 程序 / 步驟 變成程式碼,所以 自動化 = 程序 = 步驟,所以:

1
Automation = Process Control = Steps ??

What? Are you kidding me ???

別鬧了。。。這就跟中文說 監控 意思很詭異一樣,其實只有 監 (Monitor) 的語意,沒有 控 (Control) 的意義,明明就是兩件事都要有,卻完全忽略另一個很重要的 控制。我知道這國文老師會說這叫做『偏義副詞』。。。不過搞 IT 應該沒有 偏義 這種事情。。

什麼是『自動化』?

參閱:What is Automation?

軟體系統的自動化監控

很久以前,老闆就希望我們可以試著把監控的 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

延伸閱讀

參考資料


Comments