Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Giải ngố CI/CD: Hiểu định nghĩa sao cho chuẩn xác nhất?

    Chào anh em,

    Dạo này lượn lờ các group IT, mình thấy khái niệm CI/CD được nhắc đến ở khắp mọi nơi, từ job description đến các buổi tech talk. Tuy nhiên, đôi khi chúng ta mải mê setup tool mà quên mất bản chất cốt lõi của nó, đặc biệt là sự nhầm lẫn kinh điển giữa 2 chữ "CD".

    Hôm nay mình ngoi lên tóm tắt lại định nghĩa chuẩn chỉnh nhất, hy vọng sẽ giúp những anh em mới tiếp cận có một cái nhìn thật rõ ràng.

    Về bản chất, CI/CD không chỉ là việc cài Jenkins hay viết file .gitlab-ci.yml. Nó là một phương pháp, một văn hóa làm việc kết hợp với công cụ tự động hóa để rút ngắn chu kỳ phát triển phần mềm. Mục tiêu tối thượng? Đưa code từ máy của Dev đến tay người dùng cuối nhanh nhất, an toàn nhất và liên tục nhất.

    Cụ thể hơn, chúng ta chia nó làm 2 phần: 1. CI (Continuous Integration) – Tích hợp liên tục


    Đây là câu chuyện của nội bộ team Dev.
    • Bản chất: Là phương pháp mà các lập trình viên thường xuyên gộp (merge) code mới của họ vào một nhánh chung (repository), thường là vài lần mỗi ngày.
    • Quy trình: Thay vì gộp code bằng tay và ngồi cầu nguyện, mỗi lần anh em git push, một pipeline tự động sẽ nhảy ra làm nhiệm vụ Biên dịch (Build) và chạy Kiểm thử tự động (Unit Tests, Integration Tests).
    • Mục tiêu: Tiêu diệt ngay tình trạng "Integration Hell" (lỗi xung đột code). CI đảm bảo nhánh code chính luôn "sạch", không bị hỏng hóc mỗi khi có người mới thêm tính năng.
    2. CD – Continuous Delivery hay Continuous Deployment?


    Đây là chỗ anh em hay nhầm nhất. Chữ "CD" đại diện cho 2 khái niệm có tính chất tăng dần về độ tự động hóa:

    Phân phối liên tục (Continuous Delivery):
    • Bản chất: Là bước đi tiếp theo ngay sau CI. Khi code đã pass qua các khâu test, hệ thống tự động đóng gói và cấu hình sẵn sàng để đẩy lên môi trường Testing, Staging hoặc Production.
    • Điểm mấu chốt: Lúc này, code đã ở trạng thái sẵn sàng release bất cứ lúc nào. Tuy nhiên, quyết định bấm nút "Deploy" cuối cùng vẫn do con người (QA, PM hoặc Release Manager) thực hiện thủ công.

    Triển khai liên tục (Continuous Deployment):
    • Bản chất: Đây là "cảnh giới" tối thượng của tự động hóa. Khi code vượt qua toàn bộ bài test của CI, nó sẽ tự động chạy thẳng lên môi trường Production.
    • Điểm mấu chốt: Hoàn toàn không có sự can thiệp của con người ở khâu phát hành. Khách hàng sẽ nhận được tính năng mới ngay lập tức. Để chơi được hệ này, team anh em phải có một bộ Automated Test bao phủ cực kỳ toàn diện và đáng tin cậy.
    💡 Tóm tắt siêu ngắn gọn (TL;DR) cho anh em lười đọc:
    • CI: Code xong ➔ Tự động Build ➔ Tự động Test.
    • CD (Delivery): Pass CI ➔ Tự động đóng gói ➔ Chờ người duyệt để bấm nút đẩy lên Production.
    • CD (Deployment): Pass CI ➔ Tự động đẩy thẳng một mạch lên Production tới tay user.
Working...
X