Get in touch
or send us a question?
CONTACT

Toàn bộ một hệ thống chạy trên Azure sẽ như thế nào

Application – Azure App Service hoặc Azure VM

Mạng xã hội của chúng ta có thể được viết thành 1 cục bằng C#/PHP/Node.JS/Java. Hoặc nó có thể tách thành nhiều service nhỏ, mỗi service viết bằng 1 ngôn ngữ khác nhau.

Cách đơn giản nhất là deploy nguyên app/từng service lên Azure App Service, khỏi cần phải cài đặt gì phức tạp, muốn scale cũng dễ dàng luôn.

Trường hợp Azure App Service không hỗ trợ, chúng ta cũng có thể thuê nguyên con Azure VM, tha hồ cài cắm gì cũng được. Khi cần scale, ta có thể áp dụng thêm Azure Load Balancer để cân bằng tải giữa nhiều máy luôn.

Monolith hay Microservice, Java hay C# thì Azure App Service cũng cân được tất!

Ngoài ra, ở các công ty có DevOps, dùng microservice thì họ thường deploy lên Docker Swarm hoặc Kubernetes. Mảng này thì Google Cloud khá ngon, còn Azure hồi mình dùng thử Azure Kubernetes thấy hơi chuối, khuyên anh em đừng thử nha!

Database – Azure SQL Database hoặc CosmosDB + Redis Cache

Mạng xã hội thì phải có nơi lưu trữ thông tin của người dùng phải không nào? Thường thì dân viết C# hay dùng Microsoft SQL, còn lại thì đa phần giang hồ dùng MySQL hoặc Postgres.

Tin vui là cả 3 database này thì Azure đều có cả. Azure SQL Database còn hỗ trợ khá nhiều thứ hay ho như montoring, recommend đánh index, tự backup, dễ scale lên xuống nữa.

Ngoài ra, để giảm tải cho database, tăng tốc độ hệ thống, ta có thể dùng Redis làm cache để đỡ xử lý nhiều trên server.

Dùng MS SQL hay MySQL, Postgres cũng bỏ lên Azure được cả!

Lưu trữ File với Azure Blob/Azure File Storage

Tất nhiên, đã là mạng xã hội thì phải có nơi cho phép người dùng up hình vếu, up hình cho mèo để sống ảo, đăng clip quảng cáo bán hàng.

Azure cung cấp Azure Blob và Azure File, tha hồ cho chúng ta lưu trữ từ vài chục GB cho đến vài trăm TB. Chi phí được tính theo dung lượng lưu trữ, lưu lượng tải về nên lưu nhiều tốn nhiều, lưu ít tốn ít, không cần phải đầu tư quá nhiều.

Ngoài ra, nếu ta mở rộng, muốn dữ liệu được lưu trữ ở nhiều vùng khác nhau, phục vụ khách hàng trên toàn cầu, ta có thể tìm hiểu và áp dụng CDN. Cái này thì Azure cũng có Azure CDN luôn!

Azure Blob cân được đủ thể loại từ vài chục GB cho đến vài trăm TB

Quản lý hệ thống bằng Azure Monitor

Tất nhiên, một hệ thống dù có nhiều tính năng tới mức nào, nhưng chạy không ổn định, lúc chậm lúc nhanh, khi sập khi tèo thì … dĩ nhiên sẽ bị người dùng tẩy chay.

Do vậy, bản thân mỗi service của Azure đều có gắn kèm analytic:

  • Azure App Service có hiện thị server load, memory load, thời gian response của các response, request
  • Azure VM sẽ ghi log đủ thứ, dung lượng đĩa còn trống, RAM và CPU sử dụng, tốc độ đọc/ghi của ổ cứng v…v
  • Azure Database thì hiển thị dung lượng còn dư, số lượng đọc/ghi, những câu query chậm, chiếm tài nguyên để optimize
Ngắm dashboard để xem hệ thống còn thoi thóp hay đã tèo

Trên thực tế, người ta sẽ sử dụng Azure Monitor để lấy dữ liệu từ nhiều nguồn này để tạo thành dashboard, hiên thị trạng thái của hệ thống.

Ngoài ra, người ta thường setup thêm Health Check (Gửi request tới các service/web để xem nó sống hay không) và Notification.

Khi hệ thống có vấn đề (service chết, RAM quá cao, API chậm, …), Azure sẽ gửi thông báo qua tin nhắn SMS/ email để team có biện pháp xử lý kịp lúc

Một số tính năng thêm khác

  • Dùng Redis để làm message queue
  • Dùng Azure Notification Hub để gửi notification cho người dùng trên di động
  • Dùng Cognitive Services để nhận dạng khuôn mặt, âm thanh, xử lý ảnh.

Các bạn có thể tham khảo thêm tại Phần 7: Một số service hay ho khác của Azure. Một số service chuyên biệt dùng để lưu trữ, phân tích, xử lý big data thì mình ko dùng nên ko rõ. Bạn nào đã từng làm thì vào chia sẻ nha!

Một hệ thống phức tạp nó sẽ bự và đủ thứ hầm bà lằng thế này luôn!