Cùng học Cờ Lao – Azure Phần 6.1: Lưu trữ file từ vài trăm MB tới hàng chục TB với Azure Storage

Ở mấy bài trước, chúng ta đã tìm hiểu về VM, về web app, về Database. Chừng đó là cũng tạm đủ để làm một ứng dụng hoàn chỉnh rồi.

Thế nhưng, để cho đủ bộ, trong bài này mình sẽ giới thiệu về những service của Azure cho phép chúng ta lưu trữ file luôn.

Các dịch vụ lưu trữ của Azure được gom lại thành Azure Storage: https://azure.microsoft.com/en-in/services/storage. Các dịch vụ chính của Azure Storage là:

  • Azure Blobs
  • Azure Files
  • Azure Queues
  • Azure Tables

 

Bài viết này sẽ gồm 2 phần:

  • Phần 1: Lưu trữ file có gì khó? Dùng Cloud được lợi gì?
  • Phần 2:  Tìm hiểu về Azure Blobs và Azure Files + Demo

Lưu trữ file có gì đâu mà khó?

Nếu chưa làm nhiều dự án (như mình hồi xưa), có lẽ bạn sẽ thắc mắc “Ủa thì file lưu cùng thư mục với web server hoặc lưu dưới database thôi, có gì đâu mà phải xoắn?”.

Thế nhưng, ở các số dự án lớn, họ sẽ tách web server và file server ra riêng. Thông thường ta cần một hoặc nhiều file server riêng, chỉ để lưu trữ file thôi, vì các lý do sau đây:

  • Tốn tài nguyên: Để web server vừa chạy ứng dụng, vừa lưu và tải file sẽ làm chậm hệ thống, tốn bandwith. Việc đọc/ghi file sẽ tranh giành resource với web application.
  • Khó mở rộng: Khi số lượng tải tăng lên, ta không thể tăng thêm số lượng web-server và dùng cân bằng tải, vì mỗi web server sẽ chứa những file riêng biệt

Đấy, mà đã xong đâu? Sau khi có file server riêng để lưu trữ file, còn khá nhiều vấn đề phải lo:

  • Bandwidth và Speed: Fileserver phải đảm bảo được tốc độ truyền tải dữ liệu. Người dùng ít thì đỡ, người dùng đông đông, cần bandwith tầm vài GB/s thì một file server không thể nào chịu thấu
  • Security: Dữ liệu chứa trong file đa phần là dữ liệu nhạy cảm. Hệ thống phải phân quyền để chỉ có app/cá nhân phù hợp mới truy cập được fileserver này. Ngoài ra, khi up dữ liệu lên, tải dữ liệu về cũng phải được mã hóa để trống trộm
  • Backup và Reliability: Với những hệ thống lớn, chuyện hỏng ổ cứng, server hư là chuyện thường ngày ở huyện. File phải được back-up thường xuyên, lưu trữ nhiều nơi để dữ liệu bị hư thì vẫn còn dữ liệu để khôi phục.
Lưu trữ file với số lượng lớn, phục vụ nhiều người chưa bao giờ là chuyện đơn giản

 

Các bạn thấy đấy, với những hệ thống nho nhỏ đơn giản, cứ lưu ảnh và file vào chung server với web server là được. Tuy nhiên, ở những hệ thống lớn, cần xử lý file nhiều, ta phải xây dựng nguyên 1 hệ thống hạ tầng phục vụ cho việc lưu trữ, xử lý, upload/download file.

Lưu file trên Cloud thì được lợi gì?

Như mình đã nói ở mấy bài trước, khi sử dụng các dịch vụ lưu trữ trên Cloud của Azure, AWS, các bạn được dùng sẵn hạ tầng của họ, không cần phải build lại từ đầu.

Khi sử dụng các dịch vụ Cloud này, chúng ta sẽ được khá nhiều lợi ích:

  • Đỡ tốn chi phí ban đầu: Azure tính tiền theo theo dung lượng lưu trữ + lưu lượng. Hiện tại giá lưu là khoảng 18-30$/TB/tháng. Do đó ta sẽ đỡ tốn chi phí đầu tư ban đầu, thay vì phải bỏ tiền mua ổ cứng thì cứ xài nhiêu trả nhiêu trên Azure thôi.
  • Dễ mở rộng: Khi nhu cầu lưu trữ tăng, ta cũng không cần phải mua thêm ổ cứng gắn vào; chỉ cần trả nhiều tiền hơn cho Azure là được.
  • Ổn định: Azure hoặc AWS sẽ lo phần hạ tầng, backup, data rendundancy để đảm bảo dữ liệu của bạn không bị mất, dễ dàng restore dù cho thiên tai động đất v…v
  • Bảo mật: File được lưu trữ trên Azure/AWS đều được encrypt trong quá trình lưu trữ, upload. Ta cũng có thể phân quyền thông qua account, thông qua API Key hoặc Token.
  • Dễ truy cập thông qua API: Thông thường, các application của chúng ta sẽ cần tương tác với file (download, upload). Azure/AWS sẽ cung cấp các thư viện để tương tác với file trong C#/Java, hoặc giao tiếp thẳng qua RestAPI cũng được luôn.
Khi sử dụng Cloud, hạ tầng là việc của người ta, chúng ta chỉ cần dùng thôi

 

Tuy nhiên, bên cạnh ưu điểm thì cũng có 1 số khuyết điểm như:

  • Giá sẽ hơi cao nếu so về lâu dài (Sau khoảng 2-3 năm là ta bắt đầu lỗ)
  • Khi có lượng tải nhiều, hoặc bị dính virus thì phải charge tiền khá nhiều, vì giá tính theo lưu lượng
  • Nếu hệ thống trên Cloud bự sự cố thì hệ thống chúng ta sẽ bị ảnh hưởng (Khả năng này hơi thấp vì theo SLA, họ sẽ đảm bảo uptime từ 99.9 cho tới 99.99)

Tạm kết

Đấy, bài này cũng tạm dài rồi nên mình tạm dừng ở đây. Ở những bài sau, tụi mình sẽ cùng tìm hiểu về 2 dịch vụ chính để lưu file của Azure là: Azure BlobAzure Files nha.

One thought on “Cùng học Cờ Lao – Azure Phần 6.1: Lưu trữ file từ vài trăm MB tới hàng chục TB với Azure Storage”

  1. Bài viết rất nhiều thông tin kĩ thuật hay! Xin cám ơn bạn Hoàng. Xin có tí góp ý mong bạn đừng giận: người VN chúng ta không đứng sau anh Ấn Độ về kĩ thuật nhiều lắm đâu nhưng chúng ta mất hợp đồng IT quá nhiều vì bị bỏ quá xa về Anh ngữ. Chúng ta nói chơi “Cờ Lao,” đọc Ti-ta-líc, cờ-ninh-tơn… riết chính chúng ta tụt hậu về phát âm chuẩn tiếng Anh. Ước chi bạn xài ajax có nút pronunciation cho bà con được nghe giọng phát âm chuẩn của những cái keywords về kĩ thuật. Cho tớ xin nỗi trước nếu có ăn nói vớ với vẩn.

    Like

Leave a comment