第一次參加Microsoft活動 -- DevDays Asia 2019

當初得知Microsoft將它在西雅圖的大會搬來台北再辦一次後,儘管對Microsoft滿陌生的,但想說免費報名,又可以看看最新趨勢增廣視野也不錯。

先總結一下心得:



  • 參加完後,果然覺得不愧是龍頭公司之一,扮演著產業的先驅角色。以前在工作上,發現滿多人對於開發工作的想像僅止於「將人工以程式取代」,簡單說,相較之下就顯得「較缺乏對生活、科技的想像力」。
  • 在年會中,聽到docker、kubernetes的次數遠多於Microsoft;聽到Github、Linux次數遠多於Windows。而且每個講者demo時打開的都是「VS Code」。就連SQL Server 2019都強調能跑在Linux上,且直接支援Python和Java。
       如果不是還有一些關於Microsoft 365新產品介紹,會覺得好像是各個龍頭公司共同舉辦的一場年會XD 由Microsoft拚命將它的產品都open source,且大量與其他語言或系統結合來看,充分顯示出Microsoft想走出去,擁抱open source社群的決心和趨勢。
  • 發現container技術是我較陌生的,以前在公司頂多就是用到vm,這次增廣很多知識,儘管筆記沒能完整包含這3天很多知識,但就是盡量多聽多看多學。
  • 最近太忙,總算整理一下,但不是很精緻XD

筆記摘要:

** container相關 **
  • container為「一種應用交付的技術」。
  • container is the next-gen tech to deliver apps. Transforming the way we deliver apps.
  • 因cloud崛起,產生了container技術。
  • 將app打包成container image,可以:
        1. 快速deploy到infrastructure上。
        2. deploy到各個vm。透過container registry,產生container instance。其跑在container engine、每個vm和container orchestration之上。
  • kubernetes:
1. 強擴展,發展一套語法(能精準說明該app需要條件是什麼)。
2. deploy到不同平台(e.g. On-prem、Azure或Other clouds)。
  • container帶來:1. 一個人可管上萬個application。2. 更快的innovation。
  • lifecycles of container application:


Build → Ship (ship到不同的infrastructure)--> Run (e.g. 自恢復、自動部署、全球部署)



- Build:Develop(如WSL 2:在Windows上運行Linux) -- Test/Debug -- Deploy 皆有相對應工具。

- Ship:

1. 包括application + dependencies(自交付的格式)。

          2. Develop → container image → HELM → 各個AKS(Azure Kubernetes Services),每個AKS下各對應「Dev」、「Test」、「UAT」和「Production」。

          3. ACR(Azure Container Registry geo-replication):可做全球同步。

          4. deploying & managing container apps with HELM。

- Run:IaaS ---> PaaS → Serverless

      (對應:Customization:要自己營運 ←----------> Efficiency:不想看到底層。底層的實踐會透過container去實踐)

       IaaS舉例:docker、Openshift、Kubernetes。

       PaaS舉例:App Service、Service Fabric、Azure Kubernetes、Azure Kubernetes、Azure Red Hat Openshift。

       Serverless舉例:Azure Functions、Azure Container Instance Management。
  • Azure Container Ecosystem中,重點在於:1. container application是如何做出的?高不高效?2. run起來後,是否安全可靠?
  • 監控:Azure Monitor for containers。
  • The future of Container is Serverless。
  • KEDA:使Kubernetes變成event-driven。
  • Azure DevOps
  • 如果對container技術有興趣,建議讀某微軟人寫的書「Desiging Distributed Systems」作者是Brendan Burns。
  • The Azure Kubernetes Workshop(可動手做的很多labs):https://aksworkshop.io
  • Azure Container support GPU on Linux only(Preview)
  • container image放在1. docker => Build較慢、2. Azure什麼Registry的 => Build較快。
  • AKS - 多集區:改善以前同一組cluster只能有同樣的node。e.g. 如果有GPU,則每個node要有GPU。
  • ACS(Azure Container Services)已停用 → ACS Engine:回到用vm大量去build → AKS(Azure Kubernetes Services)。
  • Azure Dev Spaces:最小本機設定。有example在gitbub可玩。
  • Microservices in Kubernetes:1. 誰和誰相依? 2. 只想做該feature的測試環境,不想要全build。=> 解法:共用的AKS。e.g. 前端修改:透過copy前端部分做到協作。後端修改:透過ASDS、routes for 某人,達到協作。



** SQL相關 **



  • SQL Platform Modernization:
Windows → Linux → docker (container) → Kubernates (Google)


  • The evolution of SQL Server:
    Performance & Productivity:SQL Server 2008~ → Self-service BI:SQL Server 2008 R2~ → Cloud-ready:SQL Server 2012~ → Mission-critical(指analyze very fast) & Cloud performance:SQL Server 2014~ → Docker & Linux:SQL Server 2016、2017~ → Intelligence over all data (big data):SQL Server 2019~。
  • SQL 2019:
1. persistent memory support。
2. Intelligent Query Processing:ML、statistics、similar query => query越多次,ML訓練越多,訓練結果錯誤率越降低、正確率越高。

3. In-place encryption (without moving the data outside the db)。

4. Classification:可以tag columns stored in SQL Server。pre-defined或GDPR。

  • Azure Data Studio(前身:SQL Operations Studio)可跨平台(Windows、Linux、MacOS)。
  • SQL Server Management Studio 18.0:Extend T-SQL with Python & Java。
  • platform abstraction layer -- SQL Server on Linux
  • use Availability groups on Kubernetes to implement a full AG system integrated into SQL Server.
  • accelerated data recovery (planned)
  • objects outside db can automatically failover (planned)

** data science和AI相關 **
  • 「自動化」和「智慧化」最大差別:決策。
  • Taiwan 70%人口是製造業。
  • AI領先者特色:
    • invest上升。
    • 一個專業角色組成的中央團隊。
    • 有AI工具。
    • 由developer、專家、資料工程師監控AI應用程式。
    • 還在進行的企業data治理實踐。
  • AI發展障礙:
    • 缺乏技能、資源和持續學習plan。
    • 尋找適合的技術合作夥伴。
    • 缺乏先進的分析(足夠的基礎架構和工具來develop可操作的見解)。
  • 缺乏AI的文化特徵:
    • 賦能。
    • 創新。大多數老闆不喜歡員工創新。
    • 超出範圍。
    • 協同合作。
  • 許多老闆認為AI可替換掉員工。但許多員工認為AI不會替換掉員工。
  • AI未來在台灣需要的技能:軟實力 + 技術嚴重不足。
  • 在AI上,要避免採購案式的引進 => 應是有戰略和長期思考的。
  • 未來3年,AI在台灣的技能供需:
    • 供 > 求:
      • 基本資料輸入和處理。
      • 大數據素養和溝通。
      • 一般設備操作、機械技能。
    • 求 > 供:
      • 企業家精神和高執行力。
      • 數位技能。
      • 資訊能力和程式設計。
  • What’s Knowledge Mining?
=> unlock valuable info lying latent in all your content.

(at a high level:ingest → enrich → explore)


  • azure-search-knowledge-mining (github)
  • The JFK Files (github)
  • Microsoft Graph (github):找contoso airlines(學如何使用Microsoft graph platform)。
  • AI Space:
- X軸:pre-built → Custom
- Y軸:Cloud → Heavy edge → Light edge
- Z軸:CPU → GPU → FPGA(specialized hardware accelerated Deep Learning) → ASIC
  • Building blocks for a Data Science Project:
data sources → build and train models: Classical ML, Deep Learning → Hyperparameter tuning → Experimentation & pipelines → Deployment → DevOps for data science
  • build & train models everywhere:
Machine Learning CLI、VS Code ML extension、Notebooks、Open source Python IDEs → Azure Machine Learning service → Local Machine、Scale out with Azure ML compute → Scale out with Apache Spark
  • DevOps loop for data science:
首先,prepare、prepare data。

再來:

jupyter、VS Code、Build Model (your favorite IDE) → Train & Test Model → Register & manage Model → Build Image → Deploy Service Monitor Model → 接到IDE,如此loop下去。


  • Model Management in Azure Machine Learning:
create/retrain model → register model → create scoring files & dependencies → create & register image → Deploy image: cloud、heavy edge、light edge → monitor → 接到create model,如此loop下去。
  • get started today -- Azure Machine Learning Service Documentation:https://docs.microsoft.com/en-us/azure/machine-learning/Service/
  • MLOps = ML (Experiment) + DEV (Develop) + Operate (Operate)
  • MLOps with Azure Machine Learning (Data scientist & Software Engineer side by side),用一個pipeline去管理獨立的repository。
  • 做的model可封裝成docker container。
  • 標記是最花時間的。
  • SQL 2019全部container化,可地端做ML。
  • Deploying models at scale:
Cognitive Services、Azure Machine Learning、Experimentation、External Model → Model Registry (Register Model) + Your IDE (Scoring File) + Image Registry (Create & Register Image) → Cloud Service、Heavy Edge、Light Edge → Deployment Registry (Deployment & Model Monitoring)
  • silicon alternatives for DNNs:
CPUs  -- GPUs -- Neural Processing Units:含「Soft NPU (FPGA)」和「Hard NPU」-- ASICs

(光譜:Flexibility ←---------------> Efficiency)

  • Soft NPU:e.g. BrainWave, Baidu SDA, Daephi Tech…
  • Hard NPU:e.g. Cerebras, Google TPU…
  • 當data是video streaming:適用FPGA。

    當data是a lot of data one time:適用GPU。
  • GPU:
large data in -- large data do the same thing -- large data out
(但如果10個中只有1個要repair,則9個會idle。這也是為何有時用FPGA比GPU好的原因)
  • The power of Deep Learning on FPGA: performance, flexibility, scale.
  • FPGAs are ideal for expensive computations on streaming data.
  • What is FPGA technology?
    => 1. FPGA: Field Programmable Gate Array.
        2. Reprogrammable silicon.
        3. Specialized compute engines.
        4. Flashed via software in < 2 seconds.
        5. Updatable as often as needed.
  • CPUs: General purpose machine learning; D, F, L, M, H Series.

    GPUs: Deep Learning; N Series.

    FPGAs: Specialized hardware accelerated deep learning; Project Brainwave.
  • get started today -- Azure/MachineLearningNotebooks: https://aka.ms/aml-accel-models-notebooks



** IoT相關 **
  • IoT is enabling the digital transformation(數位轉型)of every business on  the planet.
  • Azure IoT Edge deployments to Kubernetes:
以前只有:Azure IoT Edge Device → Azure IoT Hub
現在新增:Kubernetes Cluster → Azure IoT Hub
  • 微軟在IoT可做到隨插即用(Plug and Play架構)。
  • waterfull → 微服務
  • Azure Sphere是一個晶片(為了security)。
  • Project Sopris (MCU也能安全):Pluton的hardware => MS-developed “Pluton” security subsystem。 => 發表研究:SEVEN PROPERTIES https://aka.ms/7properties


  • Azure Sphere is Open:

    • Open to any MCU manufacturer.
    • Open to any cloud.
    • Open to any innovation.


  • Azure Sphere is Linux-based OS.
  • Customer Story -- Starbucks:Azure Sphere放入咖啡機中 =>

    1. for 機器維運。
    2. receipe更新,為商業機密,以往需花3個月全球更新。使用cloud後,丟一下receipe便完成全球更新。
    3. 咖啡豆consume狀況。

** 前端相關 **
  • C#加入前端:
    • 使用W3C的webassembly標準,執行.NET。載入.dll。
    • 不是轉換器,是原生的。(不像JS是一步一步編譯,是預先編譯好的)
    • 不像ActiveX插件技術,使用「標準」。
    • 和JS引擎用的相同。
    • 不需JS的runtime編譯,直接執行byte code。
    • 適用於企業內部開發使用。
    • 技術名稱:BLAZOR(Browser + Razor)。
    • SPA框架,像Vue.js、Angular和React.js。
    • 靜態網站的託管服務可用,e.g. Github Page。
    • server和client可共用型別。可用NuGet。
  • JS和BLAZOR的機制比較:
    • JS:JS → Parser → Compiler → JIT Interpreter → Native Web APIs (DOM, file, storage...)。
    • Blazor:Blazor(透過mono.wasm轉譯.dll) → JIT Interpreter → Native Web APIs (DOM, file, storage...)。
  • 目前Blazor缺點:
    • client side dll的下載過於龐大。
    • server side會有連線數問題。(e.g. 斷線的話,DOM便不會變)
    • 對其他語言的developer吸引力不足。
    • IE11不支援。
  • gRPC:
    • 不限語言的高效能遠端程序呼叫的RPC架構。取代HTTP。
    • 先定義gRPC規範。
    • 各大語言有實作。
    • 用byte方式在傳,不用JSON傳。Stream格式回傳。
    • 雙向。前、後皆是Stream。



** 其他相關 **
  • Microsoft 365:分為「Intelligent edge」和「Intelligent cloud」。
  • security、privacy要在everywhere => 包成Microsoft 365。

留言

熱門文章