Tips được gắn thẻ "Best practices"

Coi tất cả các tip được gắn thẻ Best practices.
shape
shape
shape
shape
shape
shape
shape
shape

DevOps Trung bình

Health check cho đúng: liveness, readiness và startup probe khác nhau ra sao

Một câu query database trong liveness probe đủ biến cú failover 40 giây thành sập toàn hệ thống. Coi mỗi probe nên kiểm tra gì, với Kubernetes, Docker và Laravel /up.

Kubernetes 1.33 Laravel 13 PHP 8.4
Sơ đồ Thử thách
13 phút Đọc tip
JavaScript Trung bình

Promise.all, allSettled, race hay any: ngữ nghĩa, xử lý lỗi, timeout và giới hạn concurrency

Một service chập chờn kéo sập nguyên dashboard chỉ vì Promise.all. Coi mỗi hàm gộp promise làm gì thật sự, cách thêm timeout và cách giới hạn concurrency.

Node.js 22 TypeScript 5.9
Sơ đồ Thử thách
15 phút Đọc tip
Laravel Trung bình

Laravel Pipeline: chẻ controller checkout 340 dòng thành từng bước nhỏ, dễ test

Xài facade Pipeline của Laravel để tách luồng checkout và query filter thành các pipe class sắp xếp lại, tái sử dụng và unit test được, kèm mấy lỗi nên tránh.

Laravel 13 PHP 8.4
Sơ đồ Thử thách
8 phút Đọc tip
Bảo Mật Trung bình

Verify chữ ký webhook bằng HMAC: raw body, so sánh timing-safe và chống replay

URL webhook là endpoint public mà lại đổi được dữ liệu. Verify chữ ký HMAC trên raw body, so sánh constant-time và chặn replay bằng timestamp cho chắc ăn.

Laravel 13 PHP 8.4 Node.js 22
Sơ đồ Thử thách
14 phút Đọc tip
PHP Trung bình

PHP Enum nâng cao: backed enum, method, tryFrom và Eloquent cast thay cho magic string

Chỉ một lỗi gõ 'canceled' với 'cancelled' cũng đủ làm đơn hàng kẹt nhiều ngày. Xài backed enum có method, interface, tryFrom và Eloquent cast để dẹp magic string.

PHP 8.4 Laravel 13 Python 3.12
Sơ đồ Thử thách
15 phút Đọc tip
DevOps Khó

Migration database không downtime với Expand/Contract: đổi tên cột mà không làm gãy deploy

Đổi tên cột giữa lúc deploy là server cũ với queue worker gãy liền. Xài expand/contract, backfill theo batch và đúng thứ tự deploy để đổi schema an toàn.

Laravel 13 PHP 8.4 Mysql 8.4
Sơ đồ Thử thách
16 phút Đọc tip
Bảo Mật Trung bình

Hash mật khẩu cho đúng: bcrypt hay Argon2id, chỉnh cost và rehash khi login

Lộ bản dump là MD5, SHA-256 bị gỡ trong vài giờ. Chọn bcrypt hoặc Argon2id, đo cost trên máy thật và tự nâng cấp hash cũ khi user login trong PHP, Laravel.

PHP 8.4 Laravel 13 Python 3.13
Sơ đồ Thử thách
16 phút Đọc tip
JavaScript Trung bình

Event loop trong JavaScript: microtask với macrotask, đoán thứ tự output và chuyện bỏ đói loop

Code đồng bộ trước, rồi hết microtask, rồi một macrotask. Nắm luật này là đoán được Promise với setTimeout và tránh làm đứng Node.

Node.js 22 Ecmascript 2024
Sơ đồ Thử thách
16 phút Đọc tip
Laravel Trung bình

Laravel Job Batching và Chain: progress, xử lý lỗi, allowFailures và then/catch/finally

Bus::chain chạy job theo thứ tự và dừng ở lỗi đầu tiên; Bus::batch chạy song song, có progress và callback. Coi kỹ khi nào then, catch và finally thật sự chạy.

Laravel 13 PHP 8.4
Sơ đồ Thử thách
13 phút Đọc tip
DevOps Trung bình

Circuit Breaker Pattern: Đừng gọi hoài vô một service đã sập

Chỉ retry thôi có khi còn đè chết service đang yếu. Coi circuit breaker trả lỗi nhanh, chừa thời gian cho service hồi phục và gọi thử an toàn ra sao, có code PHP, Python, Laravel.

PHP 8.4 Python 3.12
Sơ đồ Thử thách
8 phút Đọc tip
DevOps Trung bình

Exponential Backoff với Jitter: Retry Đúng Cách

Vì sao exponential backoff thuần túy gây ra retry storm, và jitter ngẫu nhiên giúp trải đều tải ra sao, kèm cách triển khai full-jitter retry bằng PHP và Python.

PHP 8.4 Python 3.12
Sơ đồ Thử thách
6 phút Đọc tip
Laravel Trung bình

Idempotency Key: Chặn Charge Trùng Trong Hệ Thống Phân Tán

Vì sao idempotency key quan trọng với API thanh toán, cách triển khai an toàn với database-backed store, với mấy lỗi thường gặp kiểu race condition với đụng key.

PHP 8.4
Sơ đồ
6 phút Đọc tip
DevOps Trung bình

Docker Multi-Stage Build - Giảm Size Image Ngọt Xớt

Giảm size Docker image xuống ngọt xớt bằng multi-stage build, học liền tay nè.

Docker 20.10+
Sơ đồ
2 phút Đọc tip
PHP Trung bình

PHP 8.4 Property Hooks - Xài Sao Cho Ngon

Khám phá property hooks - tính năng mới toanh của PHP 8.4 giúp gắn logic vào property gọn gàng, đỡ mất công viết magic method.

PHP 8.4
2 phút Đọc tip
Laravel Trung bình

Tối Ưu Truy Vấn Laravel Với Eager Loading

Tìm hiểu cách tối ưu truy vấn database trong Laravel bằng eager loading để tránh vấn đề N+1 query.

Laravel 11.x PHP 8.2+
Sơ đồ
3 phút Đọc tip
JavaScript Dễ

Async/Await Trong JavaScript - Xài Cho Đúng Bài

Nắm vững async/await trong JavaScript qua mấy best practice này, tránh dính mấy lỗi hay gặp.

JavaScript ES2017+
Sơ đồ
2 phút Đọc tip