Edward Kuo

ML.NET出來一段時間,在Visual Studio 2022上市後,它也邁入Release版本,之前都有聽過,但沒有實際用過。這次就來嘗試用一個簡單測試案例,看要如何開始使用ML.NET 撰寫一個具有ML功能的Console程式。

首先,必須在Visual Studio安裝一個叫做ML.NET Model Builder的套件

--

--

微軟有Microsoft 365,有Azure又有其他雲服務,每個服務計費方式都不太相同,也導致想要使用Azure DevOps Service的人,對於Azure DevOps的計費也常常搞不清楚狀況。就我看來,某方面來說,它可能比使用Azure上的一些服務來得便宜。

雖然,它有些地方還是要採用訂閱制,但是它帶來的效益,我個人覺得遠比讓一個工程師加班在某些的平台上要做很多維運和升級來的高多。畢竟,一個工程師要多花時間與精力成本,可能就遠大於訂閱的成本了

那到底Azure DevOps Service怎樣計價呢?在一般來說Azure DevOps Service可以提供5個免費名額在相同組織內使用,怎樣叫做相同組織,就是Azure DevOps Service的URL如下:

https://dev.azure.com/{組織名稱}

所以,就算同一個組織內,有多個project,也只能有五個免費人員使用,想要取巧,就是可以設定不同組織名稱就可以,但這樣其實很不切實際,尤其對企業的協同合作來說

首先我們先看一下官方提到收費方式,五個免費使用者訂閱這邊就不提

--

--

趁了農曆年假時候,我把這本書看了兩遍,除了這本書後面有幾張在講統計分析原理和統計的定性與定量區這些在學理上的說明外(主要在於說明在書中透過DevOps問卷得到的數據分析是有一定的可信與準度,統計學不熟的人可以多了解一下也是不錯),大多提到我們在DevOps的運作上可能會有的缺失,或是一些卡關點,導致DevOps之路走不下去。

個人在執行或是說導入DevOps有多年,但書中提到有些部分,還是值得去思考與改進。也讓我們可以發現想要導入DevOps,不僅要有上頭的推動與支持外,底下的團隊與周邊夥伴們也是需要動起來改變。在一些傳統產業或是科技業,也會因為產業特性,需要透過拐彎抹角方式推進,不然,直接照本宣科方式,就會很難異動,甚至走到後面就沈船了。

以下是我自己覺得在一般企業中,可以值得大家可以互相探討與改進的要點。當然,我相信這些要點,甚至,是台灣大多數公司IT部門面臨問題與挑戰。

Westrum組織文化學

什麼是Westrum文化?

Westrum是一位是美國社會學家,畢業於哈佛大學社會關係系,有多項他是許多關於科學社會學,系統安全和組織文化的文章的作者。Westrum的研究包括系統安全中的人為因素,特別是在航空和醫療保健等技術領域的事故背景。

下面分法大概是目前企業組織內部的現況,這些文化沒有絕對不好,在某些情境,就可能必須採用規則導向,像是生產線的操作設備流程。但如果走到屬於腦力激盪或是Scrum和DevOps,甚至是IT領域,通常權力導向和規則導向都會讓團隊效率不彰,或是程度進步延遲

--

--

在使用Azure 服務,如果我們想要架設一個FTP功能給我們的廠商或是外部用戶上傳檔案,大都會採用VM方式架設一組FTP,在Azure很多Marketplace中的Package,其背後建立一組VM來支撐或是完成這樣需求。不然,大多服務中雖然都有支援FTP,但這些僅僅只是提供開發者自己把系統或是檔案上傳到該服務之用。另外,雖然,Blob可以用Microsoft blob storage explorer上傳到Blob中,對於要提供給企業的客戶或是夥伴,相對來說也不是很容易讓對方理解。導致,想要透過Azure PaaS建立一套FTP服務相對來說不容易。

不過,Azure Blob Storage推出了SFTP功能,就可以改觀這樣的用法,讓Blob可以直接變成FTP Service,且還不需要自己架設VM和FTP軟體(功能),且又同時支援Multi-User,有支援Multi-User呢~這一點是很重要,但美中不足地方它必須是走SFTP協定。

何謂SFTP

Sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟體包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(埠號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個伺服器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP

也因此,SFTP可以讓我們上傳檔案更加安全,雖然,沒有單純FTP,但就整個資訊安全與未來趨勢,勢必將會越來越多檔案傳輸走向SFTP,所以,沒有FTP的缺點也就不那樣重要

創建Blob SFTP功能

若要啟動Blob SFTP功能,在創建時候,必須選用啟用階層命名空間,這樣才能啟動SFTP功能,不然就會一般的Blob Storage相同

--

--

自從這一篇報導之後 報導連結 很多人都來問,真的可以用Power App+Power Automatic打造一個雲端簽核系統嗎? 我只能說這件事情是可以做到,但是,並非直接打開Power App開發就可以。因為如果只是Power App直接打開,僅多只是做一個簽核表單並不是一套簽核系統。 一套簽核系統並非只有申請者填完表單送出給下一關簽核者簽核就好。尤其在企業裡面往往會有並簽、串簽或是退回前一關卡或是退回原作者...等這項規範。現行的Power App的Demo大都呈現一種簡單關卡或是簡單簽核的流程,但要實際運用到真實環境還真是有點不太夠。也因此,在整體規劃上,還是必須依照軟體開發模式一樣,必須先針對需求進行分析與拆解,同時,也要設計共用性,作為一個簽核系統,裡面必定有n個以上的簽核表單,與多種相同流程,也因為這樣在設計架構上也希望可以透過共用模式設計。 從上述一些簡單情境來看,就知道不可能直接打開Power App就可以可以完成。因此,我們針對整個情境模式,與後續在開發和維運上的考量下,決定是透過Power App和Power Automatic為基底,在蔗平台上面再做一套屬於自己的簽核平台。這樣才能有機會打造出,讓IT部門的一些非開發者能協助簽核表單的開發。所以,都笑稱我們是在SaaS中在建立一套SaaS,其架構如下圖:

延伸閱讀Power Platform打造雲端簽核系統的架構設計
延伸閱讀Power Platform打造雲端簽核系統的架構設計

自從這一篇報導之後 報導連結 很多人都來問,真的可以用Power App+Power Automatic打造一個雲端簽核系統嗎? 我只能說這件事情是可以做到,但是,並非直接打開Power App開發就可以。因為如果只是Power App直接打開,僅多只是做一個簽核表單並不是一套簽核系統。

一套簽核系統並非只有申請者填完表單送出給下一關簽核者簽核就好。尤其在企業裡面往往會有並簽、串簽或是退回前一關卡或是退回原作者...等這項規範。現行的Power App的Demo大都呈現一種簡單關卡或是簡單簽核的流程,但要實際運用到真實環境還真是有點不太夠。也因此,在整體規劃上,還是必須依照軟體開發模式一樣,必須先針對需求進行分析與拆解,同時,也要設計共用性,作為一個簽核系統,裡面必定有n個以上的簽核表單,與多種相同流程,也因為這樣在設計架構上也希望可以透過共用模式設計。

從上述一些簡單情境來看,就知道不可能直接打開Power App就可以可以完成。因此,我們針對整個情境模式,與後續在開發和維運上的考量下,決定是透過Power App和Power Automatic為基底,在蔗平台上面再做一套屬於自己的簽核平台。這樣才能有機會打造出,讓IT部門的一些非開發者能協助簽核表單的開發。所以,都笑稱我們是在SaaS中在建立一套SaaS,其架構如下圖:

--

--

一般我們使用Azure服務時候,都記得使用這些服務都是要付費。不過,有時候我們只是想要練習或是指導他人使用Azure要怎麼辦? 其實,Azure 本身就有提供許多可以免費使用一年的服務,以及外加200美金的30天使用期限。當然這些免費服務的使用上是會有限制的,有些是限制只能使用最低規格,有的是透過呼叫次數限制進行管控。

--

--

Application Insights已經隸屬於Azure Monitor這服務的一環,也因此在這一陣子登入Application Insighs一定都會看到下面資訊

Classic Application Insights is deprecated and will be retired in February 2024.
Migrate this resource to Workspace-based Application Insights to gain support for all of the capabilities of Log Analytics, including Customer-Managed Keys and Commitment Tiers. Click here to learn more and migrate in a few clicks.

--

--

通常避免自己Azure VM 被裸奔狀況,都會關掉RDP功能,用其他方案取代,但有時候,難免都還是需要RDP,我遇到一個案例就是,平常其實RDP是關閉的,非必要時候是不會登入AzureVM,雖然,啟用Bastion是最好的,但是因為不會常常(甚至可能一年不到十次的登入)登入,這樣使用其實很浪費錢。所以,有一種做法就是,平日關閉RDP,要用時候打開RDP,但是這種做法會當RDP開起來時候,所有IP都有可以被連入的風險。因此,要避免所有IP都可以連入,且又可以使用RDP方式做簡單管理。可以採用另比較進階方式,就是採用Just In Time存取原則方式

什麼是Just In Time存取原則

與所有網絡安全預防技術一樣,目標應該是減少攻擊面。 在這種情況下,這意味著Port更少,尤其是管理面的端口。 合法用戶也會使用這些端口,因此關閉它們是不切實際的。 為了解決這個難題,Microsoft Defender for Cloud 提供了 JIT。 使用 JIT,可以鎖定到 VM 的入站流量,減少受到攻擊的風險,同時在需要時可以輕鬆訪問連接到 VM。

其運作流程如下:

--

--

Edward Kuo

Edward Kuo

Enterprise IT Manager / Microsoft Regional Director / Microsoft MVP / DevOps Expert / Speaker, About me: https://profile.edwardkuo.dev/about/