Group
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, 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 dùng, 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 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 chỉ có xấp xỉ 2 giây mà thôi.
Ở 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à 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.
Đ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. 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ó.
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 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.
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.
Lý tưởng nhất là chuyển người dùng đến PoP 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ó một số 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.
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ể.
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 đó. 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ảm đáng kể thời gian tải trang tính trên tổng thể.
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:
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.
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.
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.
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 xâm nhập từ bên thứ ba.
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.
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.
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ể.
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ụ 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.
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 bài viết sau:
(***), (****) 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 một số trường hợp không quá hiếm hoi 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.
Phần này mình sẽ trả lời một số thắc mắc thường gặp.
Dưới đây là một số công ty nổi tiếng và uy tín:
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ư:
Ngày xưa tôi thấy chỉ có Cloudflare và Jetpack 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 (có thể họ muốn miễn phí lúc ban đầu để 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ừ 5 – 10 đô / tháng (website có từ 50 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.
Ở thời điểm hiện tại (2020) 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.
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.
Đú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 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.
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:
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.
– – –