+2

Series Phỏng vấn Jenkins Thực chiến #1: "Sự ruồng bỏ" Freestyle và Triết lý Pipeline as Code

1. Câu hỏi từ Nhà tuyển dụng

"Trong CV, tôi thấy bạn đã từng thiết lập luồng CI/CD bằng Jenkins. Bạn hãy phân biệt điểm khác nhau cốt lõi giữa Freestyle Project và Pipeline? Tại sao ở dự án hiện tại, chúng tôi lại nghiêm cấm sử dụng Freestyle để deploy các Microservices?"

2. Phân tích tâm lý Nhà tuyển dụng

Với câu hỏi này, người phỏng vấn không muốn nghe bạn mô tả giao diện click chuột của Freestyle trông như thế nào. Mục đích thực sự của họ là:

  • Kiểm tra xem bạn có hiểu triết lý Infrastructure as Code (IaC) hay không.
  • Đánh giá tư duy quản trị rủi ro (Risk Management) khi vận hành các hệ thống đòi hỏi tính sẵn sàng cao (như các hệ thống giao dịch tự động AFC).
  • Xem bạn có kinh nghiệm làm việc nhóm (Collaboration) trên cùng một luồng CI/CD hay không.

3. Cách trả lời ghi điểm tuyệt đối (Mẫu tham khảo)

Để thuyết phục những chuyên gia kỹ thuật khó tính nhất, hãy chia câu trả lời của bạn thành 3 cấp độ:

Cấp độ 1: Trả lời thẳng vào sự khác biệt bề mặt (Để chứng minh có làm thực tế)

"Điểm khác biệt cốt lõi nhất nằm ở phương thức cấu hình. Freestyle Project yêu cầu người dùng thao tác hoàn toàn qua giao diện Web (UI) của Jenkins: click chọn plugin, điền form, viết script trực tiếp vào các ô textbox. Trong khi đó, Pipeline biến toàn bộ quy trình CI/CD thành những dòng mã (Code) và được lưu trữ trong một file text duy nhất gọi là Jenkinsfile."

Cấp độ 2: Phân tích nguyên nhân "Nghiêm cấm Freestyle" (Tư duy hệ thống)

"Việc các dự án thực tế lớn nghiêm cấm Freestyle là hoàn toàn hợp lý, xuất phát từ 3 điểm yếu chí mạng của nó:

  1. Thảm họa mất dữ liệu (Disaster Recovery): Nếu server Jenkins gặp sự cố hỏng ổ cứng hoặc ai đó lỡ tay xóa mất Job Freestyle, toàn bộ cấu hình (các bước build Golang, các biến môi trường, đường dẫn Docker Registry) sẽ mất sạch. Việc khôi phục bằng trí nhớ là bất khả thi. Với Pipeline, Jenkinsfile nằm cùng source code trên Git, mất Jenkins ta chỉ cần dựng server mới và trỏ về Git là hệ thống sống lại trong 1 phút.
  2. Mù tịt về lịch sử thay đổi (Version Control & Audit): Nếu hôm nay pipeline bị lỗi do ai đó đổi thông số cấu hình, Freestyle không cung cấp lịch sử (git blame) để biết ai đã sửa, sửa lúc nào và sửa cái gì. Với Jenkinsfile, mọi thay đổi đều phải qua git commit và Pull Request, giúp team dễ dàng Review và truy vết lỗi.
  3. Khó tái sử dụng và mở rộng: Nếu hệ thống AFC có 50 Microservices tương tự nhau, dùng Freestyle đồng nghĩa với việc phải click tạo 50 cái Job bằng tay. Rất dễ sai sót và trùng lặp (Human Error)."

Cấp độ 3: Bồi thêm ngón đòn "Kinh nghiệm nâng cao" (Điểm 10/10)

"Ngoài ra, khi viết Pipeline, em thường ưu tiên sử dụng Declarative Pipeline thay vì Scripted Pipeline. Declarative có cấu trúc chặt chẽ (phân chia rõ agent, stages, steps, post), giúp code dễ đọc hơn. Đặc biệt, nó hỗ trợ block post {} rất mạnh mẽ để tự động dọn dẹp rác (cleanWs()) hoặc bắn thông báo về Slack/Telegram dựa trên trạng thái Thành công hay Thất bại của bản build, điều mà Freestyle xử lý rất rườm rà."

4. Góc nhỏ "Bắt bẻ" (Follow-up questions nhà tuyển dụng có thể vặn lại)

Khi bạn trả lời quá trơn tru, một Senior Interviewer sẽ tiếp tục đào sâu vào ngóc ngách để xem bạn học vẹt hay làm thật.

  • Interviewer vặn lại: "Nếu dùng Jenkinsfile lưu trên Git cùng mã nguồn, lỡ một bạn Dev lén sửa file đó, thêm lệnh in ra mật khẩu Database (đang lưu trong Credentials) thì sao?"
  • Cách bạn "đỡ đòn": "Jenkins Credentials có cơ chế tự động che giấu (masking) thành các dấu *** khi giá trị bí mật được in ra Console Output. Tuy nhiên, để bảo mật tuyệt đối ở cấp độ Enterprise, Jenkins cung cấp cơ chế kiểm duyệt. Nếu một Pull Request thay đổi nội dung Jenkinsfile, nó sẽ không được tự động chạy cho đến khi có một người mang quyền Admin phê duyệt (Approve) sự thay đổi đó. Kết hợp với việc phân quyền RBAC và Branch Protection trên GitHub/GitLab, Dev thông thường sẽ không thể tự ý thay đổi luồng CI/CD chạy trên nhánh main."

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí