Cùng học Cờ Lao – Azure Phần 7: Một số service hay ho khác của Azure

Sau một chặng đường dài dằng dặc thì series “Cùng học Cờ Lao” sắp đi tới phần cuối rồi.

Ở phần này, mình sẽ giới thiệu thêm 1 số service hay ho khác của Azure nhé. Đây là các service khá hay ho, thường được dùng trong những hệ thống lớn, trong kiến trúc microservice.

Trong phần lớn trường hợp, bạn sẽ không chưa dùng tới chúng. Tuy nhiên, khi hệ thống bắt đầu lớn dần, nhiều người dùng hơn, bạn cũng nên biết để dùng chút chút đó nha.

1. Azure Load Balancer

Ở bài Thiết kế hệ thống phục vụ triệu người dùng, mình đã có nhắc đến Load Balancer. Nói đơn giản, Load Balancer là một thiết bị (phần cứng hoặc phần mềm) cho phép cân bằng tải đến nhiều server.

Giả sử ta có 1 server có thể phục vụ 1000 người. Để phục vụ 10000 người, ta có thể chạy 10 server. Người dùng sẽ không trực tiếp truy cập tới server, mà chỉ truy cập tới load balancer.

LB sẽ điều tiết, cân bằng lượng tải trên 10 server này. Ngoài ra, lâu lâu Load Balander còn thực hiện Health Check, gửi request đến các server để xem  server còn sống hay đã chết, sau đó điều tiết request qua các server còn sống.

Nếu hệ thống của bạn chạy trên Azure VM thuần, Azure có hỗ trợ Azure Load Balancer. Nếu các bạn chạy app trên Azure App Service, bản thân App Service đã có Load Balancer, các bạn chỉ việc tăng giảm số lượng instance là được.

2. Azure Cache for Redis

Như mình đã giới thiệu ở bài viết về Kĩ Thuật Caching, caching là cách ta hi sinh memory/disk để giảm CPU time, hoặc network time nhằm tăng tốc độ hoặc giảm tải hệ thống.

Thông thường, người ta hay sử dụng Memcache hoặc Redis để làm Caching server. Redis nhanh hơn, nhiều chức năng hơn nên hiện đang được sử dụng nhiều hơn.

Để có 1 caching server bằng Redis, ta có thể tạo VM, sau đó cài Redis, thiết lập port v…v để sử dụng. Tuy vậy, Azure cung cấp luôn cho chúng ta một dịch vụ mang tên Azure Cache for Redis, chỉ cần tạo là chạy luôn rất tiện.

Redis Cache được dùng làm cache server, lưu trữ thông tin hệ thống

Hùi xưa còn làm ở Algomerchant, team mình của dùng Redis Cache để lưu thông tin token người dùng, tận dụng luôn để làm messege queue giữa các service luôn

3. Azure Message Queue và Service Bus

Hôm trước, mình đã có 1 bài viết về Message Queue và ứng dụng của nó trong kiến trúc microservice.

Nói một cách huề vốn, Message Queue tức là một cái Queue (hàng đợi), chứa nhiều Message. Các bạn có thể hiểu message queue là một hộp thư, cho phép các thành phần/service trong một hệ thống (hoặc nhiều hệ thống), gửi thông tin cho nhau.

Message Queue tức là một queue (hàng đợi), chứa các Message.

Azure cung cấp khá nhiều cách để dùng message queue nên cũng hơi rối cho người dùng:

  1. Dùng Redis để làm messege queue
  2. Sử dụng Azure Storage Queue hoặc Azure Service Bus

Nếu thắc mắc không biết nên dùng cách nào, các bạn có thể xem bài so sánh này của Microsoft. Hồi xưa công ty mình dùng Azure Storage Queue thấy cũng không vấn đề gì!

4. Azure Notification Hub

Nếu có làm các ứng dụng mobile, các bạn sẽ biết việc gửi thông báo (notification) chưa bao giờ là chuyện dễ dàng!

Các bạn sẽ phải lưu trữ thông tin của thiết bị, thiết lập kết nối tới server của Apple, Google để có thể gửi thông báo. Mỗi hệ điều hành lại cần một thiết lập riêng.

Do vậy, Azure cung cấp Azure Notification Hub. Notification Hub này hỗ trợ kết nối tới đủ thứ dịch vụ như APNs (Apple Push Notification service), GCM (Google Cloud Messaging), WNS (Windows Push Notification Service), MPNS (Microsoft Push Notification Service).

Sau khi thiết lập đúng kết nối, bạn có thể dễ dàng gửi notification tới người dùng bằng cách gọi API từ back-end là xong

5. Azure Function – Serverless

Để hiểu serverless là gì, các bạn hãy đọc lại bài viết Giải thích kiến trúc Serverless.

Nói một cách ngắn gọn:

  • Với mô hình client-server thông thường, ta phải thuê server rồi deploy ứng dụng lên server.
  • Với mô hình serverless, thay vì deploy code này lên server, ta deploy nó đưới dạng một Function (Function as a Service – FaaS). Funtion này có thể được gọi dưới dạng RestAPI hoặc chạy theo lịch đã sắp sẵn.
  • Với FaaS, ta chỉ cần viết code mà không cần quan tâm đến việc server và code sẽ nằm ở đâu. Bên thứ 3 (Amazon, Microsoft) sẽ quản lý việc này.

Trong Nhận Diện Idol, mình dùng Azure Funtion của Microsoft, viết vài dòng code ngăn ngắn để làm RestAPI. Nhờ vậy, API của mình có thể scale cực nhanh, cực nhiều (Nhờ Azure làm giúp) mà không cần thuê server gì cả.

Các bạn nào muốn tìm hiểu thêm có thể vào xem giới thiệu về Azure Function nhé!

Nếu chỉ cần viết vài cái API nho nhỏ thì cứ Azure Function mà táng nha

Tạm kết

Trong bài này, mình đã chia sẻ một số service khá hay ho của Azure. Tùy vào business của dự án, theo lượng người dùng mà có thể bạn sẽ chưa cần dùng đến những service này!

Ngoài ra, Azure còn 1 số service rất hay như Cognitive Service (Nhận diện âm thanh, hình ảnh), Azure DevOps, Azure Kubernetes, Azure Monitor (dựng dashboard để theo dõi hệ thống). Do vậy, các bạn thích thì cứ tìm hiểu thêm, biết đâu cũng sẽ có lúc dùng đến hà.

Series Cùng Học Cờ Lao đến đây cũng sắp kết thúc rồi! Ở kì cuối, chúng ta sẽ ôn lại sơ những thứ đã biết. Đồng thời, ta sẽ xem thử 1 hệ thống chạy hoàn toàn trên Azure sẽ có những gì, sử dụng những service nào nhen.

3 thoughts on “Cùng học Cờ Lao – Azure Phần 7: Một số service hay ho khác của Azure”

Leave a comment