[AZ-204] Create Azure App Service web apps

Explore Azure App Service

  • Azure App Service plans
    • Shared compute - Plan Free and Shared ไม่สามารถ Scale ได้
    • Dedicated compute - แยก VM ออกมา Scale out ได้ตาม plan ที่กำหนดไว้ Basic / Standard / Premium (ต้องไปกำหนด scale unit / auto scale)
    • Isolated - Dedicated + เน้น maximum scale-out capabilities
    • Consumption - ดูตาม workload ใช้ได้เฉพาะ function apps
  • Deploy App Service
    • Automate : Azure DevOps / GitHub / Bitbucket
    • Manual :
      • Git : ใช้ URL ของ repository
      • CLI : เอาของมา Deploy ผ่าน az webapp up
      • Zip / FTP / FTPS
  • Authentication and Authorization - Azure มี Build-In มาให้
    • ทำไมต้องใช้ : สะดวก / รองรับ Provider เจ้าใหญ่ๆ
    • Build-In Authentication : Microsoft Identity Platform (aad)/ Facebook/ Google/ Twitter
      • End Point : /.auth/login/<provide> ยกตัวอย่าง /.auth/login/aad
      • Flow : SDK (Client flow) / without SDK (Server Flow)
    • Authorization behavior
      • Allow unauthenticated requests
      • Require authentication
  • Networking มากำหนด Inbound / Outbound ที่จะเข้าถึง App ดู Use-Case ได้จาก Networking features - Azure App Service (Use Case)
InboundExampleOutboundExample
App-assigned addressเข้า ดูจาก IP หรือ SSLHybrid Connections
Access restrictionsไม่ให้ IP ที่กำหนดเข้าถึงGateway-required
VNet Integration
Service endpointsให้เฉพาะภายใน VNET เข้าถึงได้VNet Integration
Private endpointsให้เฉพาะ IP เข้าถึงได้

Config Web App Setting

  • application settings - กำหนด Config ของ App เป็น Key Value ในรูปแบบ json
  • general settings
    • Stack settings : language and SDK ที่ใช้งาน
    • Platform settings: บอกข้อกำหนดของ Host บอกที่สำคัญนะ
      • Bitness 32 หรือ 64
      • Always On สำหรับ WebJobs ถ้าไม่กำหนดไว้ ตัว Web ถ้าไม่มี Request ตัว App มีนจะ Unload ไป (เสียเงินแบบ Basic Plan)
      • Http บแกเวอร์ version http protocol ที่จะมา access
    • Debugging : เอาไว้ทำ remote แต่จะปิดหลังจากไม่ใช้งาน 48 ชั่วโมง
    • Incoming client certificates: ตรวจ Cert จาก client
  • path mappings - mount path ให้รู้จัก
  • Logging
    • Windows Only
      • Web server logging - Raw Http Request Log (คิดว่าน่าจะเหมือนใน Postman นะ)
      • Detailed error logging - Log หน้าที่กำลัง Render ไป Client
      • Failed request tracing - บอก Request ที่มีปัญหาในรูปแบบ XML
    • Windows / Linux
      • Application logging เหมือนที่เราเขียน App ปกติเลย แต่ ASP.NET Core ไม่ต้องแก้อะไรเยอะ ใช้ Lib เดียวกับ Azure
      • Deployment logging
    • ถ้ากำหนดให้ Log ไปลง Azure Blob (Application logging/Web server logging) สามารถเข้าไปส่องได้
  • security certificates - กำหนดพวก HTTPS / SSL/ Cert
  • Manage app features - กำกหนด Feature Flag (JSON) ประกอบไปด้วย
    • Name - ชื่อ Feature
    • Filters(Rule สำหรับ Activate Feature)
    • Note ต้องแก้ Code ร่วมด้วยนะ เพื่อเปิด/ปิด Feature รวมถึงจัดเก็บลง Feature Repository
"FeatureManagement": {
    "FeatureA": true, // Feature flag set to on
    "FeatureB": false, // Feature flag set to off
    "FeatureC": {
        "EnabledFor": [
            {
                "Name": "Percentage",
                "Parameters": {
                    "Value": 50
                }
            }
        ]
    }
}

Scale apps in Azure App Service

  • ปกติ App Service จะมี Manual Scale มาให้ ส่วน Auto-Scale จะตาม Plan ที่ซื้อ
  • Note Autoscaling
    • improves availability and fault tolerance
    • Autoscaling isn't the best approach to handling long-term growth
    • เราต้องรู้กำหนดการณ์ที่จะเกิดแน่นอนถึงจะคุ้ม ไม่งั้นถ้าโดย DDos แล้วไป Auto Scale รับเสียเงินเยอะเลย
  • Auto Scale ดูกำหนดเงื่อนไขจาก
    • Resource CPU/Memory/Disk Queue/Http Queue หรือปริมาณ Byte ของ Data In/Out
    • Schedule กำหนดเวลา
  • Auto Scale Rule กำหนดหลายๆเงื่อนไขได้ แต่มี Rule เพิ่มเติม ดังนี้
    • Scale-Out (เพิ่ม Instance) - เงื่อนไขแบบ OR
    • Scale-In (ลด Instance) - เงื่อนไขแบบ AND
  • NOTE: อย่ากำหนด Condition ที่มันคาบเส้น
    • แย่ Scale-Out จาก CPU >= 50% และ Scale-In เมื่อ CPU =< 50%
    • แย่ Scale-Out จาก CPU >= 75% และ Scale-In เมื่อ CPU =< 50% มี Gap ด้วย
  • knowledge check : Scale apps in Azure App Service (Knowledge check)

Explore Azure App Service deployment slots

  • Slot swapping - ใช้กรณีที่แบบขึ้น App เราระหว่าง Dev / Production หรือ จะเป็นเคสที่เปิด Beta Test
    • ดูเพิ่มเติมว่าอะไรบ้างที่ย้ายไป Slot ใหม่ บ้างจาก Examine slot swapping - Learn | Microsoft Docs
    • To make settings swappable, add the app setting WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS
      in every slot of the app and set its value to 0 or false.
  • Route traffic in App Service
    • โยก Traffic จาก Slot Production เดิม มา Slot Production ใหม่
    • routing จาก query parameter
      • x-ms-routing-name=self (ตัว Production App)
      • x-ms-routing-name=staging (ตัว Test)
    • Note: By default, new slots are given a routing rule of 0% (ไม่ให้คนอื่นเข้ามา) เราจะได้ทดสอบกันก่อนได้
  • knowledge check : Explore Azure App Service deployment slots (Knowledge Check)

Note

  • Application Insight Feature ต้องเปิด Always On ก่อน ถึงจะทำ Profiler ได้
    • Funnel - They need to know if most customer are progressing through the entire process in application, or if they are ending process at same point
    • Impact - Is Page load time impacting how many people convert my page
    • Retention - Analyze how many users return to your app, and how often they perform particular tasks of achieve goals
    • User Flow - Show how users navigate between the pages and feature of website.

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.