Cùng học Cờ Lao – Azure Phần Cuối: Toàn bộ một hệ thống chạy trên Azure sẽ như thế nào?

Ở những bài trước, tụi mình đã cùng tìm hiểu về Cloud, cũng như những dịch vụ hay dùng của Azure rồi.

Trong phần này, mình sẽ tổng hợp lại toàn bộ series, cũng như giới thiệu các bạn bạn biết Toàn bộ một hệ thống chạy trên Azure sẽ trông như thế nào nhé!

Xem xong, các bạn sẽ biết được mối quan hệ giữa các dịch vụ này, cách kết hợp chúng với nhau nha! Các bạn đọc bài, thấy quên phần nào cứ bấm vào link phần đó để đọc lại nhé!

Mục lục

Lý thuyết

Thực hành cùng Azure

Để dễ hình dung, chúng ta hãy thử tượng tượng ta muốn làm 1 mạng xã hội nho nhỏ như Facebook, Gạ Phò hay Củ Sen đình đám vừa ra mắt nha!

 

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!

Tạm kết

Sau một chặng đường dài hơn nửa năm, cuối cùng series Cùng Học Cờ Lao cũng đã đi đến hồi kết.

Trong quá trình viết series này, mình cũng ôn lại được kha khá kiến thức về Azure, đồng thời tổng hợp và chia sẻ lại những điều mình biết về Cloud cho các bạn đọc.

Trong phạm vi series, mình chỉ giới thiệu những service phổ biến, hay được anh em developer sử dụng. Bản thân Azure có quá trời service mà mình chưa biết, hoặc chưa đụng tới bao giờ. Do vậy, nếu trong series có gì thiếu sót, mong anh em thông cảm, góp ý để mình cải thiện nhé.

Một đống service của Azure, series chắc chỉ đề cập được 15-20%

Series hơi rải rác nên mình đã tổng hợp lại phần mục lục phía trên. Sắp tới chắc mình sẽ tổng hợp chỉnh sửa lại rồi ra ebook luôn 1 thể.

Đây là một series dài, hơi nặng technical và khá khó. Nếu bạn chịu  đọc đến đây, cảm ơn bạn đã chịu khó đồng hành cùng Code Dạo. Hi vọng những thứ mình chia sẻ trong series này có ích cho bạn.

4 thoughts on “Cùng học Cờ Lao – Azure Phần Cuối: Toàn bộ một hệ thống chạy trên Azure sẽ như thế nào?”

Leave a comment