Giới thiệu
GitHub là một trong những nền tảng mã nguồn mở lớn nhất thế giới, với hàng triệu người dùng và dự án. Để đảm bảo hiệu suất và tốc độ xử lý, GitHub phải liên tục tối ưu hóa và cải thiện hệ thống của mình. Một trong những thành tựu đáng kể gần đây của GitHub là giảm thiểu số lượng yêu cầu từ 2,500 xuống còn 24 khi tải lịch sử đánh dấu sao (star history) của một repository.
Vấn đề ban đầu
Trước khi cải thiện, GitHub sử dụng một phương pháp tải lịch sử đánh dấu sao bằng cách thực hiện 2,500 yêu cầu riêng biệt đến cơ sở dữ liệu. Điều này không chỉ làm tăng tải cho hệ thống mà còn dẫn đến thời gian tải chậm và ảnh hưởng đến trải nghiệm người dùng. Để giải quyết vấn đề này, đội ngũ kỹ sư của GitHub đã quyết định tái cấu trúc cơ sở dữ liệu và tối ưu hóa quy trình tải dữ liệu.
Giải pháp
Đội ngũ kỹ sư của GitHub đã thực hiện một số bước quan trọng để cải thiện hiệu suất. Đầu tiên, họ đã tái cấu trúc cơ sở dữ liệu để lưu trữ lịch sử đánh dấu sao một cách hiệu quả hơn. Thay vì lưu trữ từng yêu cầu riêng biệt, họ đã sử dụng một bảng dữ liệu đơn để lưu trữ tất cả thông tin cần thiết. Điều này giúp giảm thiểu số lượng yêu cầu và tăng tốc độ xử lý.
Kết quả
Sau khi áp dụng giải pháp mới, GitHub đã giảm thiểu số lượng yêu cầu từ 2,500 xuống còn 24 khi tải lịch sử đánh dấu sao. Điều này không chỉ giúp tăng tốc độ xử lý mà còn giảm tải cho hệ thống và cải thiện trải nghiệm người dùng. Ví dụ, khi tải lịch sử đánh dấu sao của một repository có 10,000 người dùng, hệ thống chỉ cần thực hiện 24 yêu cầu thay vì 2,500 yêu cầu trước đây.
Kết luận
Cải thiện hiệu suất là một quá trình liên tục và quan trọng đối với bất kỳ hệ thống nào. Trong trường hợp của GitHub, việc tái cấu trúc cơ sở dữ liệu và giảm thiểu số lượng yêu cầu đã giúp tăng tốc độ xử lý và giảm tải cho hệ thống. Điều này giúp cải thiện trải nghiệm người dùng và tăng cường hiệu suất của hệ thống. Để áp dụng giải pháp tương tự, các nhà phát triển nên xem xét việc tái cấu trúc cơ sở dữ liệu và tối ưu hóa quy trình tải dữ liệu để giảm thiểu số lượng yêu cầu và tăng tốc độ xử lý.
https://github.blog/engineering/architecture-optimization/from-2500-requests-to-24-rebuilding-star-history-without-the-stargazers/