Chào bạn, Thiện Mỹ đây. Có bao giờ bạn thắc mắc vì sao một website của công ty nước ngoài lại mở nhanh như trang trong nước không. Bí mật thường nằm ở một thứ gọi là CDN. Tập này mình giải thích nó.
Trả lời ngắn: CDN là mạng phân phối nội dung, gồm nhiều máy chủ đặt ở nhiều thành phố, nhiều quốc gia, lưu sẵn bản sao ảnh, video, tệp của website. Khi bạn mở trang, nội dung được gửi từ máy chủ gần bạn nhất chứ không phải từ máy chủ gốc ở xa, nên trang tải nhanh hơn, còn máy chủ gốc thì đỡ phải gánh hết mọi lượt truy cập.
Hình ảnh kho hàng gần nhà
Mình hay ví CDN với chuyện giao hàng. Nếu mọi đơn hàng đều phải gửi từ một kho trung tâm ở xa, hàng tới chậm và kho trung tâm quá tải.
Các công ty giao vận giải quyết bằng cách đặt kho nhỏ ở nhiều khu vực, để sẵn hàng hay bán. Đơn tới, hàng xuất từ kho gần nhất.
CDN làm đúng như vậy với dữ liệu. Ảnh, video, tệp giao diện được để sẵn ở nhiều điểm, người dùng lấy từ điểm gần nhất.
Khoảng cách địa lý ảnh hưởng tới tốc độ vì dữ liệu phải đi qua nhiều chặng mạng. Bớt chặng là bớt thời gian chờ.
Với một trang có nhiều ảnh, phần lớn thời gian tải là thời gian tải ảnh. CDN giúp đúng chỗ đó.
CDN hoạt động thế nào
Khi một người ở Hà Nội lần đầu mở trang, máy chủ CDN gần Hà Nội chưa có ảnh. Nó lấy ảnh từ máy chủ gốc, gửi cho người dùng, đồng thời giữ lại một bản.
Người thứ hai ở Hà Nội mở cùng trang, máy chủ CDN đã có ảnh sẵn, gửi ngay không cần hỏi máy chủ gốc.
Mỗi bản sao được giữ trong một thời gian theo cấu hình. Hết thời gian, CDN hỏi lại máy chủ gốc xem có bản mới không.
Ngoài ảnh và tệp tĩnh, nhiều CDN còn có thể lưu cả trang HTML nếu trang đó giống nhau cho mọi người xem.
Trang cá nhân hoá theo từng người như giỏ hàng, tài khoản thì không nên lưu chung, vì người này có thể thấy dữ liệu của người khác.
Cấu hình đúng phần nào được lưu, phần nào không, là việc quan trọng nhất khi dùng CDN.
Không chỉ nhanh mà còn chắn đỡ
Vì đứng trước máy chủ gốc, CDN còn đóng vai lá chắn. Người dùng và kẻ xấu đều gặp CDN trước.
Khi website bị tấn công bằng một lượng lớn truy cập giả nhằm làm sập, CDN với mạng lưới rộng có thể hấp thụ và lọc bớt.
Nhiều CDN có tường lửa ứng dụng web, chặn các kiểu tấn công phổ biến vào website như dò mật khẩu, chèn mã độc.
CDN cũng thường cung cấp chứng chỉ bảo mật cho kết nối mã hoá giữa người dùng và CDN, giúp trang có ổ khoá trên trình duyệt.
Nhưng cần nhớ, kết nối giữa CDN và máy chủ gốc cũng phải được mã hoá và cấu hình đúng. Ổ khoá trên trình duyệt chỉ nói về một nửa đường đi.
Ẩn được địa chỉ máy chủ gốc sau CDN cũng giúp giảm bớt việc kẻ xấu tấn công thẳng vào máy chủ.
Lỗi hay gặp: sửa rồi mà vẫn thấy cái cũ
Lỗi quen thuộc nhất khi dùng CDN: bạn đổi ảnh đại diện, sửa giao diện, nhưng khách vẫn thấy bản cũ.
Nguyên nhân là CDN đang giữ bản sao cũ và chưa hết thời gian lưu. Nó không biết bạn vừa sửa.
Cách xử lý là xoá bộ nhớ đệm trên CDN cho những tệp vừa đổi, hoặc đổi tên tệp mỗi khi cập nhật để CDN coi đó là tệp mới.
Khi chia sẻ bài lên mạng xã hội, ảnh xem trước cũng có thể bị lưu ở phía mạng xã hội. Xoá bộ nhớ đệm CDN rồi mà ảnh xem trước vẫn cũ thì cần làm mới ở công cụ của mạng xã hội.
Có một thứ tự nên nhớ: sửa và triển khai xong phía máy chủ trước, rồi mới xoá bộ nhớ đệm. Xoá trước thì lượt truy cập kế tiếp có thể lưu lại đúng bản cũ.
Người làm web lâu năm đều có một câu cửa miệng khi khách báo không thấy thay đổi: đã xoá bộ nhớ đệm chưa.
Khi nào doanh nghiệp nhỏ cần CDN
Nếu website có nhiều ảnh, có khách ở nhiều vùng, hay từng bị truy cập đột biến làm chậm, CDN gần như luôn có ích.
Nhiều nhà cung cấp CDN có gói miễn phí hoặc chi phí thấp phù hợp website nhỏ. Cài đặt phổ biến là chuyển phần quản lý DNS sang nhà cung cấp CDN.
Nếu website chỉ phục vụ khách quanh một khu vực và máy chủ đặt ngay trong nước, lợi ích tốc độ có thể không lớn, nhưng lợi ích bảo vệ vẫn đáng cân nhắc.
Trước khi bật, ghi lại cấu hình DNS hiện tại, kiểm tra email vẫn chạy sau khi chuyển, và thử kỹ các trang cần đăng nhập.
Nhờ người làm kỹ thuật hiểu CDN cấu hình phần nào lưu, phần nào không, để tránh lỗi lộ dữ liệu cá nhân giữa các khách.
Một góc nhìn rộng hơn
CDN là một phần lớn của internet hiện nay. Nhiều website bạn mở hằng ngày đi qua CDN mà bạn không hay biết.
Điều đó cũng có mặt trái: khi một nhà cung cấp CDN lớn gặp sự cố, rất nhiều website cùng lúc không truy cập được.
Internet càng tập trung vào một số ít nhà cung cấp hạ tầng, rủi ro dây chuyền càng lớn. Đây là bài toán mà giới kỹ thuật vẫn đang bàn.
Với doanh nghiệp, đó là lý do nên biết website của mình phụ thuộc vào những nhà cung cấp nào, và có phương án nếu một nhà cung cấp gặp sự cố.
Câu hỏi cho bạn tập này: website của bạn có đang đi qua CDN không, và lần gần nhất bạn xoá bộ nhớ đệm là khi nào?
Câu hỏi thường gặp
CDN là gì?
CDN là mạng phân phối nội dung gồm nhiều máy chủ đặt ở nhiều nơi, lưu sẵn bản sao ảnh, video, tệp của website để gửi cho người dùng từ điểm gần nhất.
CDN giúp website nhanh hơn như thế nào?
Nội dung được gửi từ máy chủ gần người dùng thay vì từ máy chủ gốc ở xa, bớt chặng mạng phải đi qua, đồng thời giảm tải cho máy chủ gốc.
Vì sao sửa website rồi mà khách vẫn thấy bản cũ?
Vì CDN còn giữ bản sao cũ trong bộ nhớ đệm. Cần xoá bộ nhớ đệm cho các tệp vừa đổi, sau khi đã triển khai xong phía máy chủ.
CDN có giúp chống tấn công không?
Có. CDN đứng trước máy chủ gốc nên có thể hấp thụ, lọc truy cập giả và nhiều nhà cung cấp có tường lửa ứng dụng web chặn các kiểu tấn công phổ biến.
Website nhỏ có cần CDN không?
Nếu có nhiều ảnh, khách ở nhiều vùng hoặc từng bị truy cập đột biến thì nên dùng. Nhiều nhà cung cấp có gói miễn phí hoặc chi phí thấp phù hợp website nhỏ.