Categories CDN

CDN là gì? Tại sao bạn nên sử dụng nó để tăng tốc website cũng như đảm bảo uptime cao nhất có thể

CDN là gì

Khi tư vấn tối ưu hóa tốc độ website, khả năng cao bạn sẽ nhận được đề nghị sử dụng CDN, vì nó thực sự là một trong những cách cải thiện tốc độ trang tốt nhất. Khi ấy chắc chắn bạn sẽ tự hỏi CDN là gì vậy?

Content Delivery Network (Mạng phân phối nội dung), viết tắt là CDN, là một mạng gồm nhiều máy chủ được đặt ở các vị trí chiến lược trên toàn thế giới với mục đích phân phối nội dung số cho người dùng cuối nhanh nhất có thể.

Khi người dùng thực hiện một yêu cầu tới máy chủ CDN gần nhất, điều đó giúp giảm đáng kể độ trễ mạng (latency). CDN cho phép tất cả người truy cập, không thành vấn đề là vị trí địa lý của họ ở đâu, có được tốc độ tải nội dung nhanh hơn và điều đó chắc chắn sẽ cải thiện trải nghiệm người dùng.

Theo BuiltWith, 66% trong số 10 ngàn trang web hàng đầu thế giới sử dụng CDN (tháng mười một năm 2018). Tỷ lệ này tiếp tục gia tăng trong suốt 10 năm qua do có sự tăng trưởng tiêu thụ sản phẩm nội dung số, và yêu cầu của người dùng cũng cao hơn. Sử dụng CDN là một trong những cách hiệu quả nhất để phân phối nội dung với hiệu suất/tốc độ (performance) và độ tin cậy (reliability) cao trên quy mô toàn cầu.

Trong thực tế, theo một nghiên cứu được thực hiện bởi Đại học Nebraska thì thời gian chờ đợi chấp nhận được để có thông tin từ website chỉ có xấp xỉ 2 giây mà thôi.


#1. Cấu trúc CDN – Tìm hiểu cơ sở hạ tầng đằng sau CDN

website có CDN
Website khi có CDN, ảnh từ CloudFare

Ở mức độ chuyên nghiệp, cấu trúc CDN được tạo ra nhờ hai yếu tố chính, đó là điểm hiện diện (PoP/Point of Presence) và các máy chủ biên (edge servers). Ngoài ra còn có rất nhiều công việc khác để việc định tuyến lưu lượng truy cập được chính xác, hạn chế các cuộc tấn công, và duy trì thời gian uptime liên tục.

1. Điểm hiện diện

Điểm hiện diện tên tiếng Anh là Point of Presence, viết tắt là PoP, là một điểm địa lý riêng lẻ nơi một nhóm máy chủ biên CDN nằm ở đấy (bạn sẽ biết máy chủ biên là gì ngay bên dưới).

Nhiều PoP kết hợp lại tạo thành toàn bộ hệ thống. Tổng số lượng PoP tạo nên CDN cũng như từng vị trí có ảnh hưởng lớn đến phạm vi bao phủ toàn cầu của nó.

2. Máy chủ biên

Một máy chủ biên, là một máy chủ nằm giữa hai mạng, được đặt tại mỗi PoP. Các máy chủ biên là một proxy cache đơn giản hoạt động tương tự như bộ nhớ đệm của trình duyệt web. Chúng không tạo nội dung cho website, thay vì thế, chúng giữ bản sao nội dung trong cache. Tổng số lượng máy chủ biên tại từng vị trí PoP còn tùy thuộc vào cơ sở hạ tầng của từng nhà cung cấp dịch vụ CDN.

Sự phân tán của PoP thay đổi từ nhà cung cấp CDN này đến nhà cung cấp CDN khác. Một số nhà cung cấp thích bao phủ vị trí nhiều hơn bằng cách gia tăng các máy chủ công suất nhỏ, trong khi những dịch vụ CDN khác lại hướng đến việc duy trì ít PoP hơn nhưng lại là các PoP có hiệu suất cao.

Một trong các khía cạnh quan trọng cần đánh giá khi phân tích kiến trúc CDN là phải biết được PoP của nó nằm ở đâu. Số lượng người truy cập website chủ yếu đến từ đâu có thể là yếu tố quyết định lựa chọn dịch vụ nào.

Ví dụ như bạn có người dùng chủ yếu từ Việt Nam thì dịch vụ CDN bạn nên dùng cũng cần phải có máy chủ ở Việt Nam (hoặc ít nhất là gần Việt Nam), nếu không tốc độ cải thiện sẽ không tốt nhất trong khả năng.


#2. CDN hoạt động như thế nào – biết được tầm quan trọng của việc có được nội dung gần người dùng hơn

Như đã được nói ở trên, CDN là mạng lưới lớn được tạo thành từ nhiều máy chủ ở các vị trí địa lý khác nhau. Các PoP được đặt gần khu vực đông đúc, trong các quốc gia trên toàn thế giới.

Với các quốc gia có diện tích rộng lớn, thì ngay trong nó cũng có thể có nhiều PoP khác nhau (Mỹ, Trung Quốc có nhiều máy chủ CDN đặt khắp nơi trong lãnh thổ, lý do là vì diện tích của họ rất rộng lớn. Việt Nam chúng ta có diện tích nhỏ hơn nhiều nhưng một số dịch vụ CDN cũng đặt vị trí tại 3 nơi trọng yếu là Hà Nội, Đà Nẵng và Sài Gòn).

Lý tưởng nhất là chuyển người dùng đến PoP nào mà gần họ nhất. Khi người dùng yêu cầu nội dung từ trang sử dụng CDN, yêu cầu được định tuyến đến PoP gần nhất, nơi máy chủ web biên gửi dữ liệu được yêu cầu. Có vài cách khác nhau để yêu cầu có thể được định tuyến tới PoP cụ thể, một trong số đó là IP Anycast.


#3. Khi không có CDN

Khi CDN không được áp dụng trên web, tất cả nội dung sẽ được phân phối qua máy chủ gốc duy nhất, cho dù vị trí địa lý của người dùng cuối có ở đâu đi chăng nữa.

Điều này có nghĩa là nếu máy chủ gốc ở Hoa Kỳ, thì người dùng ở Việt Nam, Nhật, hay Hàn đều lấy nội dung từ cùng máy chủ gốc duy nhất xa xôi đó.

Khoảng cách địa lý giữa vị trí gửi yêu cầu và vị trí máy chủ gốc phản hồi có ảnh hưởng đáng kể đến tốc độ tải tổng thể.


#4. Khi bạn dùng CDN

Khi CDN được sử dụng, tất cả nội dung sẽ được phân phối bởi các PoP gần nhất với vị trí địa lý của yêu cầu (từ người dùng cuối).

Điều đó có nghĩa là, cho dù máy chủ gốc ở Hoa Kỳ, nhưng người dùng cuối ở Việt Nam, Nhật hay Hàn sẽ lấy nội dung từ các máy chủ biên CDN nằm tại chính quốc gia đó (hoặc các PoP ở gần đó nhất).

Khoảng cách ngắn hơn giữa vị trí địa lý gửi yêu cầu và máy chủ biên CDN gửi phản hồi giúp giảm đáng kể thời gian tải trang tính trên tổng thể.


#5. Các kiểu nội dung

Khi phân tích các định dạng nội dung chiếm nhiều băng thông nhất mà người dùng toàn cầu sử dụng, người ta phát hiện thấy ba kiểu đứng đầu là ảnh, video và âm thanh (audio).

Dầu vậy có nhiều kiểu nội dung khác mà CDN có thể phân phối được. Số lượng kiểu nội dung và định dạng mà nhà cung cấp CDN có thể phục vụ còn tùy thuộc vào chính dịch vụ đó (thay đổi từ nhà cung cấp này sang nhà cung cấp khác) tuy vậy vẫn có các định dạng chung được hỗ trợ phổ biến:

  • Ảnh: PNG, JPG, SVG, GIF, và TIF.
  • Video: FLV, HSL, MP4, MOV, và WMV.
  • Audio: MP3, WAV, AIFF, AAC, và PCM.
  • Khác: CSS, JS, JSON, HTML, PDF, ZIP, TTF, OTF, và WOFF (font cho web).

#6. Tại sao bạn cần CDN – Biết về lợi ích khi sử dụng CDN

1. Cải thiện hiệu suất/tốc độ

Hiệu suất/tốc độ được cải thiện là một trong các lợi ích quan trọng nhất khi triển khai CDN. Nội dung được cache trong các PoP trên toàn cầu đem nội dung đến gần người dùng hơn. Khoảng cách ngắn hơn không chỉ làm giảm độ trễ mà còn giảm thiểu các gói dữ liệu bị mất.

Nếu người dùng của bạn đến từ khắp nơi trên thế giới, việc sử dụng CDN là rất cần thiết. Khi thực hiện các bài kiểm tra khác nhau ở nhiều vùng địa lý, chúng tôi nhận thấy CDN làm giảm độ trễ website đi 73% trên trung bình so với website không có CDN.

2. Tăng độ tin cậy

Với CDN, các yêu cầu sẽ luôn luôn được định tuyến tới vị trí địa lý gần nhất. Nếu một máy chủ biên không khả dụng, các yêu cầu sẽ được tự động chuyển qua máy chủ biên có khả năng đáp ứng ngay bên cạnh.

Điều này tạo ra khả năng dự phòng tự động giúp đảm bảo rằng nội dung luôn sẵn có. Nếu không có kiểu dự phòng này, người truy cập có thể được đón chào bởi một trang lỗi, cái sẽ ảnh hưởng rất lớn đến khả năng họ sẽ quay trở lại.

3. Tăng quy mô dễ dàng

Giảm tải lưu lượng thông qua sử dụng CDN sẽ giúp bạn dễ dàng quản trị các lưu lượng truy cập tăng đột biến hơn và việc tăng hay giảm chỉ cần tốn lượng thời gian ngắn triển khai.

Kết quả là máy chủ gốc được giảm tải và giúp tối thiểu hóa hiện tượng downtime (gián đoạn truy cập). Website thông thường có đến xấp xỉ 80% là nội dung tĩnh, do vậy mà có một phần đáng kể các phần trên web được phân phối nhanh hơn và hiệu quả hơn thông qua CDN.

4. Gia tăng bảo mật

Khi sử dụng CDN, phần lớn lưu lượng truy cập không còn được phục vụ bởi máy chủ gốc nữa, mà là máy chủ biên CDN, điều đó khiến cho các cuộc tấn công DDoS tự động được giảm tải.

Chứng chỉ TLS, thường được gọi là chứng chỉ SSL, có thể được triển khai trên hầu hết các nền tảng CDN đảm bảo tất cả lưu lượng truy cập đã mã hóa bảo mật. Hơn nữa, nhiều dịch vụ CDN có các tính năng bảo mật bổ sung như chống hotlink, bảo mật bằng tokens, và nhiều thứ khác để chống lại vấn đề xâm nhập từ bên thứ ba.

5. Giá rẻ

Khi dùng CDN, bạn không cần phải quản lý hạ tầng, vì điều đó đã được xử lý bởi nhà cung cấp dịch vụ CDN rồi. Điều đó loại bỏ bất kỳ vốn đầu tư trả trước nào, cũng như chi phí duy trì và cho phép bạn có thời gian để ưu tiên những công việc khác.

Chi phí băng thông của máy chủ gốc giảm xuống bởi vì nội dung đã được phân phối bởi máy chủ biên CDN. Do vậy, không có nhiều nhu cầu cập nhật lên hosting khỏe hơn vì thực tế là máy chủ gốc đã được giảm tải rất nhiều thông qua máy chủ biên CDN cache nội dung.

6. Tăng chuyển đổi

Có rất nhiều bằng chứng cho thấy việc tăng tốc độ website, game, hay bất kỳ kiểu nội dung số nào cũng sẽ làm tăng tỷ lệ chuyển đổi. Điều này xảy ra chủ yếu bởi vì trải nghiệm người dùng được cải thiện.

Theo như LoadStorm, chỉ một giây tăng thêm trong việc tải trang trung bình sẽ dẫn đến giảm 7% tỷ lệ chuyển đổi. Sử dụng CDN có thể cải thiện tỷ lệ chuyển đổi để giúp bạn có được nhiều đơn hàng hơn.

7. Giảm nguy cơ rời bỏ trang

Có nhiều yếu tố góp phần vào tỷ lệ rời bỏ trang cao (bounce rate), chẳng hạn như chuyển hướng, giao diện, và tính khả dụng. Một trong những yếu tố quan trọng nhất là tổng thời gian nó cần để tải nội dung về. Theo Web Performance Today, 57% khách hàng trực tuyến sẽ rời bỏ một website tốn hơn 3 giây để tải về.

Sử dụng CDN có thể làm tăng độ gắn kết của người dùng bằng cách giảm nguy cơ rời bỏ trang. Điều này về sau lại dẫn đến khả năng cải thiện thứ hạng trên máy tìm kiếm, gia tăng đơn hàng, và cải thiện trải nghiệm người dùng tổng thể.

Phản biện: tuy vậy CDN cũng có nhược điểm, nhất khi bạn triển khai nó theo kiểu phong trào, link vừa dẫn cung cấp thông tin chi tiết về vấn đề đó.


#7. Mức độ khó khăn trong việc thiết lập

Bất kỳ dịch vụ CDN nào cũng sẽ yêu cầu thiết lập mà trong đó có một số bước nhất định có thể làm bạn cảm thấy bối rối, bực bội vì không quen thuộc. Nó chẳng phải là cái gì đó chỉ mất có 5 phút là làm xong đâu (dù nơi bán dịch vụ thường nói như vậy!).

Bạn sẽ cần bỏ ít nhất là vài tiếng đồng hồ để thực hiện thiết lập và bắt đầu khởi chạy. Bạn cũng sẽ phải bỏ thời gian học thuật ngữ mới, học cách kiểm tra để đảm bảo mọi thứ đang được làm chính xác (CDN nếu không làm cho đúng thì thà không làm còn hơn, vì sai sót trong việc áp dụng CDN để lại rất nhiều hậu quả tai hại).


#8. So sánh sự khác nhau giữa hosting thông thường, host tốt, và host tốt kết hợp CDN

  Host thông thường Host tốt Host tốt + CDN
Tăng tốc độ website Trung bình Tốt Rất tốt
Khả năng chịu tải cao Trung bình Tốt Rất tốt
Khả năng chịu tải tăng đột biến Kém Khá Rất tốt***
Chi phí Trung bình Cao Cao hơn*
Khả năng mở rộng dịch vụ nhanh Trung bình Trung bình Dễ dàng****
Bảo mật Trung bình Tốt Tốt
Uptime Trung bình Tốt hơn Tốt
Chống DDoS Hầu như không Khá Tốt**
Yêu cầu chuyên môn của người quản trị web Trung bình Trung bình Khá

Điểm yếu duy nhất của việc kết hợp host tốt + CDN là nó yêu cầu người quản trị web cần phải có năng lực kỹ thuật tốt hơn mới triển khai dịch vụ hoàn chỉnh được, hoặc bạn sẽ phải đi thuê bên ngoài, nhưng dù vậy bạn vẫn phải có kiến thức căn bản, để tránh trường hợp phụ thuộc hoàn toàn vào người khác.

(*) Về vấn đề chi phí cao hơn, trong phần lớn trường hợp chi phí cần phải bỏ ra thấp hơn nhiều lợi ích có thể đạt được.

(**) Tuy rằng CDN chống được DDoS (tấn công từ chối dịch vụ) phần nào, nhưng nó có thể dẫn đến gia tăng chi phí bất thường, bạn có thể hạn chế điều này bằng một số giới hạn để chặn ngưỡng chi tiêu quá mức, tham khảo trong link này.

(***), (****) Trong hầu hết các tiêu chí host tốt đều tiệm cận năng lực của sự kết hợp host tốt + CDN; Tuy nhiên ở hai tiêu chí liên quan đến lưu lượng truy cập tăng đột biến, và mở rộng dịch vụ nhanh chóng thì ngay kể cả với host tốt, trong nhiều trường hợp vẫn kém hơn sự kết hợp với CDN khá nhiều. Đặc điểm này là vì ưu thế vượt trội của tính đàn hồi mà dịch vụ CDN mang lại.


#9. Một số câu hỏi

Phần này tôi sẽ trả lời một số thắc mắc thường gặp.

1. Một vài công ty CDN chất lượng?

Dưới đây là một số công ty nổi tiếng và uy tín:

Xem thêm các dịch vụ CDN chất lượng dành cho WordPress nói riêng và website nói chung.

2. Sự khác biệt cơ bản giữa các dịch vụ CDN là gì?

Các công ty CDN về cơ bản khá giống nhau, tuy nhiên vẫn có sự khác biệt thể hiện ở một số yếu tố như:

  • Dịch vụ trọng tâm: đa phần nhà cung cấp CDN thuộc nhóm CDN truyền thống, nghĩa là họ tập trung vào phân tán nội dung tĩnh, tối ưu hóa số lượng PoP, vị trí và hiệu năng. Một số nhà cung cấp khác mở rộng hơn, chẳng hạn như Cloudflare tập trung vào tính tiện lợi khi triển khai CDN + bảo mật. Một số nữa thì đi theo hướng tập trung vào hình ảnh, vì băng thông nội dung tĩnh chủ yếu từ cái này mà ra, trong đó có thể kể đến việc triển khai định dạng ảnh tiết kiệm dung lượng WebP, tối ưu hóa kích cỡ ảnh trên nhiều thiết bị, lazy load, ví dụ các công ty đi theo hướng này là imagekit.io, cloudinary, imgixoptimole.com. Cuối 2019, LiteSpeed đưa ra dịch vụ CDN QUIC.cloud có khả năng cache trang HTML ở máy chủ biên của họ, đây là điều rất ít dịch vụ làm được và giúp cải thiện tốc độ trang đáng kể.
  • Dịch vụ bổ sung: nhiều dịch vụ CDN kèm thêm các tính năng đáng giá cho ảnh như thay đổi định dạng, kích cỡ, các hiệu ứng như bo tròn, làm mờ, vân vân.
  • Giá cả: có thể chênh nhau đến vài lần tính theo 1GB dữ liệu, nếu lượng dữ liệu của bạn lớn, bạn nên tìm các dịch vụ CDN có giá dễ chịu hơn. Hiện tại BunnyCDNStackPath đang có giá thành rất tốt so với các dịch vụ có chất lượng tương đương khác.
  • Kiểu thanh toán: nhiều dịch vụ CDN yêu cầu trả trước với lượng tiền tối thiểu nào đó, dù rằng họ không quy định bạn phải tiêu tối thiểu bao nhiêu tiền một tháng, nghĩa là bạn tiêu hết số tiền nạp vào thì mới thôi (giống kiểu thẻ cào điện thoại). Một số dịch vụ khác đi theo hướng thanh toán cố định theo tháng và thường đi kèm lưu lượng tối đa được phép dùng.
  • Mức độ dễ dàng cài đặt: nói chung CDN sẽ làm bạn tốn thời gian học hỏi, nhưng ngay cả thế thì các dịch vụ CDN cũng khác nhau về mức độ thiết lập, có dịch vụ rất dễ, có cái thì khó hơn khá nhiều.
  • Số lượng PoP và vị trí của nó: các dịch vụ CDN quốc tế hiện nay có độ phủ rất tốt, với số lượng lớn các PoP, các vị trí gần Việt Nam cũng nhiều (Sing, HongKong, Nhật, Đài Loan), tuy nhiên PoP ở ngay tại Việt Nam thì không có nhiều dịch vụ có (trừ dịch vụ trong nước).

3. Có dịch vụ CDN miễn phí nào không?

Ngày xưa tôi thấy chỉ có CloudflareJetpack của WordPress là có dịch vụ CDN miễn phí. Hiện tại thì số lượng đã tăng tiến lên khá nhiều, chẳng hạn như Imagekit.io hay một vài dịch vụ mới khác (họ miễn phí gói nhỏ để tạo đà về mặt số lượng người dùng và độ nổi tiếng).

Tất cả các sản phẩm trên đều không phải là dịch vụ miễn phí hoàn toàn (freemium), nó đều hy vọng một ngày nào đó bạn cập nhật lên phiên bản có phí. Hay nói cách khác, nếu bạn tập tành hoặc website không quan trọng thì có thể dùng CDN miễn phí, còn nếu nghiêm túc nên dùng CDN có phí, trong phần lớn trường hợp nó chỉ làm bạn tốn từ 2 – 10 đô / tháng (website có từ 20 ngàn đến 100 ngàn view một tháng).

Bonus: nếu bạn chỉ cần CDN miễn phí cho ảnh, và đang dùng WordPress, hiện có plugin rất tốt có tên Flying Images. Không chỉ CDN, plugin này còn giúp bạn nén ảnh miễn phí và lazy load ảnh theo cách mới để hạn chế ảnh hưởng tiêu cực đến trải nghiệm người dùng.

4. CDN giá rẻ?

Ở thời điểm hiện tại (2019) tôi thấy có dịch vụ CDN giá rẻ khá ấn tượng là BunnyCDN, không rõ họ có duy trì được lâu dài chất lượng dịch vụ tương đối tốt kèm với giá khá mềm đó không.

5. Tôi có cần CDN không nếu khách hàng của tôi chỉ thuộc một quốc gia cụ thể?

Câu trả lời nhanh là có, đặc biệt là với các quốc gia rộng lớn như Hoa Kỳ, Trung Quốc, hay Nga.

Nhưng với đất nước có diện tích nhỏ hơn nhiều như Việt Nam thì có cần dịch vụ CDN không?

Câu trả lời là còn tùy, nhưng nếu bạn muốn nâng tầm chất lượng dịch vụ lên cao, thì câu trả lời chắc chắn vẫn là có. Nhiều trang tin lớn trong nước vẫn sử dụng CDN để đảm bảo tốc độ truy cập ở cả ba miền đất nước là cao nhất có thể. Ví dụ vnexpress.net, báo điện tử 24h,…đều dùng CDN. Các dịch vụ thương mại điện lớn như tiki hay shopee cũng vậy.

Tiki sử dụng CDN

6. Việc thiết lập CDN làm tôi rối tung hỏa mù, bạn có thông tin nào hỗ trợ không?

Đúng là việc thiết lập CDN chuẩn đòi hỏi thời gian tìm hiểu và sẽ phiền toái nếu bạn không nhanh chóng học được nó (bạn không muốn website bị gián đoạn).

Tôi có viết riêng một bài về một số rắc rối khi lần đầu sử dụng CDN để các bạn tham khảo.

7. Dịch vụ CDN ở Việt Nam thì sao?

Tôi chưa dùng bao giờ, nhưng ở Việt Nam dạo gần đây có rất nhiều công ty triển khai dịch vụ CDN với giá ngày càng thân thiện với các trang web trung bình hơn, hứa hẹn thị trường sẽ sôi động hơn nhiều trong thời gian sắp tới.

Nhiều đơn vị lớn đã tham gia mảng CDN như VCCorp (với BizFly Cloud) hay Viettel IDC.

[Cập nhật]: Tôi đã dùng thử CDN của BizFly và thấy họ có chất lượng tốt. Anh chị em nếu cần có thể trải nghiệm.

8. Trường hợp nào bạn không nên dùng CDN?

Dùng CDN lúc nào cũng cho tốc độ tốt hơn, nhưng nếu bạn rơi vào các trường hợp sau thì có thể không cần CDN:

  • Bạn có máy chủ đủ mạnh trong nước: khi bạn có máy chủ mạnh ở các trung tâm lớn như Hà Nội hoặc Sài Gòn, tốc độ website truy cập trong nước đã đủ tốt rồi.
  • Bạn có máy chủ mạnh gần Việt Nam và lưu lượng truy cập web cao: nếu dùng CDN trong trường hợp này bạn sẽ tốn chi phí khá lớn, tất nhiên khi dùng CDN tốc độ sẽ tăng nhưng có thể việc tăng tốc này không đáng với chi phí bỏ ra (một trang tin 300 ngàn view/tháng có thể tốn đến 20$ / tháng).

Suy cho cùng vấn đề ở đây là chi phí bạn bỏ ra có đáng với lợi ích đem lại hay không. Một trang thương mại điện tử có máy chủ mạnh trong nước có thể vẫn nên dùng CDN, trong khi một trang blog thông thường có lẽ không cần thiết cho lắm.

– – –

Tham khảo:

  1. What is a CDN, của KeyCDN – công ty chuyên về dịch vụ CDN
  2. Content delivery networks, trang Varvy, tác giả: Patric Sexton

Comments are closed.

Back to Top