Web Development

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

Luồng hoạt động khi sử dụng CDN

🔑 Định nghĩa – CDN là viết tắt của Content Delivery Network – CDN là một mạng lưới các máy chủ phân tán được đặt tại nhiều địa điểm khác nhau trên về mặt địa lý, được sử dụng để lưu trữ các file tĩnh như hình ảnh, video, CSS, JavaScript, … – Mục đích chính của CDN là cải thiện hiệu suất truy cập các file tĩnh, bằng cách giảm thiểu khoảng cách giữa server và client. ⭐️ Các khái niệm...

Continue reading...

Một số lưu ý khi sử dụng Cache

Nhiều bạn thấy tác dụng của cache hay quá, nhanh quá, thế là nảy ra suy nghĩ: “Cứ muốn tăng hiệu năng là sẽ lưu dữ liệu vào cache” ❌ Đây là một suy nghĩ sai lầm. Dưới đây là một số lưu ý khi sử dụng Cache: 🔶 1. Sử dụng cache khi: dữ liệu của một hoặc nhiều bảng kết hợp với nhau ĐƯỢC LẤY RA THƯỜNG XUYÊN, nhưng ÍT BỊ SỬA ĐỔI. 🔶 2. Để tăng tốc độ truy xuất dữ...

Continue reading...

Giới thiệu cơ bản về Cache

🔑 Định nghĩa Cache là một bộ nhớ tạm thời tốc độ cao được sử dụng để lưu trữ dữ liệu mà hệ thống có khả năng sẽ sử dụng lại trong tương lai gần. Mục đích chính của cache là cải thiện hiệu suất hệ thống bằng cách giảm thời gian truy cập dữ liệu và giảm tải cho các nguồn dữ liệu chính (ví dụ: main memory, ổ cứng). 😍 Ví dụ Ví dụ như bạn có một...

Continue reading...