Job queue bằng Postgres — FOR UPDATE SKIP LOCKED
Không cần Redis: dùng FOR UPDATE SKIP LOCKED để nhiều worker cùng lấy job từ Postgres mà không xử lý trùng.

THE ENGINEERING JOURNAL
Những điều mình xây, những vấn đề mình gặp, và những gì mình học được. Về phần mềm, từ bên trong.
Không cần Redis: dùng FOR UPDATE SKIP LOCKED để nhiều worker cùng lấy job từ Postgres mà không xử lý trùng.

Viết test cho kiểu dữ liệu bằng expectTypeOf và vitest --typecheck: bắt lỗi generic ngay ở CI, khỏi chờ tới lúc runtime nổ.

Dev server Vite nhanh nhờ esbuild, còn build thật dùng Rollup. Hai pipeline khác nhau sinh ra lỗi chỉ hiện lúc production — và cách phòng.

Async component trong Next.js App Router vẫn chờ nhau từng tầng và để trang trắng vài giây. Cách đặt Suspense boundary để nội dung hiện dần.

Package độc hại trên npm ngày càng tinh vi. Cách khoá CI: lockfile, npm ci --ignore-scripts, pin version, ủ 7 ngày.

Một nửa bug state đến từ tổ hợp không bao giờ nên tồn tại. Discriminated union và exhaustive check để compiler chặn trước khi code kịp chạy.

Container Node.js nhận SIGTERM rồi tắt ngay, request đang chạy bị cắt. Cách drain connection, đóng socket keep-alive và cấu hình Docker/K8s cho đúng.
Index có sẵn nhưng Postgres vẫn Seq Scan? Cách đọc EXPLAIN ANALYZE và 4 lý do index bị bỏ qua, kèm ví dụ TypeScript và Drizzle.
Playwright dẹp flaky test bằng auto-waiting, web-first assertion và trace viewer — kèm cách shard test chạy song song trên CI.
Dựng monorepo TypeScript bằng pnpm workspace: workspace protocol, lọc package và mấy cái bẫy phantom dependency mình từng dính.