Web Server

Định nghĩa, ví dụ và lợi ích của Rate Limiter

Định nghĩa Rate Limiter thường được sử dụng để kiểm soát số lượng request được gửi bởi một client hoặc một service trong một khoảng thời gian nhất định. Ví dụ Ví dụ điển hình là chặn hành vi spam hoặc hạn chế crawler. Hoặc một số ví dụ khác như: Lợi ích của việc sử dụng API Rate Limiter: 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...

Continue reading...

High Availability và Service Level Agreement

✅ High Availability High Availability, viết tắt là HA, hay tiếng Việt là Tính khả dụng cao, là khả năng một hệ thống hoạt động liên tục trong một khoảng thời gian dài mong muốn. High Availability được đo bằng tỷ lệ phần trăm, với 100% có nghĩa là một service hoạt động liên tục mà không bị sập bao giờ. Hầu hết các service được kỳ vọng tỉ lệ HA sẽ nằm trong khoảng từ 99% đến 100%. 📜 Service Level Agreement Service Level Agreement (viết tắt...

Continue reading...

Thời gian thực thi của các computer operations điển hình

Năm 2010, trong bài chia sẻ về những bài học từ việc xây dựng Software Systems ở Google với sinh viên Đại học Stanford, Tiến sĩ Jeff Dean – Trưởng khoa của Google’s School of Infrastructure Wizardry, có vai trò quan trọng trong nhiều hệ thống ở Google như: TensorFlow, ProtocolBuffers, Bigtable, MapReduce, LevelDB, … – đã tiết lộ thời gian thực thi của các computer operations điển hình. Mặc dù các con số trong đó có thể đã không còn đúng với những máy tính mạnh...

Continue reading...

Database Scaling – Kỹ thuật thường xuyên được triển khai trong các dự án lớn

Khi số lượng người dùng ứng dụng của bạn ngày càng tăng lên, dữ liệu từ đó sẽ tăng trưởng ngày càng nhiều hơn mỗi ngày, database của dự án sẽ dần trở nên quá tải. Và đây chính là lúc chúng ta cần thực hiện scale database. Hai chiến lược chính để scale database thường được sử dụng đó là: Mở rộng theo chiều dọc (Vertical Scaling) và Mở rộng theo chiều ngang (Horizontal Scaling) Cùng mình tìm hiểu về chúng trong bài viết...

Continue reading...

Logging, Metrics, Monitoring, Notification, Automation – Những công cụ không thể thiếu trong các dự án lớn

Khi làm việc với một trang web nhỏ chạy trên một vài server, việc triển khai các giải pháp logging, metrics, monitoring, notification, automation đôi khi là thừa thãi, không cần thiết. Tuy nhiên, đối với những dự án lớn thì ngược lại, đây là những công cụ gần như KHÔNG THỂ THIẾU. Cùng mình tìm hiểu về chúng trong bài viết này nhé! 1. Logging 📝 Định nghĩa: Logging hay thuật ngữ anh em hay gọi là “ghi log”, là việc ghi...

Continue reading...

Tối ưu hóa hệ thống với Message Queue

Để scale hệ thống, các dự án thường sẽ tách rời các thành phần khác nhau bên trong nó. Khi ấy việc scale từng thành phần có thể diễn ra một cách độc lập. Và message queue là một chiến lược quan trọng để giải quyết vấn đề này, được sử dụng bởi nhiều hệ thống phân tán trong các dự án thực tế. Message queue cũng là một trong những ví dụ phổ biến về ứng dụng của Queue (Hàng đợi). Nhưng...

Continue reading...

Hiểu về Data Center: Cơ chế hoạt động, Xử lý khi có sự cố và các thách thức có thể gặp phải

🔑 Định nghĩa Hình minh họa dưới đây là một ví dụ với hệ thống sử dụng hai Trung tâm Dữ liệu, thuật ngữ tiếng Anh là Data Center (viết tắt là DC) Thông thường, người dùng sẽ được định tuyến theo vị trí địa lý (thuật ngữ tiếng Anh là GeoDNS-routed hoặc Geo-routed) đến Data Center gần với họ nhất. Lưu lượng truy cập phân chia theo tỉ lệ: GeoDNS là một dịch vụ DNS cho phép phân giải...

Continue reading...

Stateless Architecture

Trong kiến ​​trúc Stateless, các HTTP request từ client có thể được gửi đến bất kỳ Web Server nào trong cụm gồm nhiều Web Server, để lấy state data từ một Shared Storage. State data được lưu trữ trong Shared Storage, độc lập hoàn toàn với các Web Server. Đây chính là ví dụ về một hệ thống stateless đơn giản, và có thể dễ dàng mở rộng tầng Web Server theo chiều ngang (scale horizontally). Bởi vì state data (ví dụ như session...

Continue reading...

Stateful Architecture

Có thể các bạn đã từng nghe tới 2 khái niệm “Stateful” và “Stateless”. Stateful server và Stateless server có điểm khác biệt chính là: – Stateful server ghi nhớ dữ liệu (trạng thái) mà request từ client truyền đến, để sử dụng trong quá trình xử lý từ request này tới request tiếp theo. – Trong khi đó, Stateless server sẽ KHÔNG ghi nhớ dữ liệu (trạng thái) nào cả. Trong bài viết này, mình sẽ chia sẻ với các bạn về Stateful. Còn Stateless mình...

Continue reading...

Lưu ý khi sử dụng CDN

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....

Continue reading...