CDN giảm tải cho Server như thế nào?

CDN là một thuật ngữ không còn xa lạ với dân trong nghề. Mặc dù đã được ra đời cách đây 18 năm nhưng gần đây, CDN được sử dụng hầu như là tất cả trên các website lớn. Cái tên Cloudflare có lẽ không còn quá xa lạ khi mà dịch vụ CDN miễn phí ở đây được rất nhiều website blog cá nhân tin dùng. Câu hỏi ở đây là ngoài các chức năng thông thường của CDN thì công nghệ này có giúp giảm tải cho Server hay không? Hãy cùng tìm hiểu qua bài viết dưới đây.

1. CDN là gì

CDN viết tắt của Content Delivery Network, tạm dịch là “Mạng phân phối thông tin”. CDN là một hệ thống các server phân tán trên khắp thế giới, đưa nội dung đến với người dùng một cách nhanh nhất có thể dựa theo vị trí địa lý của người dùng và các servers lưu trữ thông tin.

CDN đóng vai trò quan trọng trong việc tăng tốc độ truyền tải dữ liệu đến với người dùng, đặc biệt với các website có ý định phát triển vươn ra toàn cầu. Ví dụ đơn giản là khi một người dùng tại Hà Nội muốn nhận một tập tin, nếu tập tin đó được chuyển đến từ Mỹ thì sẽ phải mất nửa vòng trái đất để đến đích. Rõ ràng con đường đó quá dài và sẽ tốn thời gian hơn rất nhiều nếu nó được gửi từ Singapore hay Nhật Bản.

CDN giảm tải cho Server như thế nào?

Hình trên là mô hình mạng của trang web cloudflare.com, một website cung cấp dịch vụ CDN. Có thể thấy có rất nhiều server phân tán trên khắp thế giới, và sẽ thật may mắn nếu bạn sống ở Hà Nội và nhận được tập tin từ một server tại Singapore, thay vì từ Chicago.

2. Sự khác biệt khi sử dụng và không sử dụng CDN

a) Không sử dụng CDN

Khi người dùng xem một tập tin mà không có CDN, nghĩa là họ đã gửi một request thẳng đến máy chủ chứa website để truy cập tập tin đó.

CDN giảm tải cho Server như thế nào?

b) Sử dụng CDN

Khi một tập tin được phân phối bởi CDN, người dùng truy cập vào nó thì PoP phân phối gần nhất so với người dùng sẽ trả nội dung về cho người dùng xem.

CDN giảm tải cho Server như thế nào?

3. Nguyên lý hoạt động của CDN

Nguyên tắc cơ bản của CDN là rải rác dữ liệu ở rất nhiều server trên thế giới (các file tĩnh như hình ảnh, video, Javascript, CSS,…). Server có khoảng cách địa lý đến người dùng gần nhất sẽ được dùng để gửi dữ liệu đến cho người dùng.

CDN giảm tải cho Server như thế nào?

Hình trên mô tả một mô hình đơn giản của CDN. Có một server chính (Original server) đóng vai trò trung gian nhận request, dữ liệu và phân phối request, dữ liệu đến các server cạnh (edge server). Người dùng ở gần server cạnh nào nhất sẽ nhận được dữ liệu trả về từ server đó. Từ “server” ở hình trên chỉ mang tính mô phỏng, bởi các điểm được chỉ định sẽ có một data center với hàng tá máy chủ hoạt động ngày đêm, với vai trò đảm bảo cho CDN luôn luôn hoạt động.

4. Cách mà CDN giảm tải cho Server

Tăng tốc độ, tiết kiệm băng thông

Như đề cập ở đầu bài viết, với mỗi một request đến các link có trong tập tin HTML đầu tiên, bao gồm các link CSS, Javascript, video, hình ảnh,… trình duyệt sẽ gửi một request lên địa chỉ đó. Trong trường hợp chúng ta sử dụng CDN, thay vì request lên server của chúng ta, trình duyệt sẽ gửi request lên một server khác. Qua đó giảm được lưu lượn truy cập đến server hiện tại. Và như có đề cập ở trên, server này sẽ được tối ưu để “gần” nhất với máy tính của chúng ta, qua đó tốc độ được đảm bảo luôn ở mức tốt nhất.

Tập tin có thể được được lưu tại cache của trình duyệt

Ngày này, rất nhiều trang web sử dụng CDN. Ví dụ, jQuery hay Bootstrap. Nếu người dùng truy cập đến trang web có sử dụng thư viện jQuery của bạn, mà máy tính họ đã truy cập vào một trang web cũng sử dụng thư viện đó với nhà cung cấp CDN như bạn, trình duyệt của họ sẽ không cần gửi request đi đâu cả mà sẽ load lại từ cache ra. Qua đó, tốc độ được cải thiện một cách không ngờ.

Tăng số lượng tập tin được load tại một thời điểm

Có một điều thú vị về các trình duyệt, đó là các trình duyệt sẽ giới hạn số lượng request đến một domain tại một thời điểm nhất định, con số này thường là 4. Vậy nếu bạn có request số 5 đến cùng một domain, trình duyệt sẽ đợi cho ít nhất 1 trong 4 request đang chạy được hoàn thành rồi mới đến request số 5. Do vậy, bằng việc phân tán request sang một server khác (CDN), bạn không những giảm số lượng request lên server mình, mà còn cho trình duyệt có cơ hội thực hiện request khác cùng thời điểm.

Các phiên bản đều được quản lý

Quản lý phiên bản (version control) là chức năng có sẵn của các dịch vụ CDN. Với vai trò nhà phát triển web, bạn dễ dàng xác định tập tin nào với phiên bản nào cần gửi cho người dùng mà không lo mất mát hay bị lỗi.

Cơ sở hạ tầng cực kỳ tốt

Tin hay không tùy bạn, dù bạn có thuê được một dịch vụ lưu trữ tốt đến mấy, tôi vẫn không chắc nó tốt hơn những gì mà người khổng lồ Google, Amazon, Microsoft mang lại. Do vậy, bạn có thể hoàn toàn tin tưởng rằng tập tin sẽ luôn được truyền đến đích khi sử dụng dịch vụ do các CDN hàng đầu cung cấp.

Phân tích người dùng (User Analytics)

Một điều tuyệt vời nữa là các nhà cung cấp CDN còn bổ sung thêm chức năng phân tích lưu lượng người dùng. Thuê một dịch vụ CDN, đồng nghĩa với việc bạn có một dịch vụ phân tích người dùng, để biết ai, từ đâu, thời gian nào truy cập vào dịch vụ của bạn. Qua đó có những biện pháp thích hợp để cải thiện chức năng hệ thống.

5. Lưu ý không nên sử dụng CDN cho các trường hợp sau

  • Không phải lúc nào CDN cũng nhanh hơn, nếu các tập tin đó chỉ được truy cập thông qua trang web của bạn (khả năng được cache sẽ thấp), hay khi bạn có một server đủ nhanh để tốc độ có thể nhanh hơn server của CDN. (Ví dụ nếu người dùng truy cập từ Việt Nam và server bạn đặt ở Việt Nam thì có thể sẽ nhanh hơn CDN, bởi theo tôi thấy thì CDN đặt server gần nhất là tại Singapore, không phải Việt Nam).
  • Không phải lúc nào CDN cũng là lựa chọn tốt, nếu bạn chỉ muốn hướng đối tượng người dùng đến một quốc gia nhất định. Hay nói cách khác là khi bạn không có ý định toàn cầu hóa trang web của mình, thì việc sử dụng CDN là thừa thãi và không cần thiết. Thử tưởng tượng bạn có một trang web cho người Việt Nam, mà lại đặt một video quảng cáo ở server tận Los Angeles thì…chả biết để làm gì (nếu dịch vụ của bạn cũng hướng đến Việt kiều thì lại là hợp lý).
  • Không phải công ty nào cũng đủ khả năng tự xây dựng một hệ thống CDN cho riêng mình, bởi nó quá phức tạp, đòi hỏi sự tham dự của nhiều bên liên quan ở nhiều quốc gia. Do vậy, việc sử dụng các dịch vụ cung cấp CDN có sẵn là lựa chọn thích hợp. Tuy nhiên, bạn nên có lựa chọn đúng đắn, ngoài giá cả thì các vấn đề về bảo mật cũng rất quan trọng. Nguy hiểm có thể rình rập khi tập tin Javascript của bạn bị chỉnh sửa, cài mã độc khi về đến phía người dùng, gây nguy hiểm cho cả người dùng và website của bạn. Do vậy, tôi khuyến cáo đã không dùng thì thôi, đã dùng thì nên chọn một nhà cung cấp đáng tin cậy.
  • Điều cuối cùng, khi bạn deploy server với các tập tin tĩnh (Javascript, CSS, Video, Ảnh,…) cần đẩy lên server của CDN, điều đó có nghĩa là công việc deploy của bạn thêm một mức phức tạp và một mức rủi ro, do vậy, cần đảm bảo cơ chế deploy của mình là tốt nhất có thể để tránh gây ra các lỗi không đáng có.

Lời kết

Dịch vụ CDN là một bước tiến đột phá giúp cho hàng triệu người sở hữu website có thể ở một nơi rất xa truyền tải dữ liệu một cách nhanh chóng và mượt mà cho hàng tỷ người dùng ở khắp nơi trên thế giới. Các lợi ích nó mang lại tuy nhiều nhưng hạn chế cũng có. Chúc các bạn có thêm kiến thức để lựa chọn cho mình một dịch vụ CDN phù hợp.