# Azure App Services

ในคอร์สนี้เราจะมาทำความรู้จักกับเจ้าสิ่งที่ชื่อว่า **`App Services`** ของ **Microsoft Azure** กันบ้าง ซึ่งงานพื้นฐานต่างๆที่เราใช้ๆกัน 80% ก็จะอยู่กับเจ้าตัวนี้นั่นเอง ดังนั้นถ้าอยากมีชีวิตที่ดี๊ดี ลองมาศึกษามันจริงๆจังๆกันดีกว่านะ

{% hint style="success" %}
**แนะนำให้อ่าน**\
สำหรับคนที่ไม่รู้เรื่องคลาว์เลย แต่แอบมีใจอยากลองเด่ขาเข้ามาฝั่งนี้บ้าง ผมแนะนำให้ลองดูบทเรียนในลิงค์ด้านล่างนี้ก่อนนะ มันจะได้รู้ว่าควรจะสละเวลาเล่นเกมส์มาศึกษามันจริงๆหรือเป่านั่นเอง [**👶 Cloud พื้นฐาน**](https://www.saladpuk.com/basic/cloud101)\*\*\*\*
{% endhint %}

## 🤔 App Services ทำไยได้ ?

### 🔥 Apps

อู๊วววว เย๊อะม๊วกกก เช่น อยากได้เว็บไซต์ซักตัว, อยากทำ Mobile back-end, อยากมีทำ REST API บลาๆ ก็สามารถให้กดสร้างได้เลยเพียงคลิก 2-3 ทีและรอไม่กี่วินาทีเท่านั้นเอง เราก็จะได้ของที่ว่ามาเอาไว้ใช้ทำ production ได้เลย

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LoC_Gj4aQZZ5anGiTc7%2Fimage.png?generation=1583529174328085\&alt=media)

หรือแม้กระทั้งแอพที่ใช้ทำงานแบบไม่มีวันพักผ่อน ทำงานจนตายกันไปข้าง หรือที่เราเรียกกันว่า **Background Services** นั่นเอง ซึ่งของ Azure เขาเรียกว่า **WebJobs** เช่น เอาไว้ไล่เคลียข้อมูล เอาไว้ทำ thumbnail รูป หรืออะไรก็ตามที่เราไม่อยากให้มันเสียทรัพยากร (มีหลายตัวอยู่ที่มีไว้ทำงานลักษณะนี้)

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LpGi5xOv8E7QZ-qEshn%2Fimage.png?generation=1583529152653470\&alt=media)

หรือแม้กระทั่งตัวที่เอาไว้ส่ง Notification ต่างๆลง Platforms ต่างๆ เช่น Android, iOS, Windows, Kindle ก็มีตัวที่ชื่อว่า **Notification Hub** นะจ๊ะ

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LqRTkWHjszFCyK4L0V5%2Fimage.png?generation=1583529178787252\&alt=media)

### 🔥 Operating System

แถมเรายังสามารถเลือกได้ด้วยว่าจะใช้ OS เป็น **Windows** หรือ **Linux** อีกด้วยนะ อันนี้รักเลยเพราะบางทีเราอยากจะประหยัดค่า License

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LsoucYHWXSJV7CD5Jta%2Fimage.png?generation=1583529164982771\&alt=media)

### 🔥 Development Frameworks

รองรับภาษาอะไรบ้างนะเหรอ ตามลิสต์นี้เลย `.NET Framework`, `.NET Core`, `Java`, `Ruby`, `Node.js`, `PHP`, `Phyton` อีกทั้งเรายังเลือก version ย่อยได้อีกนะ ตามรูปด้านล่าง เวอร์ชั่นใหม่ๆออกก็กระโดดมาให้ใช้ทันที + ยังคงเวอร์ชันเก่าให้เลือกใช้ได้ยาวๆอีกด้วย

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LqHWlWgsYM307CEEtTi%2Fimage.png?generation=1583529164580700\&alt=media)

คือจะให้มาร่ายทั้งหมดทุกซอกทุกมุมของ App Services ในบทความนี้ ผมว่ามันคงจะยาวเฟื้อยเลยล่ะ ดังนั้นขอตัดบทไปดูเรื่องอื่นกันบ้างนะ ... ฉับ ฉับ ฉับ

## 🤔 ชีวิตสบายขึ้นได้ไง ?

### 🔥 Deployments

#### DevOps

สำหรับคนที่ชอบ **Automation** ตามฉบับของ **DevOps** อย่าง **(CI) Continuous Integration, (CD) Continuous Delivery** หรือทำงานในพวก **Git** ต่างๆแล้วล่ะก็ งานเหล่านั้นสามารถเอาขึ้น App Services ได้เลยนะฮ๊าฟฟฟฟ ไม่ว่าเราจะใช้ค่ายไหน **`VSTS`**, **`GitHub`**, **`BitBucket`**, **`Docker Hub`** เขาก็รองรับหมดนะก๊าฟฟฟ หรือจะเป็น **`FTP`**, **`Local Repository`** ก็จัดมาได้หมดเลย หรือจะเป็นอัพโหลดด้วย **`Zip file`**, **`OneDrive`**, **`DropBox`** ก็มิหวั่นนะจ๊ะ

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LueiSh_L72izBqhcoZz%2Fimage.png?generation=1583529175377846\&alt=media)

#### Environment

แถมยังสามารถสร้าง Environments ต่างๆขึ้นมาเพื่อให้เราแยกการ Deploy ในแต่ละ Environments เพื่อทำการทดสอบระบบก่อนที่จะใช้งานจริงได้ด้วย ซึ่งถ้าระบบพร้อมใช้งานแล้วก็ทำการสลับตัวกัน ทำให้ผู้ใช้ไม่รู้สึกถึง **Downtime** ที่เกิดขึ้นเลย หรือพูดง่ายๆว่า **ไม่ต้องปิดเซิฟเวอร์เพื่ออัพเดทนั่นเอง** ซึ่งบน Azure เรียกมันว่า **Deployment Slots** นั่นเอง

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-Lps97Jg2nZfl4wcCBTO%2Fimage.png?generation=1583529164820993\&alt=media)

#### A/B Testing

เวลาที่เราอยากรู้ว่าแบบ A กับแบบ B อันไหนมีปัญหา หรืออะไรก็ตามแต่ เราก็สามารถ **แยก Traffic ของผู้ใช้** ไปลองใช้งานได้ด้วยนะจ๊ะ

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LnSEsdlu3SiP4_6Txj-%2Fimage.png?generation=1583529162846491\&alt=media)

### 🔥 Backup & Restore

ถ้าเราอยากทำ **Snapshot** หรือสร้าง **Backup** ข้อมูล, database หรืออะไรต่างๆก็สามารถทำได้ แถมยังตั้งเป็น Schedule ไว้ได้ด้วยนะ เมื่อไหร่ที่มีปัญหาก็สามารถย้อนกลับมาได้

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LoQSTVNUf66FYuN4C1y%2Fimage.png?generation=1583529155115513\&alt=media)

### 🔥 Authentications

กรณีที่เราไม่อยากให้ใครก็ไม่รู้มาเข้าใช้งานระบบ เขาก็มีระบบ Authentication เพื่อยืนยันตัวตนก่อนใช้งานให้เราด้วยนะ กดจิ้มจึ๊กๆไม่กี่ทีก็ได้ระบบ **Login** ด้วย **Azure AD, Facebook, Google, Microsoft, Twitter** มาใช้งานแว้ว

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LvuD4uPsymUtmZUv7H2%2Fimage.png?generation=1583529166038236\&alt=media)

### 🔥 Scaling

กรณีที่มีคนเข้ามาใช้งานเยอะๆ แล้วกลับระบบรับโหลดไม่ไหว เราก็สามารถขยายเครื่องได้ด้วยนะ ไม่ว่าจะเป็นการทำ Scale Up/Down หรือ Scale In/Out ก็ได้หมด แถมยังตั้งเป็น schedule เช่นทุกๆวันศุกร์ตอน 2 ทุ่ม หรือ จะให้ระบบมันจัดการให้เองถ้า CPU พุ่งปรี๊ดไรงี้ก็ได้เช่นกัล

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LpcO1ft9rQW0Y99ditB%2Fimage.png?generation=1583529176749394\&alt=media)

{% hint style="success" %}
**แนะนำให้อ่าน**\
พอดีเขียนบทความเรื่อง Auto Scaling ไว้แล้ว ดังนั้นถ้าสนใจจุดนี้ก็ไปอ่านได้จากลิงค์นี้เบย [**Auto Scaling**](https://www.saladpuk.com/cloud/azure101/auto-scaling)\*\*\*\*
{% endhint %}

### 🔥 **Domain Name**

สำหรับคนที่อยากได้ **Domain Name** เป็นของตัวเอง หรือมีอยู่แล้วก็สามารถมา claim ได้เลยนะจ๊ะ

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LnPjwebTm9wp1bAIYBB%2Fimage.png?generation=1583529160319412\&alt=media)

### 🔥 SSL Cerifications

สำหรับคนที่มี Certifications อยู่แล้วก็สามารถเอามา binding ได้เช่นกัลล์ หรือ ยังไม่มีกดซื้อด้านบนได้เช่นกัล

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LpcQIlVuKPu7LxDzmS_%2Fimage.png?generation=1583529152286492\&alt=media)

### 🔥 Monitoring

เพื่อป้องกันไม่ให้ระบบล่ม หรือ หาสาเหตุข้อผิดพลาดที่เกิดขึ้นในระบบของเรา การเข้าไปดูสถานะ **Log** สภาพเซิฟเวอร์ หรือแม้กระทั่ง **Real-time Log** ก็เป็นสิ่งที่ขาดไม่ได้เลย ซึ่ง Azure จัดเต็มมาให้กับเรื่องนี้เป็นหมวดใหญ่ๆเลย และมันก็ทำงานกับ **Application Insights** ได้ด้วยนะ ซึ่งจุดนี้มันเยอะม๊วกกก ขอแยกไปอธิบายในบทความเฉพาะทางเอาละกัน

![](https://479516123-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lm0_idNbY6k1lwp6hm4%2F-M1lfqlFTvI3gmheTI_q%2F-LtpJCL7TYM1kbnVws6z%2Fimage.png?generation=1583529130478729\&alt=media)

### 🔥 รวบรัดตัดจบ

อย่างที่บอกว่ามันยาวม๊ากกกกกกก ถ้าจะให้ไล่ให้หมด ดังนั้นผมขอไล่แบบรวดเดียวตรงนี้เลยว่า ถ้าเราใช้ App Services มันยังจะทำให้เรา

* **Hybrid data connection -** ต่อไปใช้งานกับเซิฟเวอร์ส่วนตัวของเราก็ได้
* **Restrict Access to IP Address & Ranges IPs -** จำกัดสิทธิ์ IP ที่จะเข้ามาใช้งานได้
* **App Service Advisor -** มีระบบสอดส่องสิ่งแปลกๆที่เกิดขึ้นในระบบตลอดเวลา
* **Resource health -** มีระบบตรวจสอบว่า Service เรายังอยู่ดีมีสุขทำงานได้ปรกติหรือเปล่า
* **Performance Testing** - ถ้าอยากรู้ว่าระบบของเราจะรับโหลดได้มากน้อยขนาดไหน ก็ลองจิ้มตัวนี้ได้เลย เขาจะจำลองสถานะการณ์ผู้ใช้กระหน่ำเซิฟเวอร์ให้เราแบบถึงลูกถึงคน แล้วเราจะรู้ขีดจำกัดของตัวเราเอง เพื่อไล่หาคอขวด ที่มาคอยขัดให้ระบบเราช้าเป็นเต่านั่นเอง
* **API Management** - สามารถทำงานเข้ากับตัวจัดการเรื่อง 3rd party หรือ Client ของเราได้ว่าจะให้สิทธิ์เข้าได้ถึงไหน เวอร์ชั่นอะไร บลาๆ

และอื่นๆอีกมากมายที่เริ่มขี้เกียจอธิบาย เอาไว้ดูในรายละเอียดของมันในบทความเฉพาะอีกทีละกัน เพราะเดี๋ยวเราจะลงรายละเอียดมันไปเรื่อยๆทีละตัวนั่นเอง **`Kudo`**, **`VNet`**, **`Azure Front Door`**, **`Web Firewall`**, **`CDN`**

## 🤔 ต้องดูแลเยอะป่ะ ?

ทั้งหมดที่ร่ายยาวมา **เราไม่ต้องไปสนใจเรื่อง Infrastructure เลย** เช่น จะเว็บเราจะอัพเกรด OS เมื่อไหร่? จะเพิ่ม Anti-virus ดีไหม? Internet ล่มต้องทำไง? บลาๆ เพราะตัว App Services นั้นตั้งอยู่บนสิ่งที่เรียกว่า **`PaaS`** หรือ **`Platform as a Service`** นั่นเอง

{% hint style="success" %}
**แนะนำให้อ่าน**\
ใครจำ **PaaS** ไม่ได้หรืออยากรู้ประเภทของคลาว์เซอร์วิส ก็สามารถไปอ่านทำความเข้าใจได้ที่ลิงค์นี้ขอรับ [**ประเภทของคลาว์เซอร์วิส**](https://www.saladpuk.com/cloud/azure101/service-types#paas)\*\*\*\*
{% endhint %}

## 🎯 บทสรุป

สำหรับคนที่อ่านทั้งหมดนั่นแล้วไม่เข้าใจเลย ผมพูดง่ายแบบนี้ละกันว่า แค่ใช้งาน App Services เป็นเพียงตระกูลนี้ตระกูลเดียว ก็รองรับงานส่วนใหญ่ 80% ของที่ลูกค้าจะมาจ้างแล้วล่ะ แถมยังได้ความสามารถในการควบคุมดูแลระบบ ที่อยู่ในระดับโลกใช้กันอีกด้วย ดังนั้นจงมอบตัวแล้วค่อยๆมาเรียนรู้การใช้งานเจ้าตัวนี้กันดีกั่ว

{% hint style="info" %}
คอร์สนี้กำลังค่อยๆเขียนอยู่ ใครที่ไม่อยากพลาดอัพเดทก็เข้าไปกดติดตามที่ลิงค์ [**Mr.Saladpuk**](https://www.facebook.com/mr.saladpuk) ได้เลย ส่วนใครที่อยากศึกษา App Service ตัวไหนล่วงหน้าก็ส่งข้อความไปทักเอาได้เช่นกันขอรับ
{% endhint %}
