Bài viết về: DevOps

Bài viết về: DevOps

Feature flag thực chiến: Phát hành tính năng an toàn không cần deploy lại

Feature flag thực chiến: Phát hành tính năng an toàn không cần deploy lại

Feature flag tách thời điểm deploy code khỏi thời điểm phát hành tính năng. Nhóm phát triển có thể đưa code lên production ở trạng thái tắt, mở cho nhân viên, tăng dần tỷ lệ người dùng và tắt nhanh khi có sự cố mà không cần build lại. Nhưng nếu thiếu vòng đời, flag sẽ trở thành cấu hình sống vĩnh viễn và làm mọi nhánh code khó hiểu hơn.

Đọc tiếp →
Database migration không downtime: Expand, Migrate, Contract từ A đến Z

Database migration không downtime: Expand, Migrate, Contract từ A đến Z

Một câu ALTER TABLE chạy thành công chưa có nghĩa là deployment an toàn. Trong production, phiên bản ứng dụng cũ và mới thường cùng tồn tại trong vài phút hoặc lâu hơn. Một migration khóa bảng, đổi tên cột ngay lập tức hoặc backfill hàng triệu bản ghi trong một transaction có thể làm request chậm, cạn connection pool và khiến rollback trở nên bất khả thi.

Đọc tiếp →
Hướng dẫn cấu hình Cloudflare DNS và HTTPS an toàn cho website

Hướng dẫn cấu hình Cloudflare DNS và HTTPS an toàn cho website

Cloudflare có thể cải thiện HTTPS, hiệu năng và khả năng chống tấn công cho website, nhưng một lần chuyển DNS vội vàng cũng có thể làm gián đoạn web, email hoặc API. Hướng dẫn này đi theo thứ tự an toàn: kiểm kê DNS, chuẩn bị chứng chỉ tại máy chủ gốc, chuyển nameserver, bật proxy, chọn Full (strict), kích hoạt DNSSEC và kiểm thử trước khi siết firewall.

Đọc tiếp →
Laravel Queue trong production: Redis, Horizon, retry và xử lý job an toàn

Laravel Queue trong production: Redis, Horizon, retry và xử lý job an toàn

Queue giúp request Laravel trả về nhanh hơn, nhưng đưa công việc sang nền không tự động làm hệ thống đáng tin cậy. Trong production, worker có thể dừng giữa chừng, API bên ngoài có thể timeout và cùng một job có thể được xử lý lại. Một thiết kế tốt phải chủ động kiểm soát retry, timeout, tính idempotent, tài nguyên và khả năng quan sát.

Đọc tiếp →
Đánh giá aaPanel: Ưu, nhược điểm và khi nào nên sử dụng?

Đánh giá aaPanel: Ưu, nhược điểm và khi nào nên sử dụng?

aaPanel là một control panel chạy trên nền web, giúp biến nhiều thao tác quản trị Linux thành giao diện đồ họa: tạo website, cài web server, quản lý PHP và cơ sở dữ liệu, cấp SSL, đặt lịch sao lưu, theo dõi tài nguyên và quản lý Docker. Điểm hấp dẫn nhất của aaPanel là tốc độ triển khai và phạm vi tính năng, nhưng sự tiện lợi đó đi kèm một control plane có quyền rất cao trên máy chủ.

Đọc tiếp →
Docker Compose: Xây dựng môi trường lập trình đồng nhất cho cả nhóm

Docker Compose: Xây dựng môi trường lập trình đồng nhất cho cả nhóm

“Máy em chạy được” thường là dấu hiệu môi trường phát triển chưa được mô tả đủ rõ. Khi mỗi thành viên tự cài PHP, cơ sở dữ liệu, bộ nhớ đệm và công cụ phụ trợ theo một cách khác nhau, lỗi phiên bản và cấu hình sẽ xuất hiện sớm hay muộn. Docker Compose giúp biến các phụ thuộc đó thành một cấu hình có thể lưu cùng mã nguồn và khởi động lại nhất quán.

Đọc tiếp →
Hướng dẫn thiết lập CI cho Laravel bằng GitHub Actions

Hướng dẫn thiết lập CI cho Laravel bằng GitHub Actions

Continuous Integration giúp phát hiện lỗi trước khi mã nguồn được hợp nhất. Với GitHub Actions, mỗi lần mở hoặc cập nhật pull request có thể tự động cài dependency, chuẩn bị môi trường Laravel và chạy bộ kiểm thử. Nhóm phát triển nhận phản hồi nhất quán mà không phụ thuộc vào máy của từng người.

Đọc tiếp →
Docker Compose cho môi trường phát triển nhất quán

Docker Compose cho môi trường phát triển nhất quán

“Máy em chạy được” thường là dấu hiệu môi trường phát triển chưa được mô tả đủ rõ. Khác phiên bản runtime, database, extension hoặc biến môi trường có thể khiến onboarding kéo dài và lỗi chỉ xuất hiện trên máy của một vài thành viên.

Đọc tiếp →
Laravel Queue trên production: Retry, idempotency và giám sát

Laravel Queue trên production: Retry, idempotency và giám sát

Đưa một tác vụ sang queue mới chỉ là bước đầu. Trên production, hệ thống còn phải đối mặt với worker bị dừng khi deploy, API bên thứ ba chập chờn, job chạy lại nhiều lần và hàng đợi tăng nhanh hơn khả năng xử lý. Một queue tốt không chỉ chạy được, mà còn phải thất bại có kiểm soát và phục hồi được.

Đọc tiếp →