2021年10月24日 星期日

+壓力-身段×堅強÷任性

#一起看廣告

昨天晚上,做了個夢。
我夢到在駕駛座上睡著了,然後被後座的其他乘客叫醒,乘客急急忙忙地跟我說:『ㄟㄟ,David,你睡著了啦!! 車還在開耶…』

我回答:『對耶,啊…有自動駕駛啦…』
然後我就繼續睡了…

早上起床突然想到,跟老婆說。
她說:『好啦,收到,我知道你有多想買自動駕駛的車了…』

古人說:『日有所思,夜有所夢。』可能真的是因為,這陣子看了好多汽車廣告。

最近看到 Ford 的廣告拍得很好,分別是林依晨的 New Focus (很值得看)

還有先前張鈞甯的 KUGA: (超好看)

後來又補一個:

上面這兩個廣告我都超推,不看你會後悔。但某天,我看著看著,卻讓我回憶起十多年前的這一支廣告。總覺得 Ford 的車怎麼樣我不知道(沒開過),但廣告總是拍得很有意境:

+壓力-身段×堅強÷任性
換算之後,你是否還記得真實的自己?

當初看上面這則廣告時,自己還是個帶著無限衝勁,剛站穩在職場上的少年。

但,這十幾年(也才十幾年),很多事情都改變了。環境變了,世界也變了。傲氣收斂成淡淡的執著,衝勁則被多慮的思緒給撫平了。

年輕人總是想『做自己』(相信我,這並非時下青年的特色,每一個世代都是)。但,到了最近這個年紀,才發現,原來做自己之前,還得先找到自己。很顯然的,年輕時不顧後果地去凸顯自己的任性,並不是做自己。

當你找到並認識自己是誰,明白自己的能力和限制,還能無畏著外界的眼光,放下纏累自己的包袱,不跟他人比較、不被世俗的成功定義,還有勇和氣餘力踏上自己想走的路。持續走下去…這樣,才是做自己。

『做自己』要的不單單只是一股衝勁,而是認真的認識並面對自己的個性和缺點、堅持著持續超越和挑戰自己的毅力。

2021年8月8日 星期日

Azure WVD-讓你在瀏覽器中執行 Windows 10

如何在瀏覽器中執行 Windows?

要談這件事情前,我們得說說為何會有這個需要? 雖然對我而言,這個需求是顯而易見的。

虛擬桌面的美好想像

過去在企業環境中,使用vmware或hyper-v搭建一整套給用戶的虛擬工作環境,或是採用RDP以multi-session的形式提供用戶透過遠端連入的工作環境,都是企業內很常見的使用方式。

這樣做帶來幾個好處:

  1. 用戶端的實體設備等級不用太高,因為大量工作實際上都運行在遠端機房。
  2. 安全性容易控制,因為實際運行的程式大多也都在機房。
  3. MIS/IT人員不再需要為每一台用戶端設備傷腦筋。用戶端隨便用任何一台設備,登入遠端虛擬桌面後,都可以立即讓同仁開始工作。
  4. 同仁即便在遠端(家裡、網咖)、拿自己的NB也可以隨時連入工作(WFH居家辦公一次搞定)

隨手都能舉出好幾個理由,讓大部分MIT/IT人員對於遠端虛擬桌面有許多美好想像(包含我在內)。

自從有了Azure雲端之後,事實上我的桌機或NB的硬體更新頻率越來越低,因為大部分我工作都直接透過RDP用雲端上的VM來進行。這樣有許多好處。包含,有需要時隨手可以把VM升級成16或32G的記憶體,硬碟空間更是要多大有多大,只要網路速度可以,在遠端VM上工作比local實體機效率來的高上不少,算是一個頗奢侈豪華的享受。

對我個人來說,這樣做也有另一個好處,方便我把工作和個人電腦分開,工作我一律用雲端VM,個人NB則大多做些教育訓練或私人的事情,工作時只需要從NB連上雲端VM即可,環境乾淨不容易混亂或衝突。

需要克服的缺點

然而,使用RDP從NB連上雲端windows 10的VM,對很多人來說已經很美好,但我覺得還是有些缺點。當我想要大範圍的導入時,會碰到一些障礙:

  1. RDP採用3389 port,常常在企業內有被擋掉的可能。
  2. RDP在MAC環境可以用,但在android和iOS上還是有不少限制。在Windows環境上用戶也需要一點基本概念,才能夠使用。
  3. 用戶端的RDP上會保留有連線位置等資訊,在網咖或是外部環境使用相對風險比較高。

Azure WVD解決方案

因此,當我聽到Azure上的WVD解決方案時,實在非常心動。比起單純的RDP和雲端VM(或是地端的hyper-v, vmware),它有底下好處:

  1. 用戶端只需要有瀏覽器(Chrome/Edge)就可以運作,可透過網頁直接操作遠端VM,也不需要搭建VPN。(圖一)
  2. 在雲端可以建立虛擬機(VM)的集區,讓多台windows 10服務多位用戶。可以讓多位用戶可以被平均分攤到每一台Windows 10環境上工作。(圖二)
  3. 伺服器端可以看到用戶目前位於哪一台虛擬機,電腦集區中的VM支援清空模式,當需要維護特定VM時非常方便。(圖三)
  4. 可以建立多種工作環境,讓不同類型需求的用戶,使用適合自己的工作環境。(圖四)
  5. 若有需要,可以隨時從Azure Portal發送訊息給VM用戶,讓某一台VM上的用戶收到通知。(圖三) (圖五)
  6. Azure VM本身就可以隨著需要而動態擴充,加大記憶體或硬碟,而無須重建VM環境。
  7. 支援剪貼簿複製、列印、檔案傳輸、音訊。不過你可別忘了,沒有RDP用戶端,運行在瀏覽器中的遠端虛擬桌面,是怎麼實現這些功能的? 它的作法很有趣…

還有很多好玩的地方,讀者可以先對照著上面的說明,看看底下這些附圖:

圖一:
enter image description here

圖二:
enter image description here

圖三:
enter image description here

圖四:
enter image description here

圖五:
enter image description here

光在瀏覽器中可以執行這一項,就是我覺得很驚艷的功能。但有沒有想過,如果沒有RDP Client,那它怎麼完成檔案的上傳和下載?

如何實現列印以及檔案上傳與下載?

WVD對於列印的實作很有意思,如果用戶在連入的時候,選擇支援列印功能,則會看到雲端虛擬機上多了一台印表機:
enter image description here

如果對這台印表機列印,會出現一個很有趣的事情。你會發現,列印的東西會被轉成PDF然後在你的瀏覽器中變成下載檔案:
enter image description here

這解決了在瀏覽器環境中運行虛擬桌面的文件列印問題。

同樣的,檔案的上傳與下載也是採用類似的機制,如果你想將VM中的某個檔案傳遞到Local本機電腦上,只需要把該檔案複製到VM裡面的下載檔案資料夾:
enter image description here
該檔案就能夠自動的被瀏覽器下載,你就可以在本機電腦上取得該檔案了。

而上傳更簡單,只需要點選VM右上角的上傳鈕,即可從用戶端上傳檔案到VM上,被上傳的檔案會出現在VM的 『遠端桌面虛擬磁碟機\上傳』 資料夾中…
enter image description here

好玩吧? 我可是玩得不亦樂乎。

如何架設WVD環境?

至於如何架設WVD的環境,我得說,從我這個寫程式的人的角度來說,確實沒有很容易。有許多背景知識你需要知道,諸如Windows AD和AAD(Azure AD)以及AADDS(Azure AD Domain Services)之間的關係。以及讓VM加入網域這一塊,著實花了我不少時間。

我建議交給有經驗的雲端技術工程師來進行,如果您想嘗試看看,可以參考底下這篇偉任的介紹,這篇文幫了我不少忙:
https://www.netadmin.com.tw/netadmin/zh-tw/technology/230DC44996D24A5EB2A66679B9966293

另外,文章完成後,網友弘宇提供我底下這份文件,對於整個安裝過程也有非常詳細的介紹,甚至還有HOL唷,大家可以參考看看:
https://github.com/BrianHsing/Azure-Virtual-Desktop?fbclid=IwAR1lyP7c7GhcR9RSjCdMSYLx37-_WEUaRw8vjQl1X_KS5LTho5fY8-o345o

結語

最後,我覺得WVD算是微軟最近幾年在虛擬桌面這一塊整合性和完整度最高的一次展現,其實用戶端除了瀏覽器之外,還可以用iOS, Android,當然在MAC上也有支援。

對於MIS/IT來說,絕對是WFH的非常好的一個解決方案。
祝您玩得愉快, enjoy it.

2021年7月5日 星期一

周末讀書會:時間真的等於金錢???

enter image description here
我正在讀一本奇書,裡面有個觀念頗有意思。但在分享之前,我先問你一個問題…

你覺得…過去一年,哪一段時間你的生產力最高?
那段時間會不會正好是你最忙的時候?

其實並不一定,對不對? 也就是說,你可能很忙,但完全沒產出甚麼有價值的成果(俗話說是「瞎忙」),也可能實際工時很少,但成果豐碩(特別是創作者)。

書中有一個章節告訴我們,如果想提高生產力,你必須減少工作時數(注意,不是增加)。作者覺得,傳統的時間管理很有問題,因為工作時數不等於生產力。這部分你可能跟我一樣,我始終覺得,企業用工時來計算薪資(或是專案成本)是件很奇怪的事情。老闆想要(買)的到底是"成果"? 還是想要 “看到我在辦公室出現”?

這是大家都知道的道理,但如今這個持續了那麼久,讓我們覺得不可思議的薪資和成本設計,是過去一百年來延續出的結果(這邊我要提到另一本過去介紹過的書『組織再進化』,有空可以自己去看看)。你知道,過去(工業革命時代),“時間就是金錢”,那時候生產線林立,勞工的上班時間就100%等於產出時間,下了班離開了工廠、沒了生產設備就什麼事都不能做(也就是沒有產出)。

因此,在那個時代,工時=薪資(或成本)是很有道理的。但,這已經是將近一百年前的事情了,想想好玩,如今我們的勞基法的基本精神卻還是基於那個年代?

而今天,對我們(特別是開發、創作人員來說),工時跟生產力之間根本沒有必然的關係。你一定有這種經驗,有時候你靈思泉湧、創作如同神來之筆,半小時內可以完成平時三四倍的工作量。而另一些時間,你可能沒睡飽或因為私事思緒混亂,這時就算在辦公室待上一整天也做不完任何一件事情。

所以這本書的作者認為,“時間” 根本並不重要,專注力與精力才是重點。(好啦,他其實沒這麼說,他覺得時間也很重要,但不是唯一重要)

同時,他還做了一個有趣的實驗,實驗結果顯示,當工時加倍,其實最終的有效工作產出只比工時減半時增加了 “一點點”。但有趣的部份是,當事人總會 “以為” 自己的產出很高(因為感覺自己很忙),但統計之後則是發現 “根本沒有”。

我覺得這也解釋了,為何辦公室中許多主管很喜歡一直開會,因為開會會讓自己主觀上覺得一直很忙、一直有產出,但其實…你知道的,根本沒有。

所以,總的來說。

  1. 工時越長,並不代表工作成果(或產出)會越好
  2. 傳統時間管理很有問題,因為重要的(你想要的)根本不是時間
  3. 重點在於怎麼使用自己專注力最佳、精力最高的那段時間來工作

至於怎麼做,你可以看書,書裡面有講,我就不多說了。


WFH時代,我根本不在乎同仁工時有多少,因為,我想要的是成果,不是想花錢買員工出現在我面前的時數。

最有生產力的一年 (電子書)

2021年6月12日 星期六

讓Microsoft 365(Teams)的身分驗證支援2FA(Two-Factor Authentication)

enter image description here
前面說過,最近因為WFH的關係,協助了一些公司將許多地端的OA相關應用移動到像是Microsoft 365、teams、與Azure等雲端環境上,以確保萬一封城或是台灣大規模分區停電下,企業主要服務依舊可以透過雲端來存取和運行。也因為如此,上次和大家分享了如何在家裡透過VPN連上Azure,以安全的方式來存取雲端資源。

但除了讓用戶走VPN去存取雲端資源,以避免讓雲端上的資料或服務公開在網際網路上(讓駭客當箭靶),另外一個非常基本卻重要的機制,是使用M365/Teams/Azure等雲端服務的企業不該忽略的,也就是2FA(Two-Factor Authentication)。

很多企業用戶可能根本不知道,瀏覽器上常見的登入行為,本身就有機會造成資安疑慮的最大風險,只要用戶在不熟悉的電腦上登入(例如網咖、公用電腦、別人的筆電…)或是用了不熟悉的網路(像是車站、咖啡廳、或是網路上隨意搜尋到的免費WIFI分享網路),都很可能在無意之間讓你的帳密外洩。

由於Azure和Microsoft 365(包含MS Teams)都是攤在網際網路上的服務,倘若用戶一不小心帳密外洩,那造成的風險恐怕也是不低的。

如何讓帳密更安全嚴謹的使用呢? 答案就是2FA(Two-Factor Authentication),關於2FA的細節你很容易在網路上找到,這邊就不多提了,總之微軟除了讓用戶以帳密登入以外,還提供你多重的身分驗證機制,例如手機簡訊就是其中之一。

簡單的說,你可以將M365或是Azure帳密設定為 – 在陌生的電腦上登入時,即便正確輸入帳密,還得再透過手機簡訊進行2次驗證(也可以用App進行驗證)。如此一來,可以大幅增加駭客的攻擊難度,避免你在密碼不小心外洩(或被猜對)時,遭受到駭客的入侵。

讓admin開放此功能

設定的方式很簡單,首先,你必須讓M365(Teams)管理員幫你從後台開起這個功能,它位於M365的admin center–>設定–>組織設定–>多重要素驗證:
enter image description here

admin可以透過底下UI找到要開啟此功能的用戶,並且點選『啟用』即可:
enter image description here

你會看到底下畫面:
enter image description here

用戶設定2FA驗證(以手機簡訊為例)

啟用之後,下次該用戶成功登入後,就會發信自己被引導到底下畫面:
enter image description here

進入下一步之後,系統會讓你選擇第二重驗證方式:
enter image description here

你可以選擇行動電話驗證,輸入號碼並選擇使用簡訊驗證之後,按下『下一步』即可:
enter image description here
這時候,微軟會傳簡訊到你輸入的手機號碼上,請把簡訊中的數字輸入上圖畫面,並點選『驗證』鈕。

這時其實已經大致設定完畢,最後會出現底下畫面:
enter image description here
這是為了讓目前尚不支援2FA的環境可以有替代方案,直接點選上圖完成即口。

登入時

設定好之後,用戶的登入其實完全一樣,在都登入時的第一個畫面,都必須輸入帳號密碼:
enter image description here
但不同的是,當成功登入之後,若該電腦(設備)是第一次登入,則會跳出底下畫面:
enter image description here
這時快查看你的手機,你會發現手機上收到MS傳來的簡訊,其中包含六位數字代碼,請正確的輸入該六位數字代碼後,你才會獲得登入。

透過這樣的方式,你可以更安全的使用雲端的服務,即便萬一不小心密碼被猜中,你還有第二道防線"手機簡訊",可以保護你的身分不致外洩。雖然很容易,但企業內卻有許多用戶沒有做這樣的設定。趁著WFH,快鼓勵企業用戶為自己的資安加上第二道鎖吧。

2021年6月8日 星期二

WFH必備-在家中透過VPN使用Azure雲端上的服務

在一般的承平時期,企業內部網路要連接到位於雲端的服務,可能會採用 site to site VPN的形式,也就是把企業內網與Azure雲端的虛擬網路透過VPN互聯,達到安全連線的效果:
enter image description here

需求

但最近這幾周,很多企業開始居家上班(WFH),導致用戶需要從家裡存取雲端上的服務,不管是伺服器、網站、資料庫、或是檔案系統…這時候,該怎麼辦呢?

你可能會說,這很容易啊,位於azure上公有雲的服務,都有對外(對internet)的IP,只要開放讓同仁從家裡連線不就得了? 當然不行,因為如此一來,等於把企業的應用攤在網際網路上讓駭客當箭靶練習入侵,因此,我們還是必須走一個安全的方式才行。

做法有兩種,一個是在企業的防火牆上,開放用戶透過VPN從家裡連線的管道,讓用戶先從家裡連到公司,再從公司透過VPN存取雲端的服務。但這樣等於是透過企業機房作為橋接,大部分公司我猜也是這麼做,但有個小缺點,如果台灣斷電(別跟我說不可能),那所有的服務就只能停擺了,即便根本沒受影響的雲端服務也是。

因此,另一種作法呢,則是直接讓用戶從家裡以VPN連線到 Azure 雲端服務,直接存取企業在Azure雲端上的資源,如果你根本把整個企業機房(或上面的主要服務)都移上雲端上(做異地備援或主要服務),更適合這麼作:
enter image description here
這篇文章要介紹的,就是上面這個模式。

如何讓員工,直接透過VPN,從家裡(其實從公司也行)透過網際網路安全的連線到企業位於公有雲上的資源。

環境說明

好,為了說明這個情境,我們建立了一個簡單的模擬。請再仔細看一下上面這張圖,其中有幾個需要注意的部分:

  1. 假設企業在雲端有兩台VM(提供了企業的主要應用,先別管是DB還是AP是WEB…反正就是個情境),IP位置分別是10.0.0.4, 10.0.0.5,這兩台VM使用同一個虛擬網路,其子網路是10.0.0.0/24,這個虛擬網路就是待會我們要讓員工從家裡連上的虛擬網路。
  2. 為了讓員工從家裡安全的連上虛擬網路,我們有設置了一個Virtual Network Gateway,員工要從家裡連上虛擬網路,必須通過這個Virtual Network Gateway。
  3. 從家裡連上Virtual Network Gateway的工具,是Azure VPN Client,而我們用的驗證方式,是採用Azure AD 驗證,這意味著你必須要有一個AAD(放心,只要你用了Azure表示你一定有)。

好,有了上面的概念之後,就開始實作了。
由於我們的情境下,雲端環境上有兩台VM,我們規劃的位置是10.0.0.x,因此,我們會先建立一個虛擬網路(10.0.0.0/16),並且指定子網路為(10.0.0.0/24):
enter image description here

然後再在建立VM的時候,幫VM指定使用這個虛擬網路:
enter image description here
如此一來,建立出來的VM就會在該虛擬網路的子網路IP區段中。

如果你建立多台VM,你會發現這幾台VM可以用內部IP互通:
enter image description here

同時在v-net中也可以看到:
enter image description here

建立gateway

基本環境沒問題之後,請參考下圖,接下來我們要建立virtual network gateway的部分:
enter image description here

Virtual Network Gateway的建立採預設參數即可,但需要留意,建立的時候『虛擬網路』的部分必須選擇上面包含我們VM的這個虛擬網路(這理所當然),建立好之後,請點選Virtual Network Gateway的『點對站(P2S)設定』:

enter image description here

其中有幾個關鍵,首先,你知道的,當外部的用戶透過家裡(或網咖、或公司)連入我們在Azure雲端上的虛擬網路時,必須走VPN,因此也理當有個安全的身分驗證方式,因此我們在上面選擇了Azure AD作為身分驗證方式(上圖B),所以你會發現下方C、D、E的部分,就是為了設定AAD的相關資訊,其中被霧化的是AAD的租用戶ID,這個資訊你可以從你的AAD管理頁面中找到:
enter image description here

你會發現下圖中的D,有一個GUID,這是Azure AD 企業應用程式的ID,一般Public Azure我們用41b23e61-6c1e-4545-b367-cd054e0ed4b4。這部分的細節可以參考微軟官網: 建立 P2S VPN 連線的 Azure AD 租使用者: Azure AD 驗證 - Azure VPN Gateway | Microsoft Docs

enter image description here

設定好並且儲存了之後,請別忘記點選上圖F中的連結,他會跳出一個視窗要你登入(請用具有AAD管理員身分的帳號登入),他會引導你同意應用程式授權,這個動作是讓該應用程式具有使用你AAD部分資訊的權利。(等於是我們在AAD上安裝了個應用程式,如下圖…)
enter image description here
有沒有,上圖就是AAD中安裝了的那個應用程式(Azure VPN)。其實也就是為你提供VPN 驗證服務的伺服器端啦。

設定用戶端

好,有了這些之後,我們要來設定Client,也就是能讓同仁從家裡(其實公司也行)以AAD帳密Azure雲端虛擬網路的用戶端機制。

請點選上方的下載VPN用戶端,這個動作會花幾分鐘,請耐心等候:
enter image description here

你會下載到一個檔案,解壓縮後,會看到AzureVPN資料夾下,有一個xml文件:
enter image description here

他是一個組態檔,讓你可以從windows 10以VPN方式連入雲端,主要是提供給Azure VPN 用戶端這個程式用的:
enter image description here

如果你沒有上面這個程式,請從 windows 市集下載(位於: 取得 Azure VPN 用戶端 - Microsoft Store zh-TW )。下載完之後,把組態檔匯入即可。

但別急,你要正確地使用該應用程式,還必須做一個設定。

請參考底下微軟官網上的文件,設定P2S的憑證:
產生和匯出 P2S 的憑證: PowerShell - Azure VPN Gateway | Microsoft Docs

你可以直接透過powershell執行底下這兩段code:

$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject "CN=P2SRootCert" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign

New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature ` -Subject "CN=P2SChildCert" -KeyExportPolicy Exportable ` -HashAlgorithm sha256 -KeyLength  2048 ` -CertStoreLocation "Cert:\CurrentUser\My" ` -Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")

他將會幫你在用戶端建立憑證。

完成後,開啟 Azure VPN Client,將剛才的.xml設定檔匯入:
enter image description here

你會發現相關的設定資訊其實跟剛才我們在gateway上建立的差不多:
enter image description here

完成後,你就有個可以直接連上Azure雲端虛擬網路的VPN可以用了:
enter image description here

透過上面這個設定,我們可以輕鬆的以VPN連入雲端,以內部IP的方式,啟動VM的遠端桌面連線:
enter image description here

當然不只是VM,上面只是透過VM來示範,而DB、AP Server或其他服務也是一樣的。當這樣的機制設定好之後,我們等同可以從家裏或公司,以VPN方式,安全的連入位於公有雲的雲端上的服務和應用、伺服器,而不需要把這些服務或伺服器攤在網際網路上當箭靶。是一個更適合企業在WFH階段使用雲端服務更好的方式。

2021年4月20日 星期二

如何在CI CD Pipeline中發送LINE通知訊息?

『如何在CI/CD Pipeline中發送LINE通知訊息?』有次,Azure DevOps上課時學員問了這個問題。

我聽到之後忍不住說:『這位同學你問得太好了!!!』
耐不住心中竊喜,繼續說道:『本人剛好有30秒可達成的全球最佳解決方案。😁』

要知道,關於LINE和Azure DevOps這兩個主題,分開來討論時我也向來是不落人後的,現在這兩個主題合在一起,那我當然就更不客氣了。

開啟Pipeline,我說『請看,第一個步驟,在pipeline中,加入『Use .net core』task:
enter image description here

接著,第二步,上LINE Notify官網,建立一個發訊息給你自己(或群組)的LINE Notify Token:
enter image description here

你會取得一個長得像底下這樣的token:
3QrpcH5XauJVoFCoSxbuWJH747TkC7yW5aXfsDk7RsM

然後,第三步驟,在Pipeline中,加入一個PowerShell Task,在inline script中填入底下指令:

dotnet tool install --global line.cli 
line notify -n 3QrpcH5XauJVoFCoSxbuWJH747TxC7yW5aXfsDk7RsM -m "$(Build.BuildNumber) is done. 狀態: $(Agent.JobStatus)"

enter image description here
然後? 然後就完成了。

現在,你可以自由的在上面這段script中發送訊息給自己(或自己的群組),當然還可以帶入環境變數$(…)。如此一來,每當CI build完成之後,不管成功或失敗,你都可以即時地取得通知,例如:
enter image description here

這一招,我們採用的是跨平台的 .net core,因此,不管你的build agent是MAC、Linux、還是Windows通通都支援啦😎。


相關課程:

敏捷開發專案管理與Azure DevOps實戰
https://www.studyhost.tw/NewCourses/ALM

LINE Bot與人工智慧實戰
https://www.studyhost.tw/NewCourses/LineBot

2021年4月17日 星期六

透過持續改善縮短你的cycle time

底下這張圖,看起來頗有學問…
圖片來自MS Azure DevOps AZ-400-1
圖片來自MS Azure DevOps AZ-400-1

我們在上DevOps的課程時,第一件事就問同學:在這個大企業林立、變化迅速的時代,新創或台灣的小公司在充滿資源的全球大企業輾壓下,要如何存活?

John Boyd的OODA循環帶給我們一個契機,如果你有興趣,可以google一下OODA循環,在wiki百科中的描述如下:

OODA循環的理論,來自於美國空軍在韓戰中的經驗。 在韓戰中擔任戰鬥機飛行員的空軍上校約翰·博伊德(John Boyd)認為,美國空軍過於注重速度,在越戰的早期空戰中,這一點就已凸顯出來。而與之形成鮮明對比的是,過時的蘇聯製米格戰鬥機卻在戰場上如魚得水,原因是因為米格機相對容易操作。 在對於競爭型戰鬥機進行了一番詳細分析之後,博伊德的結論是,飛機在空戰中最關鍵的性能並非絕對速度,而是敏捷度。在混戰中反應能力最強的戰鬥機能夠繞到敵人身後,隨時準備置敵於死地。 博伊德將其想法總結形成「OODA理論」。

在如今真實世界的挑戰中也是,最關鍵的性能並非『絕對速度』,而是『敏捷度』。這是新創和科技公司在最近這20年屢屢戰勝的核心原因。即便大公司擁有更多的資源,但面對挑戰總是輸在自身遲緩的反應上…

因此,DevOps的核心工作,其實是『持續改善,並竭盡所能的縮短你的循環時間(Shorten your cycle time)』。

這些cycle time包含…你修復一個Bug所需要的時間(改善一個錯誤的時間)、你增加一個新功能所需要的時間(在市場上提供新服務的時間)、學習並應用一們新的技術所需要的時間…

而這些縮短且省下的時間,就是你持續改善的所得到的『價值(Value)』,也是企業贏的關鍵。你的『持續改善』(持續縮小cycle time)最終停留在哪一點,你企業(或個人)的限制(瓶頸)就在哪一點出現。
圖片來自MS Azure DevOps AZ-400-1
圖片來自MS Azure DevOps AZ-400-1

因此,DevOps追求的是持續改善、持續整合,透過不斷合併與測試,盡早發現缺陷,盡早改善,就是DevOps中CI(continuous integration)做的事情。

面對縮短cycle time的挑戰…

  • 你能多快修復一個bug?
  • 你能多快上版(當然得同時兼顧安全性與品質)?
  • 新功能能夠多快交付到用戶手上?
  • 新構想能夠多快在市場上開始實驗?

改善的瓶頸,決定了企業的瓶頸。持續改善,能讓你的進步與競爭力能夠持續延續…


相關課程:
https://www.studyhost.tw/NewCourses/ALM

熱門文章