Một số lưu ý quan trọng khi sử dụng CDN
🌍 Có nhất thiết phải sử dụng CDN hay không? Nếu tệp khách hàng mà bạn nhắm đến cho ứng dụng web của mình chỉ nằm trong lãnh thổ Việt Nam, thì việc sử dụng CDN là không cần thiết. Chỉ nên cân nhắc khi bạn nhắm đến tệp khách hàng đa quốc gia. Khi ấy CDN mới thực sự phát huy tác dụng về mặt địa lý của mình.
💶 Money: Thường thì mọi người sẽ sử dụng CDN của các nhà cung cấp phổ biến như Cloudflare, Amazon CloudFront, … Và đương nhiên, bạn sẽ phải trả phí để có thể sử dụng dịch vụ CDN của họ.
🤔 Nên lưu gì vào CDN? Chỉ nên lưu những file được client request thường xuyên. Còn việc cache những file không được sử dụng thường xuyên sẽ không mang lại lợi ích đáng kể nào, thế nên những file như vậy bạn không nên lưu vào CDN làm gì cả.
⏰ Set thời gian hết hạn thích hợp:
– Nếu set thời gian hết hạn quá dài, file trong CDN có thể bị cũ so với file gốc mà không được cập nhật.
– Ngược lại nếu set thời gian hết hạn quá ngắn, sẽ khiến file bị load lại nhiều lần từ server gốc sang CDN.
Vì vậy, thời gian hết hạn lưu trong CDN cần được cân nhắc cho từng file, trong từng trường hợp cụ thể.
🛡️ Dự phòng trường hợp CDN bị lỗi: Bạn nên xử lý để nếu CDN gặp sự cố, client sẽ có thể phát hiện và tạm thời request các file cần thiết từ server gốc.
👥 Sử dụng object versioning: Hiểu đơn giản là bạn có thể thêm tham số version vào URL dẫn đến file đó.
Ví dụ:
https://tentrangweb.cloudfront.net/logo.png?v=2
Khi này bức ảnh logo được tải về sẽ là ảnh mới nhất.
Đây cũng là cách mình thường sử dụng trong dự án thực tế để ứng dụng không bị request nhầm tới file cũ trên CDN.
⚙️ Tích hợp cả CDN và Cache vào hệ thống
Hình minh hoạt dưới đây mô tả thiết kế hệ thống khi sử dụng cả CDN và cache:
– Các file tĩnh như file hình ảnh, video, CSS, JavaScript, … sẽ không còn được lấy trực tiếp từ Web Server nữa. Mà chúng sẽ được lấy từ CDN để có hiệu suất tốt hơn.
– Database cũng được được giảm tải, vì có những dữ liệu đã được lưu vào cache (Các bạn có thể đọc lại bài “MỘT SỐ LƯU Ý KHI SỬ DỤNG CACHE” để cân nhắc về việc nên và không nên lưu gì vào cache nhé)
Lời nhắn
Bạn có thể tham khảo thêm những bài viết trong series “System Design” của mình trên blog này nhé. Hi vọng kiến thức này hữu ích với bạn.
Follow mình trên Facebook “CLB Lập trình – THPT Ngọc Tảo” hoặc kênh Youtube “Tờ Mờ Sáng học Lập trình” để cùng nhau học tập, chia sẻ những kiến thức công nghệ và lập trình hoàn toàn miễn phí nhé!
Facebook CLB Lập trình – THPT Ngọc Tảo: https://www.facebook.com/clb.it.ngoctao/
Youtube Tờ Mờ Sáng học Lập trình: https://www.youtube.com/@tmsanghoclaptrinh
Hẹn gặp lại 👋
Bạn có thể đọc thêm
Clean Architecture: A Craftsman’s Guide to Software Structure and Design – Robert C. Martin
Designing Data – Insensitive applications – Martin Kleppmann
System Analysis and Design – Alan Dennis, Barbara Haley Wixom, Roberta M. Roth
System Design Interview – Alex Xu
Modern Systems Analysis and Design – Joseph Valacich, Joey George
Head First Design Patterns – Eric Freeman, Elisabeth Robson