Câu hỏi: 

Xin cho mình hỏi DevOps engineer làm công việc gì ạ? Và giữa DevOps engineer và System administrator  thì khác gì nhau về công việc?  Hiện tại các DevOps tool nào đang phổ biến và cái nào đang là xu hướng của tương lai vậy?

Giải đáp – Mentor Nguyễn Huy Quang:

Chào bạn. System administrator là quản trị hệ thống, không làm công việc development, còn một DevOps engineer là người vừa làm công việc development, vừa kết hợp để đưa sản phẩm lên product và bảo trì luôn hệ thống. Với DevOps thì ranh giới giữa công việc phát triển và vận hành bị xóa nhòa đi, việc này giúp cho thời gian từ lúc phát triển đến lúc vận hành được rút ngắn lại nhiều lần. Có thể hiểu đơn giản  DevOps = Development + Operations.

adDwCo8
Có thể hiểu đơn giản  DevOps = Development + Operations. (Ảnh: Ozaws.com)

DevOps thực ra là một quy trình xuyên suốt từ sản xuất phần mềm đến bàn giao. Công việc này nhấn mạnh đến việc giao tiếp/hợp tác giữa nhiều nhóm làm việc khác nhau đảm bảo quá trình phát triển và vận hành sản phẩm diễn ra trôi trảy, nhanh chóng.

Đối với sản phẩm lớn thì vẫn có phân biệt giữa các vai trò Developer và administrator, còn với sản phẩm nhỏ hơn thì một người có thể kiêm nhiệm nhiều vai trò. Ví dụ một công ty có một team phát triển một sản phẩm nội bộ, thì team đó có thể coi là DevOps được. Team này đảm nhiệm công việc phát triển, kiểm thử, triển khai và vận hành luôn.

Đối với các dự án lớn cần nhiều team đảm nhận các vai trò khác nhau, người ta sẽ dùng nhiều DevOps tool để giúp cho công việc chuyển giao giữa các team được diễn ra suôn sẻ, thuận lợi hơn.

Hiện tại, các DevOps tool phổ biến gồm có continuous integration tool như Hudson. Thay vì team member commit code lên repository, sau đó có một người chuyên get code về và build lên server, thì giờ Hudson sẽ làm công việc đó. Mỗi lần có người commit code lên, thì tool sẽ tự động kích hoạt một loạt các thao tác: get code, compile, review code, execute test, build và deploy. Vì việc này được thực hiện nhiều lần, thường xuyên nên nếu có lỗi sẽ phát hiện ra ngay, đảm bảo rút ngắn thời gian tích hợp và nâng cao chất lượng sản phẩm.

Từ khái niệm này mở rộng ra continous delivery. Ý tưởng như vậy nhưng nó sẽ cover luôn cả việc deploy automatically lên product server nữa.

Bản thân Hudson lại phải dùng đến các tool khác để thực hiện các công việc khác nhau, ví dụ Sonar để review code, SCM để get code, ant hoặc Maven để build… Cần tìm hiểu sâu hơn thì bạn có thể Google: continuous delivery hoặc  continuous integration. Có vô vàn tool mình không biết hết và chưa từng dùng qua.

Câu hỏi trên nằm trong chương trình Mentor 4 All của FUNiX. Tham gia Mentor4All, các thành viên sẽ được học online qua hỏi đáp với mentor FUNiX hoàn toàn miễn phí.

Chương trình kéo dài từ nay đến 13/9/2017. Đăng ký chương trình tại đây.