CM (Configuration Management Engineer) là ai? Có vai trò gì trong quy trình phát triển của một dự án?
CM/Configuration Manager (Hay còn có cách gọi khác là Configuration Management Engineer) có thể là một thuật ngữ hay chức danh khá xa lạ đối với hầu hết tất cả mọi người thậm chí là các anh chị lập trình viên kì cựu hay các leaders của các dự án. Vậy CM là gì hay là ai mà lại bí ẩn như vậy, chúng ta cùng tìm hiểu một chút qua bài viết này nhé!
I. CM (Configuration Management Engineer) là ai?
Trước hết, các bạn cần phân biệt rõ Configuration Manager (Hay còn có cách gọi khác là Configuration Management Engineer) và Software Configuration Management, 2 khái niệm này hoàn toàn khác nhau.
Chắc hẳn các bạn lập trình viên đã khá quen hoặc đã nghe đâu đó với cụm từ Software Configuration Management, tuy rằng chúng thật sự có liên quan nhưng trên thực tế lại là 2 khái niệm/vị trí hoàn toàn khác nhau. Cụ thể như sau:
1. Configuration Management Engineer: Configuration Management Engineer là một cá nhân có vai trò nhất định trong một dự án hoặc tổ chức cụ thể. CM chịu trách nhiệm thiết kế, triển khaim giám sát và duy trì các quy trình thực hành quản lý cấu hình trong tổ chức. Họ có vai trò đảm nhiệm cho việc cấu thiết nên môi trường, đảm bảo tất cả mọi điều kiện nhằm tiến tới một mục đích chung là quản lý dự án với các công cụ và theo các quy trình cụ thể, rõ ràng và đồng bộ. Ngoài ra họ cũng đồng thời quản lý các phiên bản, giúp xây dựng các quy trình tự động hoá, khai thác tài nguyên của dự án một cách hiệu quả.
2. Software Configuration Managerment: Software Configuration Management đề cập đến tập hợp các thực tiễn, quy trình và công cụ được sử dụng để quản lý các thay đổi đối với phần mềm, tài liệu và các tạo phẩm liên quan khác trong suốt vòng đời phát triển phần mềm. SCM bao gồm các hoạt động như kiểm soát phiên bản, quản lý thay đổi, quản lý xây dựng và phát hành, quản lý môi trường, v.v. Mục tiêu của SCM là đảm bảo rằng việc phát triển phần mềm luôn có tổ chức, được kiểm soát và nhất quán ngay cả khi có những thay đổi được đưa ra. SCM giúp ngăn ngừa các vấn đề liên quan đến xung đột phiên bản, bản dựng không nhất quán và những thay đổi không được kiểm soát.
=> Tóm lại, Software Configuration Management là khái niệm rộng hơn, bao gồm tất cả các quy trình và thực tiễn
để quản lý cấu hình, trong khi trình **Configuration Manager/Configuration Management Engineer** là người
chịu trách nhiệm triển khai và giám sát tất cả các quy trình này trong một dự án hoặc một tổ chức cụ thể
Qua sự so sánh trên, chắc hẳn các bạn cũng mường tượng ra được một chút CM rốt cuộc là ai, và sẽ có vai trò như thế nào trong một dự án. Tuy nhiên vai trò của CM sau sự so sánh trên vẫn còn khá mơ hồ, vì vậy chúng ta hãy cùng đi sâu thêm một chút để tìm hiểu vai trò của CM trong một dự án lập trình, cụ thể sẽ là gì nhé?
II. CM có vai trò gì trong quy trình phát triển của một dự án?
Trước tiên, các bạn hãy xem thử ví dụ dưới đây:
Hãy giả sử bạn đang làm ở một dự án triển khai theo mô hình Agile. Các quy trình hay phân đoạn sẽ được lặp đi lặp lại (Interation hoặc Sprint), ở mỗi sprint dự án của bạn sẽ cần phải thực hiện đầy đủ các quy trình từ lập kế hoạch, phân tích yêu cầu, thiết kế hay triển khai và kiểm thử để có thể có được sản phẩm cụ thể là một phần của sản phẩm cuối cùng => Lúc này CM sẽ có vai trò chính trong các nhiệm vụ bên dưới:
- Nếu như có một bug nào đó phát sinh ở phiên bản 2.1, đến phiên bản 2.2 không xuất hiện nữa và phiên bản 2.3 lại xuất hiện thì việc kiểm tra lại phiên bản 2.1 là việc cần thiết => CM sẽ có trách nhiệm control các version này và đảm bảo khi được yêu cầu cung cấp 1 version nào đó, CM sẽ bàn giao chính xác version đó cho khách hàng hoặc tester để thực hiện các tác vụ liên quan.
- Trong 1 dự án lớn, có thể có rất nhiều team khác nhau, và mỗi team lại phát triển 1 module hay 1 project của riêng team đó => Việc kết hợp các module hay project trên như thế nào, kết hợp giữa phần nào trong code của team 1 với phần nào trong code của team 2 để có thể tạo thành 1 sản phẩm hoàn chỉnh => CM sẽ là người có trách nhiệm với vấn đề này.
- Một dự án lớn được triển khai trong nhiều tháng sẽ đi cùng rất nhiều tài liệu, cần nhiều tài nguyên để setup và triển khai. Giả sử bạn là member mới tham gia dự án, bạn sẽ chẳng thể biết được dự án cần sử dụng những công cụ gì, cần đọc tài liệu ở đâu, nếu muốn kết nối tới Server X thì cần làm gì? => CM sẽ là người chịu trách nhiệm chính trong việc chuẩn bị tất tần tật tất cả mọi thứ giúp cho dự án có thể triển khai và hoạt động mà không gặp bất kì trở ngại nào.
- Giả sử dự án của bạn sử dụng Server hoặc Cloud để triển khai, lưu trữ hoặc làm một số nhiệm vụ liên quan, vậy ai sẽ là người quản lý và xử lý các vấn đề liên quan tới Server hay Cloud này? Đó chính là CM
=> Tóm lại, đối với các dự án lớn, đặc biệt là các dự án liên tục sản xuất ra sản phẩm và sử dụng lượng tài nguyên lớn, triển khai trong môi trường rộng, thì CM là một vai trò cực kì cần thiết và là chủ trốt trong các nhiệm vụ:
- Kiểm soát tài nguyên và cấu trúc phân bổ tài nguyên của dự án
- Kiểm soát môi trường dự án, thiết lập môi trường nhằm đảm bảo mục tiêu "môi trường triển khai trong dự án là như nhau với tất cả mọi thành viên ở bất cứ thời điểm nào"
- Kiểm soát sản phẩm phát hành
- Đảm bảo tính toàn vẹn và ổn định của môi trường, tài nguyên, và sản phẩm.
III. Tổng kết
Như vậy, qua 2 phần ở trên, có lẽ các bạn cũng đã hiểu được CM là ai, và họ đóng vai trò gì trong quy trình phát triển của một dự án rồi phải không nào? Nếu bạn có hứng thú với CM, có lẽ bạn sẽ cần tìm hiểu thêm, rốt cuộc thì công việc cụ thể mà 1 CM cần phải làm là gì? Hãy tiếp tục tìm hiểu ở phần 2 của series này nhé. Cảm ơn các bạn rất nhiều!
All Rights Reserved