Ở kì trước, chúng ta đã deploy một ứng dụng đơn giản trên máy ảo rồi.
Trong phần 4 này, chúng ta sẽ tìm hiểu về Azure App Service, cũng như thực hành deploy ứng dụng lên Azure App Service một cách nhanh hơn, tiện hơn, nhẹ nhành hơn nha!
Nhược điểm của việc tự quản lý server
Ở phần trước, mình cố tình bắt các bạn deploy một ứng dụng lên server để hiểu ứng dụng thực sự hoạt động ra sao.
Tuy nhiên, các bạn có thể thấy cách này khá là dài dòng phức tạp, chúng ta phải làm “hơi bị nhiều” bước:
- Cài Runtime (C#, NodeJS, Java) của ứng dụng đó
- Copy code ứng dụng về máy (file zip, pull từ Git)
- Chạy ứng dụng từ command line hoặc bỏ vào IIS/Apache
- Mở port từ Azure, mở firewall trên server
- Trỏ tên miền tới IP của máy ảo v…v
Ngoài ra, cách thủ công này còn có 1 số vấn đề:
- Khó tự động hóa, mỗi khi update code bản mới, ta phải copy code lên server rồi chạy
- Phải tự bảo đảm security trên máy ảo (Cài lung tung rất dễ dính virus)
- Phải cài đặt và tinh chỉnh IIS và Windows để optimize hiệu năng
- Khi server chết (do xóa nhầm v…v), mất dữ liệu phải cài đặt lại, deploy lại
- Phải update OS, update runtime của ứng dụng lên phiên bản mới khi cần (cần tính năng mới, vá lỗi bảo mật)
Trước đây, đây là việc của mấy anh sysdamin khi làm việc với server truyền thống, tốn khá nhiều thời gian và công sức.

Thế nhưng, developer chúng ta chỉ muốn code, bỏ code lên là chạy, không muốn làm mấy việc rườm rà phức tạp như vậy.
Thế là, Azure App Server ra đời, đáp ứng nhu cầu của developer!
Azure App Service là gì, nó có gì hot?
Nói một cách đơn giản, Azure App Service là một Platform cho phép ta tạo và deploy ứng dụng web/di động/API một cách nhanh chóng.
Nếu còn nhớ kiến thức ở bài về IaaS và Paas, các bạn sẽ thấy rõ sự khác biệt giữa Virtual Machine và App Service:
- Azure Virtual Machine là Infrastructure as a Service, cho bạn hạ tầng (máy ảo) để bạn tự cài đặt và tùy chỉnh
- Azure App Service là Platform as a Service, cho bạn platform (có sẵn runtime), bạn chỉ cần bỏ code vào là chạy.

Với Azure Web Service, bạn sẽ được Azure hỗ trợ tận răng. Chỉ cần deploy code lên là được. Mấy vấn đề như runtime để chạy code, biến môi trường, mở port, kết nối với domain, SSL,… đều được Azure lo hết.
Bên cạnh đó, App Service còn tích hợp khá nhiều thứ hay ho:
- Application Insight giúp bạn log lại performance của ứng dụng, giúp dễ optimize và cải thiện
- Monitoring giúp theo dõi và thông báo khi có điều bất thường trong hệ thống (CPU hoặc RAM tăng cao, lỗi 500 nhiều)
- Snapshot giúp ta tự động back-up code và dữ liệu

Phân biệt App Service và App Service Plan
Việc tạo và deploy App Service cũng khá dễ dàng, chỉ tốn khoảng 5 phút là xong. Tuy vậy, trước khi bắt đầu, mình sẽ giúp các bạn phân biệt 2 khái niệm dễ gây nhầm lẫn: App Service và App Service Plan.
Khi tạo 1 App Service trong Azure, các bạn sẽ thấy cửa sổ sau:
Mỗi khi tạo App Service mới, các bạn sẽ phải chọn một App Service Plan đi kèm với nó. Bạn có thể hiểu nôm na như sau:
- App Service là một ứng dụng web/web api
- App Service Plan là server để chạy ứng dụng đó. Do vậy, khi tạo App Service, ta phải chọn App Service Plan để chọn máy chủ sẽ chạy ứng dụng của mình.
Ví dụ, bạn làm web bán hàng, bạn tạo 2 ứng dụng cho khách hàng và cho admin, dùng chung 1 database. Hai ứng dụng này chạy chung trên một máy chủ ở Việt Nam. Lúc này, App Service Plan chính là máy chủ ở Việt Nam, và 2 ứng dụng chính là 2 App Service, chạy trên Plan đó.
Một số điểm nhỏ khác cần lưu ý:
- Trong 1 App Service Plan, bạn có thể deploy bao nhiêu App Service tùy thích (Chỉ có gói Free và Shared là có giới hạn)
- Azure tính tiền theo App Service Plan, không phải theo App Service. Nếu có vài chục ứng dụng xài chung 1 Plan, bạn chỉ bị tính tiền 1 Plan đó!
- Khi nhiều App Service này dùng chung một Plan, chúng sẽ dùng chung tài nguyên (CPU, RAM, Disk), do đó nếu một ứng dụng chiếm quá nhiều tài nguyên, nó sẽ làm ảnh hưởng đến các ứng dụng khác.
- Ngày xưa ở công ty mình có cái App Service nặng quá, phải cho nó nằm nguyên 1 Plan chơi 1 mình luôn

Tạm kết
Ở kì này, mình đã nói sơ lý thuyết để các bạn hiểu về việc mình sẽ làm. Công nghệ gì cũng vậy, thay vì cắm đầu làm, các bạn tìm hiểu nguyên nhân nó ra đời, vấn đề nó giải quyết trước, thì khi làm sẽ dễ tiếp thu hơn nhiều!
Lý thuyết vậy cũng tạm đủ rồi, tới kì sau tụi mình sẽ bắt tay vào deploy ứng dụng lên Azure App Service luôn nha! Kì sau mình đã viết xong rồi nên các bạn cứ hóng tuần sau sẽ có nhé!
Hi Admin,
Cám ơn anh đã chia sẻ thông tin.
Em đang muốn triển khai hệ thống web trên nền Azure với mô hình như sau nhờ anh tư vấn:
Em muốn triển khai một loạt Web – App Service docker kết nối đến database MySQL. Nhờ anh tư vấn việc cân bằng tải cho các Web.
LikeLike
Hi admin, cho mình hỏi chút, mình muốn setup auto scale cho app service plan, trường hợp này có phát sinh chi phí subscription ko bạn.
LikeLike
Có đó bạn :D, nếu scale nhiều thì tính phí nhiều nha
LikeLike
mọi người cho em hỏi deploy lên IIS và Azure khác nhau gì được không ?
deploy lên IIS là chỉ máy của mình có thể nhìn thấy trang web thôi. Trong khi Azure thì có thể cho cả thế giới coi phải không ạ?
Em chưa hiểu lắm, nên có gì sai thì mong mn góp ý…
LikeLike