สรุปงาน Azure Develop Day 2023 @SEVEN PEAKS

สำหรับวันนี้เป็นการสำรวจโลกด้วย ลองสำรวจเล่นที่ที่จัดงาน The PARQ รถเมล์สาย 149 ผ่านด้วย ได้เวลาลองเลย ออกจากบ้านมาตอน 7 โมง รถมาแถวชัยพฤกษ์ 7.30 มาถึงที่จัดงานประมาณ 8.40 นั่งรอบนี้ได้ Rate เต็ม 25 บาท เดินมางงๆอยู่ที่ The PARQ ดีที่พี่ซาร่า ThaiCySec ทัก ไม่งั้นคงได้เดินวนๆหาทางเข้า 5555

งานวันนี้หัวข้อมี ดังนี้ครับ

[Thai] Lead the AI era with the Microsoft Cloud\

RECAP AI History

  • 1956 Artificial Intelligence >> 1997 Machine Learning >> 2017 Deep Learning ทั้ง 3 ยุคนี้ยังมี Dataset ป้อนให้มันในแต่ละวิธีการมันจะ specific ลงไป
  • 2021 Generative AI
    - มันเรียนรู้ข้อมูล ด้วยตัวเอง ไม่ต้องเตรียมข้อมูลที่ Specific แล้ว โดยข้อมูลมองเป็น parameter ให้ foundation model มันเรียนรู้ได้ ยิ่ง param เยอะ ยิ่งเรียนรู้ได้เยอะ และเอาไปตอบในหลายๆเรื่องได้
    - large language models BERT > MS Turing > Open AI (GPT-3) > Megatron Turing
  • ตอนนี้เหมือนมีสรุปสำเร็จพร้อมใช้ อับดุล เฮ้ย Prompting แล้วเรียกใช้ผ่าน EndPoint (API) โดยมีทั้ง Model ที่เป็น WhiteBox / Black Box / Semi-BlackBox (OpenAI อยู่ในนี้ เอา Data ตัวเองเทรนเพิ่มได้)

แล้ว Developer เอา Service Azure + AI มาใช้ในด้านไหนบ้าง

  • Coding (GitHub Copilot)
    - เอามาช่วยให้ทำงานได้ไวขึ้น อาทิ เช่น แนะนำ Code จาก Comment / Refactor / Check Style หรือ พวก Linting ได้ รวมไปถึงการทำ Test และ Document ด้วย
    - ตอนนี้มีตัว GitHub Copilot X: Chat กับมันได้ / Automate Pull Request และให้มันสร้าง Test ได้เลย
  • Copilot Power BI สร้า Dashboard / Report ให้เรา อารมณ์แบบหัวหน้าสังไปสรุป incident คงค้าง เราไปสั่ง chat คุย power BI ต่อได้ ฮา
  • Copliot Power Automate / Logic App แปลง text เป็น logic
  • MS Fabric จะกึ่ง Whitebox และ Data Platform (SAAS) One Lake โยนไฟล์ไป ให้มันจัดการตาม pipeline ต่อ

กลับไปเรียนภาษาอังกฤษใหม่จะทันไหม มาหัดเขียน Prompt

[Thai] Serverless container on Microsoft Azure

Recap Container dockerfile (config) > image > instance (รันใช้งานจริง) ทุกอย่าง wrap ไว้ ซึ่งถ้าจะ Container ขึ้นมา Azure มีท่าไหนได้บ้าง

  • Azure VM (IAAS) ลง Container Engine จัดการเอง ได้หมด แต่มี Challenge เข้ามา Cost / Scaling (เพิ่มมาแล้วจะจัดการ Traffic ยังไง) / network / persistence storage / Availability (ถ้า VM เดี้ยงไป ต้อง Recover ยังไง) เป็นต้น

ท่าที่เหลือจะเป็น PAAS

  • Azure App Service ดีขึ้นมา Optimize for Web App รองรับทั้ง HTTP/2, GRPC มี Scale / Backup ด้วย แต่มีข้อจำกัด อาทิ เช่น
    - ถ้าใครใช้งาน Redis ยังมีข้อจำกัด เพราะต้องใช้ TCP
    - ราคาคิดตาม Plan ที่เลือกเลย มันกด Stop ไม่ได้นะ
    อันนี้เดี๋ยวเต็มๆไปดูในหัวข้อ "Deploy a website to Azure with Azure App Service"
  • Azure Container Instances (ACI)
    - infra สำหรับ container ให้เลย โยน Container ขึ้นไป
    - รองรับหลาย Protocol: HTTP / TCP / SFTP / GRPC ปัญหา Redis ใน App Service มาใช้อันนี้ได้
    - 1 instance deploy หลาย container นะ เวลาคิดเงินแบบเหมาๆ ราคาหยุดเมื่อ stop
    - และตัว ACI ยังเป็นมือปืนรับจ้างกรณีที่จะ Scale AKS (สร้าง Cluster ใหม่แพงกว่า)
  • Azure Function เขียน Code เล็กๆ ให้ Run จ่ายตาม request ถูกลงมา แต่ Storage ที่ฝาก Code ก็คิดเงินด้วยนะ
  • Azure Kubernetes Service (AKS) สำหรับงาน Scale ใหญ่ แต่การเปิด Cluster มันแพง งานเล็กอาจจะไม่คุ้ม ถ้าจะใช้ K8s เข้าใจ Tools ใน CNCF Landscape ด้วย
  • Azure Container Apps เป็นตัว AKS แบบเบาๆ ไม่ต้อง Config เยอะ แต่ราคาจะตาม Request + Resource Consumption (Active/Idle)

Azure Container App 101

  • Container Environment อารมณ์เหมือน pod บอกว่าข้างในมี Container อะไร คุยกับใครได้ และ Scale ยังไง
  • Container
  • Revision เวลา Deploy มันเก็บ Revision ให้ คล้ายๆกับ Slot ของ App Service โดยเราจะกำหนด user เข้า revision ได้ และทำ zero downtime deployment.

การ config กำหนด container เข้าถึงจากไหนดูจาก ingress

  • external - จากรูปเป็นตัว Node App
  • internal (without expose endpoint) Node App คุย Dotnet App
  • Use Case
    • แบบเบา scale to zero ( min-replias) (ปิด ไม่มี request ปิด / ลด Cost Dev Envirkmemt)
    • Event Driven Scaling - Scale Rule จากอะไร เช่น Storage Queue
    • Long Running Task / Background Job

ทว่าตอน ใช้ Cloud ประเมินการใช้งานด้วย เลือก Service ใก้เหมาะสม

  • ถ้า request เยอะจริงๆไปพวก Service เหมาจ่ายดีกว่า
  • Cronjob อาจจะไม่เหมาะกับ Serverless นะ มันกินเงินตาม Event (request)
  • ทำ Cost Monitoring + Alert กันไว้

มันมีศาสตร์ลด Cost อย่าง FinOps มาจัดการ Cost ตรงนี้

[English] 5 Azure services every developer should know

สำหรับ Session นี้จะเป็นมาแนะนำถ้าเดิมเรามี Simple Website ว่า scale ให้ได้ 1m user

How to Design a app that scales?

Which Databases to user

  • จริงๆแล้ว มันไม่เชิงเลือกว่าระบบไหน SQL หรือ NoSQL ดู Requirement สรุป SQL + NoSQL

Scaling

  • Scale มี 2 แบบ Scale
    - Scale Up/Down (เพิ่ม/ลด Spec)
    - Scale Out/In (เพิ่ม/ลด Instance) และต้องมี Load Balancer เข้ามาจัดการ Traffic เข้าไปใน Instance นั้นๆ
  • ขา App มีเด่น App Service / ใหญ่หน่อยไป AKS
  • แต่ DB มันคอขวดนะ
    - Azure SQL > SQL Server Replication
    - Azure Cosmos กรณีที่ใช้ NoSQL
  • จัดการ Traffic Azure Load Balancer

Caching and Optimization

  • Cache
    - temporary store ลด latency เวลาการไปขอ data จาก source เช่น DB บ่อยๆ แต่มี challenge cache validation มันถูกถึงเวลาไหนนะ ?
    - Azure Cache for Redis
  • CDN - ตัวอย่าง Cache อีกแบบนึง เอามาเก็บ Resource ต่างๆ เช่น CSS / Html / JS / Image ต่างๆ จะได้ไม่ต้องมี request พุ่งตรงไป Web Server อย่างเดียว
  • Optimization
    - บน Cloud นอกจาก Cache / CDN / Data Center (Region + Availability Zone มีความสำคัญ เช่นกัน)
    - ถ้าเก็บข้อมูลอื่นๆ พวก txt / image อันนี้จะเอาตัว Storage เข้ามาจัดการแยก ถ้ามีการประมวลผลข้อมูลพวกนี้ ต้องทำ Producer-Consumer Pattern (Message Queue) ค่อยๆดึงไปทำ
    - ถ้าทีงานที่ Trigger เอาพวก Server Less มาช่วย Azure Function

Logging / Metric/ Automation

  • อยากรู้อะไรต้องเก็บข้อมูล Visibility & Observability เป็นไปได้ ทำตั้งแต่ day 1 จะได้ตอบ what happen ได้ อันนี้ใช้ App Insight //มาคู่กับ Log Analytic Workspace ตัวแพงเลย 555
  • Key Vault เข้าใจว่ามาตอบในส่วน Automation (จริงมันกว้างมาก Deployment Slot ก็ใช่

Final Architecture - Scale และ SQL + NoSQL //5 Service แต่นับได้เกิน 555

[English] Enrich Power BI with Azure Machine Learning

Intro

  • Power BI Visualize / Discover จาก Input Data
  • Azure ML - Set ML tools สร้าง Model บน Cloud และเปิด End Point ออกมา

การ Power BI + Azure Machine

[Thai] Shaping your ChatGPT's answer with Azure OpenAI Service

จากงาน MS Build 2023 ที่ผ่านมา Keyword ที่ควรรู้ไว้

Every App will be reinvented with AI

New Apps will be built that weren’t possible before

ทุก App หลังจากนี้ เรียกได้ว่าจะมี AI เข้าไปมีส่วนร่วมตั้งแต่ตอน Dev หรือ ไปจนถึง Feature ที่มีเบื้องหลังเป็น AI

AI App - APP เหมือน เดิม เพิ่มเติม Model AI เข้ามาให้ใช้ โดย Input อาจจะเป็นพวก Text / Image ที่ป้อนเข้าไป ตัวอย่าง

  • ChatGPT - อันนี้รู้กัน
  • Typeface | Personalized AI Content for Work - เอารูปสินค้ามาอย่างเดียว ส่วนการเตรียมรูปทำ Marketing Campaign ให้ AI มาช่วย ลดงานพวกงาน Studio ต่างๆ
  • Microsoft + Copilot - น่าจะเรียกได้แล้ว มีในทุกวงการ Office365 Copilot / Power Platform Copilot / GitHub Copilot / Security Copilot ....

Copilot Stack - Azure AI (Azure AI Infrastructure / Azure ML / Cognitive Service / Azure Open AI Service) มุมสำหรับ Developer บ้าง ถ้าเอา AI มาใช้ ใน App ได้อย่างไรบ้าง โดยมี 3 ส่วน หลัก

  • APP (Front-End) - เราทำขึ้นมา + Copilot
  • AI Orchestration
    - ส่วนที่เตรียม AI อาจจะใช้ของที่มี Foundation Model หรือ จะ Custom (Back-End) มาปรับให้เหมาะกับ Data เรา (Data Grounding) / กำหนด meta prompts ทำ Prompt templates เพื่อให้ได้ persona ที่ต้องการ
    - โดยมี Tools Azure AI Studio เข้ามาช่วย โดยมาทำ vector-based search + API ของเรา จากนั้นส่งให้ Back-End จัดการจนได้ Retrieval Augmented Generation (RAG).
  • Foundation Model + Infrastructure (Back End)

Tools ที่ใช้

  • Azure AI Studio
    • เลือก Model และ Brief งานเลย ว่าจะ Train อะไร และเอาข้อมูลของเราใส่เข้าไปให้มันเรียนรู้
    • มี playground ให้ลองเล่น ทดสอบว่า เผื่อเจอมีปัญหาที่ AI ไม่รู้ และตอบแปลก ต้อง shape
      - System Message จะมาช่วยในส่วนนี้ได้ Prompt บอก Role/Persona ให้มัน
      - Add your data บอก brief ให้มันตอบ อาทิ เช่น ส่งไฟล์ word ส่งให้มันเรียนรู้เพิ่ม โดย Data จะใช้ Azure Cognitive Service มาบอกว่ามัน คือ อะไร
      Note: ข้อมูลพวกนี้จะมี privacy ไม่ถูกเอาไปเทรนให้ AI ของ Microsoft.
    • พอ Test เรียบร้อยแล้ว สามารถเปิด Web App (API) / Power Virtual Agent ได้
  • SDK - Semantic Kernel เขียน Code จัดการกับ prompt เอา SDK ใส่ไปใน App ของเรา (C# / Python) เพื่อไปเรียก Model เป็นบน Azure

Resource: 8 steps to building an Azure OpenAI Copilot for your startup | Microsoft for Startups Blog และ Course ฟรีจาก Speaker ครับ
- คอร์สฟรี เริ่มต้นเรียนรู้ Azure OpenAI Service
- เริ่มต้นเรียนรู้ ทำแอพ AI ด้วย Semantic Kernel ฉบับคนใช้ Python

[Thai] Deploy a website to Azure with Azure App Service

  • Azure Compute Decision Tree เอาไว้ช่วยตัดสินใจ ว่าจะเลือก Service compute ตัวไหนของ Azure
Ref: Choose an Azure compute service - Azure Architecture Center | Microsoft Learn
  • การใช้ Cloud ควรเข้าใจ Shared Responsibility ของ IAAS / PAAS / SAAS และ On-Premises

Azure App Service (PAAS)

  • รองรับได้หลาย Platform
    • OS Linux /Windows > แน่นอน Linux ถูกกว่าครับ
    • เลือก Runtime ได้ dotnet node python php go
  • Deploy
    • Code: Azure Repo / Git / Bitbucket / Local Git (FTP โยนไป)
    • Docker Image
  • Deployment Slot
    • Staging (Acceptance Test)
    • Production Slot พร้อมลุยก็สลับ slot หรือจะทยอยแบ่ง Traffic มาลอง
  • Scale
    • Scale Up/Down (เพิ่ม/ลด Spec)
    • Scale Out/In (เพิ่ม/ลด Instance)
  • App Insight - ตอบ What Happen และตัว Insight ที่เจ๋งอีกอย่าง Dependency Diagram ด้วย ถ้าใช้ App Service + App Insight แล้วจะช่วยเรื่องพวกนี้ได้ด้วย 555

ต่อไปเป็น Demo ทำ app service

อ๋อ Copilot Chat บน VS Code และ Visual Studio (ยังไม่มาเสียใจ)
ปิดท้าย scale out เพิ่ม Instance ต้องระวังเรื่อง Cost

Resource:

[Thai] Build in the cloud free with Microsoft Azure

  • นักศึกษามีสิทธิฟรี 100 usd renew ทุกปี
  • คนทั่วไป ลอง pay as you go ได้

แต่ละ Service จะมี free tier ให้ลองอยู่ แต่ต้องระวังมันคืน resource ในบางตัว

[Thai] Managing databases on AKS easily with KubeDB solution

Challenge ในการขึ้น DB K8S

  • Provisioning - Scale การมาดูตัว PVC
  • Monitoring ปกติใช้ metric server ดึงมาดู
  • Backup Restore
  • ยิ่งเยอะ ยิ่งเหนื่อย

Solution KubeDB by AppsCode

  • Support DB หลากหลายอยู่ RDBMS (MariaDB/ PostgreSQL เป็นต้น) / NoSQL (MongoDB / Memcached / Redis เป็นต้น)
  • มี community + enterprise ถ้า enterprise มี Stash backup/restore และพวกการจัดการ namespace

Demo Install KubeDB + MariaDB + Prometheus + Grafana

  • MariaDB ซึ่งตัวมันเองก็มี galera replication
  • Prometheus + Grafana ถ้ามี Instance ใหม ตัว Service Recovery ส่ง Exporter เข้าไปติดตั้งให้
  • Register License
  • ให้ helm install KUBEDB Operator + license
helm search repo appscode/kubedb
helm install kubedb appscode/kubedb 
--version <<Your Version: v2023.06.19>>
--namespace kubedb --create-namespace
--set-file global.license=/path/to/the/license.txt
  • Install Prometheus
helm search repo prometheus-community/kube
helm install prometheus prometheus-community/kube-prometheus-stack
  • Prepare MariaDB + Monitor YAML

Resource: Slide+Demo

[Thai] Azure OpenAI Service development with Semantic Kernel

Semantic Kernel

  • เป็น SDK Library ที่เข้ามาช่วยจัดการ Model OpenAI (GPT3 / Codex / DALL·E / Whisper ..) ตอนนี้ยังใช้ข้อมูลปี 2021 อยู่
  • ถ้าใน Copilot Stack จะอยู่ในส่วนของ AI Orchestration 
  • Deployment Use-Case: App จะตัวเป็นนักประสาน (Orchestrator)
    - เอาข้อมูล Internal แปลงโดยให้ Azure Cognitive
    - ทำ Prompt ขึ้นมา
    - ให้ Azure OpenAI จัดการต่อ
    Sample: ทำ App ให้ AI Filter GPA / Skill ให้ HR

Demo Semantic Kernel ดูใน Live จะดีกว่า

  • Kernel มองเป็นสมองตัวจัดการ
  • Skill ทักษะในด้านนั้นๆ ที่เรามีจะใช้่ที่ Lib ให้มา หรือสร้าง Class เอง และแปะ Attribute [SKFunction] ใส่หัว Method
    - Native Skill ทำตรงๆ เช่น UpperCase ของ TextSkill
    - Sematic Skill ทำเป็น Prompt ต่อกับ Azure OpenAI
  • Connector เอาข้อมูลจากแหล่งอื่นๆ เช่น Database / Search Engine
  • Memories บอก Context ต่อไป
  • ถ้า Skill ใช้หลาย Parameter ContextVariables > Example03_Variables.cs
  • Pipeline เอา Skill มาร้อยเรียงจัดการ Example02_Pipeline.cs

ใน VSCode มี Semantic Kernel Tools แยกงานระหว่าง Dev กับ Prompt Engineer ได้เลย

และอาจจะไม่เกี่ยวกับ Semantic Kernel Libraries - OpenAI API มีของ Go แล้ว

Resource: CodeBangkok - YouTube / How to quickly start with Semantic Kernel | Microsoft Learn / semantic-kernel/dotnet at main · microsoft/semantic-kernel (github.com)

[Thai] Azure for Python developers

Python เป็นภาษาที่ Run บน cloud เป็นอันดับ 2 รองจาก JavaScript โดยนำไปใช้ Web Developer / Data Engineer / ML ถ้าเอา Web Python มา Cloud มีท่าดังนี้

  • Full Control - Azure VM
  • ไม่อยากจัดการหมด Azure App Service
  • แยก frontend / backend
    - frontend Azure Static App
    - backend Azure App Service หรือ Microservice ดุ Bullet ถัดไป
  • Microservice
    • Event Driven 》 Azure Function
    • Cloud Native (K8S) - Azure Kubernetes Service
    • Azure Container Apps
  • ต้องมาฟัง Session นี้ Part 2 ชั่วโมงที่ 3:22 ครับ 555

Resource: Quickstart: Deploy a Python (Django or Flask) web app to Azure - Azure App Service / Azure Developers - Python Day - Events

จบงานไปตอน 17.40 วิวสวยมากตึกนึ้ ท้องฟ้าเป็นใจ Cloud

ตอนกลับบ้านด้าน ผมรอ 149 (4-53) รถมันติดอยู่ติดอยู่แยกคลองเตยเกือบชั่วโมงกว่า จะมาเล่นกับแมวแถวนั้นไปก่อนเกือบชั่วโมงครับ 555

Live

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.