Xử Lý Livestream 2 Triệu View (P1): Tư Duy Kiến Trúc Giúp TikTok Gánh Hàng Triệu Băng Thông Mà Không Phá Sản

Xử Lý Livestream 2 Triệu View (P1): Tư Duy Kiến Trúc Giúp TikTok Gánh Hàng Triệu Băng Thông Mà Không Phá Sản

Chào anh em, Chắc hẳn anh em đều biết đến phiên livestream chấn động của một tiktoker hải ngoại hồi tháng 8 vừa qua - đỉnh điểm cán mốc hơn 2 triệu người xem cùng lúc. Tất nhiên, là chất lượng nó vẫn cứ gọi là mướt mườn mượt. Điều đó dấy lên trong tôi một câu hỏi: "Rốt cuộc thì đằng sau màn hình, cái hệ thống đó được thiết kế bá đạo đến mức nào mà không bị đè sập?" Nhiều anh em nghĩ rất đơn giản rằng: "Chắc ByteDance lại đập vào cả đống tiền, mua máy ... »

Thiết kế hệ thống Pastebin: ước lượng tải, chống va chạm khoá, tách lưu trữ nội dung

Thiết kế hệ thống Pastebin: ước lượng tải, chống va chạm khoá, tách lưu trữ nội dung

Năm nguyên tắc rút ra từ một ticket bốn dòng — mỗi nguyên tắc neo vào một con số đo được. Mười lăm phút vào một cuộc họp thiết kế, sơ đồ trên bảng đã có sáu thành phần: một load balancer, một API gateway, một hàng đợi, một tầng cache và hai database nối mũi tên với nhau. Không ai trong phòng biết hệ thống này phải chịu bao nhiêu request mỗi giây. Con số đó quyết định gần như mọi thứ còn lại trên bảng. Luật tôi dùng rất đơn giản: mỗi thành phần trên sơ đồ phải chỉ ... »

March of nines: vì sao sản phẩm AI cứ "gần xong" mà mãi không xong

March of nines: vì sao sản phẩm AI cứ "gần xong" mà mãi không xong

Một buổi chiều, bạn dựng thử tính năng có AI. Chạy mười lần đúng chín. Demo xong, câu trả lời cho "bao giờ xong?" là "một tháng, còn vài ca lẻ". Ba tháng sau vẫn "còn vài ca lẻ". Sáu tháng sau vẫn thế — nhưng là ca khác. Sang năm thứ hai, vẫn "gần xong". Chuyện này có quy luật. Bài viết nói về quy luật đó, cách đo cho đúng, và cuối bài: model 2026 mạnh hơn hẳn thì quy luật còn đúng không. 1. Đơn vị đo: "số 9"Phần mềm thường chạy chắc chắn — cùng đầu vào ... »

Hành trình của một Request: Từ Proxy, Load Balancer đến API Gateway

Hành trình của một Request: Từ Proxy, Load Balancer đến API Gateway

Khi bạn gõ một địa chỉ web và nhấn Enter, cảm giác rất kỳ diệu: trình duyệt hỏi, server đáp, mọi thứ xong xuôi trong chớp mắt. Nhưng phía sau hậu trường, request của bạn không hề đi "đường thẳng". Nó phải chạy qua một loạt các "trạm trung chuyển" trước khi chạm đến đích: phân giải DNS (đã là một tầng chia tải), định tuyến anycast tới PoP gần nhất, CDN trả lời luôn nếu là nội dung tĩnh, rồi mới tới lượt các trạm bên trong hệ thống. Bài viết này sẽ tập trung vào phần "bên trong" ... »

Debug AI Agent như một pro — GenAI Observability với OpenTelemetry

Debug AI Agent như một pro — GenAI Observability với OpenTelemetry

"Agent của mình mất 45 giây để trả lời câu hỏi 'Đà Lạt hôm nay thế nào?'. Không biết lỗi ở model, ở tool, hay ở đâu." — Câu này mình nghe từ không ít anh em đang build AI Agent. Và câu trả lời thường là: đoán mò, rồi đổi model, rồi tinh chỉnh prompt, rồi vẫn chậm. Bài này mình sẽ chỉ cách dùng OpenTelemetry để không phải đoán nữa. Nhìn vào một cái dashboard là biết ngay lỗi nằm ở tầng nào, mất bao nhiêu giây ở bước nào, và dữ liệu đầu vào của ... »

Từ Git Diff đến Blast Radius: Code Review Graph có thể hỗ trợ AI Code Review như thế nào?

Từ Git Diff đến Blast Radius: Code Review Graph có thể hỗ trợ AI Code Review như thế nào?

Trong những năm gần đây, các AI coding assistant ngày càng được sử dụng nhiều hơn trong quá trình phát triển phần mềm, từ sinh code, refactoring cho đến code review. Một cách sử dụng phổ biến là cung cấp git diff hoặc nội dung của Pull Request cho AI và yêu cầu: Review this change. Với những thay đổi nhỏ và độc lập, cách tiếp cận này thường mang lại kết quả khá tốt. Tuy nhiên, khi codebase trở nên lớn hơn và có nhiều dependency giữa các module, chỉ đọc phần code thay đổi thường chưa đủ để ... »

Có bao nhiêu cách chạy một AI Agent?

Có bao nhiêu cách chạy một AI Agent?

Góc nhìn của một backend engineer sau vài tháng nhét agent vào production Mở đầu: agent thực ra rất nhỏTrước khi bàn "chạy ở đâu", cần thống nhất "chạy cái gì". Bỏ hết marketing đi, một AI agent chỉ là vòng lặp này: async function agentLoop(messages: Message[], tools: Tool[]) { while (true) { const res = await llm.createMessage({ messages, tools }); messages.push({ role: 'assistant', content: res.content }); if (res.stop_reason !== 'tool_use') return res; const toolResults = await Promise.all( res.content .filter((b) => b.type === 'tool_use') .map(async (b) => ({ type: 'tool_result' as const, tool_use_id: ... »

Chuyển từ Windows 11 sang CachyOS: cái hay, cái dở dưới góc nhìn của một lập trình viên

Chuyển từ Windows 11 sang CachyOS: cái hay, cái dở dưới góc nhìn của một lập trình viên

Giới thiệu chung Mình làm lập trình web trên Windows trong một thời gian dài và nhìn chung mọi thứ đều ổn. Vài năm trở lại đây Windows ngày càng có nhiều biểu hiện khó chịu, nhưng vì đã quá quen nên mình đều tặc lưỡi cho qua. Vài tháng trước mình xem một số bài về "rice" Linux trên Reddit và khá thích thú với giao diện của những người dùng này. Nếu thích giao diện windows, bạn hoàn toàn có thể "rice" giống như No_Beyond_5483 trên reddit đã làm: "Start Menu& ... »