Bài 19: Git và quy trình deploy cơ bản

Bài 19: Git và quy trình deploy cơ bản

Bài này chi tiết hóa Git/deploy theo hướng dễ hiểu, có lệnh thực hành, tình huống production, checklist và bài tập.

Sau bài này anh sẽ biết:

  • Hiểu Git/deploy dùng để giải quyết vấn đề gì trong production.
  • Nắm các lệnh/cấu hình quan trọng.
  • Biết quy trình thực hành từng bước trong lab.
  • Có checklist kiểm tra trước khi áp dụng production.

Chốt ý nhanh

Chủ đề Điểm cần nhớ
Git Không chỉ dành cho dev; SysAdmin cũng cần để kiểm soát thay đổi và rollback.
Deploy Mục tiêu là đưa phiên bản mới lên an toàn, có kiểm tra và có đường lui.
Kỷ luật Production không nên sửa tay lung tung mà không ghi nhận thay đổi.

1. Bối cảnh thực tế

Git/deploy không phải kiến thức lý thuyết riêng lẻ. Trong vận hành production, nó giúp giảm downtime, giảm rủi ro bảo mật và giúp hệ thống dễ khôi phục hơn khi có sự cố.

2. Các khái niệm cần nắm

  • Trạng thái hiện tại: trước khi sửa phải biết hệ thống đang chạy thế nào.
  • Thay đổi nhỏ: thay đổi từng bước để dễ rollback.
  • Log/metric: dùng để xác nhận thay đổi đúng hay sai.
  • Rollback: luôn có đường quay lại khi cấu hình lỗi.

3. Lab thực hành

Mục tiêu lab: chạy các lệnh kiểm tra, tạo thay đổi nhỏ và xác nhận kết quả.
git status
git branch
git log --oneline -5
git remote -v
git pull origin main
# deploy mẫu
sudo systemctl status app
sudo systemctl restart app
curl -fsS http://127.0.0.1:3000/health

Khi thực hành, anh nên ghi lại output trước và sau. Đây là thói quen rất quan trọng của SysAdmin/DevOps.

4. Tình huống thực tế

Anh deploy code mới lên server. Trước khi pull cần biết branch hiện tại, commit đang chạy, working tree có sạch không. Sau deploy phải restart/reload service và health check.

5. Quy trình triển khai an toàn

  1. Xác định mục tiêu thay đổi.
  2. Backup file cấu hình hoặc tạo snapshot nếu thay đổi rủi ro.
  3. Kiểm tra trạng thái hiện tại bằng lệnh phù hợp.
  4. Thay đổi trên lab/staging trước nếu có.
  5. Áp dụng production trong khung giờ phù hợp.
  6. Kiểm tra log, service, port, endpoint sau thay đổi.
  7. Ghi lại thay đổi và phương án rollback.

6. Lỗi thường gặp

  • Làm trực tiếp production mà không backup.
  • Sửa nhiều thứ cùng lúc nên không biết lỗi do đâu.
  • Không đọc log sau khi reload/restart service.
  • Không ghi lại command đã chạy.
Lưu ý production: Nếu thay đổi có thể làm mất kết nối, dừng service hoặc ảnh hưởng dữ liệu, hãy chuẩn bị rollback trước khi chạy lệnh.

7. Checklist

  • Đã kiểm tra trạng thái hiện tại.
  • Đã backup cấu hình/dữ liệu liên quan.
  • Đã test syntax/config nếu có.
  • Đã xác nhận service hoạt động sau thay đổi.
  • Đã ghi lại thay đổi vào tài liệu vận hành.

8. Bài tập

  1. Dựng lab nhỏ cho chủ đề này.
  2. Chạy toàn bộ lệnh kiểm tra.
  3. Tạo một lỗi nhỏ có kiểm soát và sửa lại.
  4. Viết checklist 5 bước dùng cho production.

Phần thực hành mở rộng: Git và deploy theo hướng ít rủi ro hơn

Nhiều sự cố production không đến từ lỗi lớn, mà đến từ thay đổi nhỏ không được theo dõi. Git giúp lưu vết, còn quy trình deploy giúp biến thay đổi thành thứ có kiểm soát.

Lab 1: Tạo repo và theo dõi file cấu hình

mkdir deploy-lab && cd deploy-lab
git init
echo 'APP_ENV=staging' > .env.example
echo 'server config v1' > deploy.conf
git add .
git commit -m 'init deploy lab'

Ngay cả file cấu hình, script deploy hay runbook cũng đáng để đưa vào Git.

Lab 2: Mô phỏng thay đổi và xem diff trước khi deploy

echo 'server config v2' > deploy.conf
git diff
git status
git add deploy.conf
git commit -m 'update deploy config'

Thói quen xem git diff trước khi đẩy thay đổi là cực kỳ quan trọng trong vận hành.

Lab 3: Mô phỏng deploy bằng rsync hoặc pull có kiểm soát

mkdir -p ~/deploy-target
rsync -avh ./ ~/deploy-target/
ls -la ~/deploy-target

Nếu dùng pull trên server, phải hiểu rõ rủi ro: local change, file chưa commit, và trạng thái working tree không sạch.

Lab 4: Chuẩn bị rollback tối thiểu

git log --oneline --decorate -n 5
git checkout HEAD~1 -- deploy.conf
cat deploy.conf

Rollback không nhất thiết luôn là git reset --hard. Với production, nhiều khi chỉ cần xác định đúng file thay đổi và hoàn nguyên cẩn thận.

Lab 5: Viết checklist deploy ngắn

  • xác nhận branch/version triển khai
  • backup config hoặc snapshot trước thay đổi
  • test syntax/config sau deploy
  • health check sau deploy
  • chuẩn bị rollback nếu fail

Tình huống thực tế

Một file Nginx sửa tay trực tiếp trên production lúc đêm muộn, không commit, không backup, là công thức kinh điển cho sự cố khó truy vết. Ngược lại, chỉ cần có Git và checklist deploy, nhiều lỗi sẽ bị chặn từ rất sớm.

Lỗi phổ biến

  • Deploy xong mới xem lại đã thay đổi gì.
  • Sửa trực tiếp trên production rồi quên đồng bộ ngược về repo.
  • Không có rollback path.
  • Nhầm branch, nhầm commit hoặc deploy thiếu file.

Kết bài

Sau bài này, anh nên coi Git là công cụ vận hành chứ không chỉ là đồ nghề của developer. Khi kiểm soát được thay đổi và deploy có trật tự, anh đã bước gần hơn tới một hệ thống production ít bất ngờ hơn. Tiếp theo là cron và scheduled jobs — nơi những tác vụ tự động nhỏ có thể tạo ra hậu quả rất lớn nếu quản lý kém.

Tác giả: Mạnh Hoàng

Tôi là Hoàng Mạnh, người sáng lập blog SysadminSkills.com. Tôi viết về quản trị hệ thống, bảo mật máy chủ, DevOps và cách ứng dụng AI để tự động hóa công việc IT. Blog này là nơi tôi chia sẻ những gì đã học được từ thực tế – đơn giản, ngắn gọn và áp dụng được ngay.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *