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)
- End Point :
- Authorization behavior
- Allow unauthenticated requests
- Require authentication
- Networking มากำหนด Inbound / Outbound ที่จะเข้าถึง App ดู Use-Case ได้จาก Networking features - Azure App Service (Use Case)
Inbound | Example | Outbound | Example |
App-assigned address | เข้า ดูจาก IP หรือ SSL | Hybrid Connections | |
Access restrictions | ไม่ให้ IP ที่กำหนดเข้าถึง | Gateway-required VNet Integration | |
Service endpoints | ให้เฉพาะภายใน VNET เข้าถึงได้ | VNet Integration | |
Private endpoints | ให้เฉพาะ IP เข้าถึงได้ |
- knowledge check : Explore Azure App Service (Knowledge check)
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) สามารถเข้าไปส่องได้
- Windows Only
- 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 } } ] } }
- knowledge check : Config Web App Setting (Knowledge check)
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.