Azure App Service คืออะไร และมาลองเริ่มต้นใช้ แบบ Step by Step

ใน Series นี้เราจะมาแนะนำการใช้งาน Service ต่างๆกันนะครับ โดยตัวแรกที่เราจะมาดูกันคือ Azure App Service (https://azure.microsoft.com/en-in/services/app-service/)

หลายๆคนคงเคยเห็น Azure App Service กันมาสักพักแล้ว อันที่จริง App Service เป็นหนึ่งใน product แรกๆ ของ Azure ที่เปิดตัวมาตั้งแต่ปี 2012 แล้วก็ได้รับการพัฒนาอย่างต่อเนื่องตลอดมา สำหรับคนที่ลืมไปแล้ว App Service เป็น service ที่เราสามาถนำมาใช้โฮส web site/web application หรือ API ที่เราสร้างขึ้นมาบน Infrastructure ของ Azure โดยที่เราไม่ต้องจัดการกับ server, cluster, หรือ virtual machine อะไรเลย หรือที่เรียกว่า PAAS (Platform As A Service) นั่นเอง

ถ้าเรามี application ที่ถูก develop มาก่อนแล้ว การนำขึ้นไป host บน Azure App Service เป็นเรื่องที่ทำได้ไม่ยากนัก หากใช้ technology ที่ App Service support อย่างเช่น .NET, JAVA, NodeJS, Python, PHP, Ruby

ถึงแม้ว่าในระยะหลังๆ พวก Service ที่เกี่ยวกับพวก Container หรือ Kubernetes จะได้รับความสนใจมากขึ้น แต่ App Service ก็ยังคงได้รับความนิยมอยู่มาก เพราะข้อดีต่างๆของมัน เช่น Setup ได้ง่าย ไม่ยุ่งยาก เริ่มต้นได้เร็ว ไม่ต้องดูแลเยอะ แล้วก็สามารถมี Advanced Features ต่างๆ เช่น

  • มีการเพิ่ม Monitoring ด้วย Application Insight ให้โดยอัตโนมัติ เช่นพวก Performance หรือ Exception
  • IP restriction ช่วยจำกัดให้ client ที่จะมาใช้ต้องอยู่ใน IP range ที่กำหนดท่านนั้น
  • Multi slot ทำให้สามารถมีหลายๆ version เช่น main หรือ QA และสามารถสลับไปมาได้ หรือ แบ่ง Traffic เป็น 80% / 20% ระหว่าง slot ยังได้เลย
  • Isolated plan ที่ทำให้ App Service สามารถเข้าถึงได้จากภายใน Virtual Network เท่านั้น เพื่อเป็นการ secure ระบบ
  • Custom Domain ปกติแล้ว AppService จะได้ DNS เป็น <app_name>.azurewebsites.net แต่เราสามารถเปลี่ยนให้เป็น domain ของเราเองเช่น our-app.bitfoundry.co ได้

บางฟีเจอร์ข้างบนนี้จะมีเฉพาะใน App Service plan ที่มีราคาแพง เช่น Isolated plan ได้ ดังนั้นควรเช็คให้เรียบร้อยขณะออกแบบ หรือ ถ้ามีคำถามก็สามารถติดต่อเราได้นะครับ

มาลองลงมือสร้าง App Service กัน

โม้กันมาเยอะแล้ว เรามาดูกันนะครับว่า เราจะลองใช้ App Service ได้อย่างไร เราจะมาลองแบบง่ายที่สุดกันก่อนนะครับ แล้วค่อยก้าวไปแบบที่ซับซ้อนขึ้นในอนาคต

อย่างแรกเลยก็ต้อง install Azure cli (https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) กับ dotnet 5 (https://dotnet.microsoft.com/download/dotnet/5.0) ก่อนนะครับ เมื่อ install แล้วก็ตามนี้ได้เลยครับ สร้าง directory สำหรับ code ตัวอย่างของเรา ด้วยคำสั่ง mkdir app-service-demo สร้าง web แบบง่ายๆ ขึ้นมา ด้วยคำสั่ง ด้านล่างก็จะเห็นว่า dotnet command generate web application ง่ายๆ ขึ้นมาให้อันหนึ่ง

cd app-service-demo

dotnet new web
image

ลอง run ดูว่าทุกอย่างปกติดี ด้วยคำสั่ง

dotnet run
image
image

ทีนี้เราก็เตรียม az cli เพื่อจะได้ publish app ตัวอย่างของเรา ถ้ายังไม่เคย login ผ่านทาง az cli ก็ต้อง login ก่อนนะครับ

az login

Publish ไปที่ app service ด้วยคำสั่ง

az webapp up --sku F1 --name <unique-app-service-name> --os-type linux

โดยต้องเปลี่ยน ให้เป็น ชื่อ app service ของเราเองที่ไม่ซ้ำกับคนอื่น อย่างของผมก็จะเป็น เราใช้ SKU เป็น F1 คือเป็น Free tier นะครับ จะได้ไม่เสียเงิน

az webapp up --sku F1 --name bfsgsb-app-service-demo-5 --os-type linux
image

รอซักพักหนึ่งเราก็จะได้เห็นว่า publish เรียบร้อย โดยที่เราจะสามารถเห็นได้ Azure Portal

image

จะเห็นว่าในตอนท้ายของการ publish จะมี URL ออกมาด้วย ซึ่งก็คือ URL ของ app service เรา เราสามารถเปิดเช็คดูใน Browser ว่า deploy ไปเรียบร้อยได้ผลเหมือนในเครื่องเรา

image

ทีนี้เราก็มาลองแก้ code ดูนะครับ อย่างเช่น แก้ไฟล์ Startup.cs

จาก

await context.Response.WriteAsync("Hello World!");

เป็น

await context.Response.WriteAsync("Hello World - Updated!");

แล้วก็ publish ไปใหม่ด้วยคำสั่ง

az webapp up --sku F1 --name <unique-app-service-name> --os-type linux
image

โดยจะเห็นว่าคราวนี้ Command จะบอกว่า app service นี้มีอยู่แล้ว ดังนั้นมันจะ update content ลงไปให้ใหม่

แล้วลองดูใน browser อีกที ก็จะเห็นว่า code ใหม่ของเราได้ถูก publish ไปที่ app service เรียบร้อยแล้ว

อย่าลืม

เมื่อใช้เสร็จแล้วก็อย่าลืมลบ app service / app service plan หรือ ลบไปทั้ง resource group สำหรับ demo นี้ไปเลยก็ได้นะครับ

az group delete --name myResourceGroup

โดยที่ myResourceGroup คือ resource group ที่ app service อยู่ (อันนี้ต้องเช็คดูด้วยนะครับว่าใน resource group นี้ไม่มีอะไรที่เราไม่ต้องการลบอยู่ด้วย ไม่งั้นจะถูกลบออกไปหมดตอนที่ app service ถูกลบ)

az group delete --name Akezyt_J_rg_Linux_centralus

แค่นี้ก็เรียบร้อยแล้วครับ

สรุป

ถ้าเป็น web site ขนาดเล็ก ถึง ขนาดกลาง ที่ไม่ต้องการ network configuration ซับซ้อน Azure App Service ก็เป็นทางเลือกที่เหมาะสม เพื่อลดค่าใช้จ่าย เราสามารถที่ใช้ App Service plan 1 plan ทำการ host หลายๆ web site ได้ ถึงแม้ว่าในตัวอย่างนี้จะเป็น .NET stack แต่จริงๆแล้ว App Service support ตั้งแต่ .NET, JAVA, NodeJS, Python, PHP, Ruby

ขั้นต่อไป

จาก demo ข้างบน ก็พอจะสามารถทดลองดูได้ แต่ถ้าจะใช้ในการทำงานจริงที่ทำงานเป็นทีมก็คงไม่ได้ เพราะให้มา publish ไปที่  production จากเครื่องของ developer แต่ละคนมันก็ไม่ secure ดังนั้น ในบทความหน้าเราจะมาดูกันนะครับว่าเราจะสามารถทำ CI/CD ได้อย่างไรบ้างนะครับ

เปิดท้ายขายของ

ถ้าเพื่อนๆ คนไหน หรือ บริษัทไหน สนใจการ develop และ deploy application บน cloud ไม่ว่าจะเป็น Azure หรือ Cloud provider อื่นๆ ก็สามารถติดต่อเราได้นะครับ ที่ info@bitfoundry.co

ยังไงฝากช่วยกัน Like และติดตาม page ของเราด้วยนะครับ จะได้ไม่พลาดบทความตอนต่อๆไปของเรา

Credit: Steps ข้างต้นสามารถดูแบบละเอียดๆ ได้จาก web site ของ Microsoft ได้ที่ https://docs.microsoft.com/en-us/azure/app-service/quickstart-dotnetcore?tabs=netcore31&pivots=platform-linux ก็ได้นะครับ