Backend

Backend

19 bài viết trong danh mục này

BOT
MSG
FREE
Telegram Bot
alert • monitor • notify
BackendDevOpsNestJS

Gửi thông báo Telegram từ NestJS: alert lỗi, deploy và monitor

Tích hợp Telegram Bot API vào NestJS: TelegramModule, exception filter bắt 5xx, BullMQ job fail, app start và deploy xong — không cần thư viện ngoài.

11 phút đọc18/06/2026
LOST
DIRTY
PHTM
Isolation Level
rc • rr • for update
BackendMySQLDatabase

Race condition trong MySQL: isolation level nào giải quyết được?

MySQL có 4 isolation level nhưng mặc định REPEATABLE READ không chặn được mọi race condition. Dirty read, lost update, phantom read — từng loại xảy ra khi nào, isolation level nào ngăn được, và khi nào cần SELECT FOR UPDATE.

12 phút đọc18/06/2026
DTO
DB
Validate in Code
dto • service • not db
BackendDatabase

Tại sao không nên dùng database để validate input trong backend

Nhiều backend dựa vào NOT NULL, VARCHAR(n), UNIQUE constraint của database để bắt lỗi input. Quan điểm này sai về kiến trúc — database không phải lớp validate. Validate đúng chỗ: DTO hoặc service layer, trước khi data chạm vào DB.

10 phút đọc18/06/2026
TX1
LOCK
TX2
Deadlock
innodb • log • rollback
BackendMySQLDatabase

MySQL Deadlock: cách đọc log InnoDB và giảm xác suất xảy ra

Deadlock trong MySQL tự resolve nhưng rollback transaction ngẫu nhiên gây lỗi ở app layer. Cách đọc SHOW ENGINE INNODB STATUS để biết chính xác dòng nào bị lock, nguyên nhân phổ biến, và 5 cách giảm xác suất deadlock.

12 phút đọc18/06/2026
1
+N
SQL
SLOW
N+1 Query
orm • join • batch
BackendDatabase

N+1 Query trong ORM: cách phát hiện bằng SQL log và fix bằng eager loading

N+1 query không gây lỗi nhưng làm API chậm dần khi data tăng — ORM gửi 1 query lấy danh sách rồi lặp N query con. Cách bật SQL log để bắt, đếm query per request, và fix bằng include, batch, hoặc DataLoader.

11 phút đọc18/06/2026
12s
200ms
MySQL Query
explain • scan • optimize
BackendMySQLDatabase

MySQL query chậm vì ORDER BY và LIMIT: nguyên nhân và cách tối ưu

ORDER BY kết hợp LIMIT có thể gây filesort trên triệu bản ghi dù bảng đã có index. Giải thích cách MySQL chọn execution plan, cách đọc EXPLAIN, và 4 pattern tối ưu thực tế.

12 phút đọc18/06/2026
N7
N8
N9
N11
NestJS Upgrade
ai • diff • test
BackendNestJSAI

Cách nâng NestJS 7 lên 11 bằng AI mà không đổi logic code

Cách nâng NestJS cũ lên mới bằng AI mà ít lỗi: nâng từng major version, khoanh breaking change, review git diff và giữ nguyên logic code.

13 phút đọc18/06/2026
DTO
MOD
ENT
Backend Layers
controller • service • db
BackendArchitecture

Cách phân biệt DTO, Model và Entity trong backend

Cách phân biệt DTO, Model và Entity trong backend để tránh dùng lẫn giữa controller, service và database, đặc biệt khi dùng TypeORM và validate đầu vào.

12 phút đọc18/06/2026
BE
FE
QA
Role Boundaries
api • dto • test logic
BackendArchitecture

Cách tách bạch Backend, Frontend và Tester để tránh đổ lỗi

Cách tách bạch Backend, Frontend và Tester để tránh đổ lỗi, lệch logic và tranh cãi khi thiết kế API, validate dữ liệu và test hệ thống.

11 phút đọc17/06/2026
HIT
TTL
DB
Cache Strategy
aside • write-through • ttl
BackendRedisDatabase

Chiến lược caching giảm tải database và API

Các chiến lược caching thực tế để giảm tải database và API: cache-aside, write-through, write-behind, TTL và cache invalidation.

13 phút đọc16/06/2026
SSH
FMT
VSCode Ext
ssh • docker • prettier • lint
BackendVSCode

5 extension VSCode nên cài cho backend dev

Remote SSH, Docker, Prettier, ESLint và Code Spell Check: 5 extension VSCode giải quyết các việc dev thực tế hằng ngày.

10 phút đọc16/06/2026
SRP
DIP
OCP
SOLID in Practice
clean • test • scale
BackendArchitecture

Áp dụng SOLID để giảm coupling trong dự án lớn

Cách áp dụng SOLID vào code thực tế để giảm coupling, giảm code rối, dễ test, dễ mở rộng và đỡ đau đầu hơn khi dự án bắt đầu lớn lên.

10 phút đọc16/06/2026
API
RAM
N+1
State and Scale
cron • file • memory
BackendArchitecture

Stateless và stateful khi scale nhiều instance

Giải thích stateless và stateful cho backend, kèm lỗi hay gặp khi scale như schedule chạy trùng, lưu file local và giữ state trong memory.

10 phút đọc16/06/2026
1|500
EX
Logical Exception
nestjs • code • status
BackendNestJS

NestJS xử lý lỗi logic bằng error code nội bộ và LogicalException

Cách chuẩn hoá lỗi logic trong NestJS bằng message code, LogicalException, HttpException và error code để debug nhanh hơn.

9 phút đọc16/06/2026
FK
DB Consistency
schema • key • rule
DatabaseSQLBackend

Cách thiết kế database nhất quán, ít lệch dữ liệu

Nguyên tắc thiết kế database để giữ dữ liệu nhất quán: naming, primary key, foreign key, unique, not null và chuẩn hoá vừa đủ.

10 phút đọc16/06/2026
PM2
LOG
UP
NestJS + PM2
restart • logs • reboot
BackendNestJSDevOpsPM2

PM2 chạy NestJS production: restart, log và reboot

Cách dùng PM2 để chạy NestJS trên VPS hoặc server Linux, gồm build app, start bằng ecosystem file, xem log, restart khi crash và tự khởi động lại sau reboot.

9 phút đọc16/06/2026
JOB
30s
BullMQ Timeout
stalled • attempt • worker
BackendNestJSRedis

BullMQ Job stalled với ElastiCache dù Redis vẫn chạy

Phân tích nguyên nhân và cách khắc phục lỗi BullMQ timeout, Job stalled khi dùng AWS ElastiCache (Redis).

7 phút đọc15/06/2026
API
JOB
WORKER
BullMQ Queue
retry • delay • async
BackendNestJSRedis

Redis queue trong NestJS với BullMQ: cách triển khai

Cách dùng Redis làm queue trong NestJS với BullMQ, từ luồng producer-consumer, retry, delay job đến các lưu ý production khi xử lý email, webhook và tác vụ nền.

10 phút đọc15/06/2026
RDS
TCP
RE
Redis Reconnect
failover • readonly • retry
BackendNestJSRedis

NestJS mất kết nối Redis: cấu hình ioredis reconnect

Cách cấu hình ioredis trong NestJS để reconnect an toàn khi Redis disconnect, gặp TCP idle timeout hoặc ElastiCache failover trả về READONLY.

6 phút đọc08/06/2026