Các công cụ SCM (Ansible, Puppet, Chef, v.v.) cung cấp những gì?


8

Tôi đã đọc khá nhiều về Quản lý cấu hình phần mềm (trên Internet và cả SWEBOK), nhưng tôi không rõ mục đích của các công cụ SCM là gì. Hay nói rõ hơn, những công cụ này cung cấp những gì mà các công cụ khác không có.

Hãy nói rằng tôi có một môi trường với các công cụ sau:

  • Jenkins để tích hợp liên tục.
  • Ant là công cụ xây dựng.
  • Git là hệ thống kiểm soát phiên bản.
  • GitLab để quản lý kho Git và theo dõi vấn đề cũng có.
  • Các công cụ kiểm tra và phân tích mã nguồn, như Sonar và JUnit.

Vì vậy, câu hỏi của tôi là, những công cụ SCM đó sẽ cung cấp những gì? Bằng cách nào chúng sẽ hữu ích?

Câu trả lời:


10

Tất cả các công cụ mà bạn đã đề cập (Jenkins, ant, git) giúp thực sự xây dựng và kiểm tra cổ vật của bạn. Trong thế giới java thường có thể là chiến tranh, tai hoặc chỉ là zip với ứng dụng bên trong. Đôi khi đối với các ứng dụng phức tạp, nó có thể nhiều hơn một tạo tác. Đối với các nền tảng lập trình khác, nó có thể khác nhau, DLL, nhị phân cho nhiều nền tảng khác nhau, v.v.

Bây giờ hãy nói rằng bạn muốn triển khai ứng dụng của mình. Nếu bạn có một máy chủ, bạn có thể thực hiện thủ công hoặc với một số tập lệnh trong nhà. Càng xa càng tốt :)

Nhưng nếu bạn có nhiều trang trại (nhóm máy), các trang trại khác nhau nên triển khai với các cấu hình khác nhau (cơ sở dữ liệu, vị trí địa lý khác nhau) Điều gì sẽ xảy ra nếu ứng dụng của bạn có thể mở rộng theo chiều ngang để thêm một vài nút mới vào trang trại một nhiệm vụ tầm thường. Nhóm QA của bạn có thể chỉ yêu cầu môi trường mới để chạy thử nghiệm, nhóm hiệu suất của bạn có thể yêu cầu môi trường mới hoặc thêm các nút vào trang trại để chạy thử nghiệm căng thẳng, v.v. Bây giờ quản lý tất cả những thứ này dường như là phức tạp. Đó là nơi các công cụ như ansible, đầu bếp, muối, con rối và những người khác chơi.

Đây thực sự là giúp để tự động hóa triển khai. Họ có thể cung cấp công thức triển khai, cài đặt các phụ thuộc bị thiếu (để chạy dự án của bạn có thể yêu cầu jre, tomcat của phiên bản cụ thể và nginx cho nội dung tĩnh). Tất cả điều này ở cấp độ trang trại.

Tôi biết câu trả lời quá chung chung và có vẻ ít rõ ràng hơn đối với nhà phát triển java (Tôi là một trong số đó). Nhưng nếu bạn có một nhóm các hệ thống / tín đồ, họ nên ngay lập tức chỉ ra lợi ích của các công cụ này.


Cảm ơn câu trả lời của bạn. Đối với những người là nhà phát triển và người kiểm tra QA & Performance all-in-one (trường hợp của tôi), chỉ với hai máy, phát triển và sản xuất, bạn có đề nghị sử dụng các công cụ SCM đó không? Tôi hiểu quan điểm của bạn, nhưng thật khó để tôi hiểu cho tất cả và đặt bản thân mình vào bối cảnh đó, vì tôi chưa bao giờ ở trong tình huống đó.
Julen

2
nếu bạn chỉ triển khai một cuộc chiến thì có lẽ bạn không nên sử dụng những công cụ này. Tất nhiên bạn có thể thử một (có thể ansible hoặc muối sẽ làm việc cho bạn tốt hơn). Tôi có lẽ sẽ cho họ thử chỉ để học một cái gì đó mới và xem liệu cuộc sống của tôi có trở nên dễ dàng hơn với những công cụ này không :)
Mark Bramnik

1
Tôi nghĩ đó là những gì tôi sẽ làm, cảm ơn rất nhiều.
Julen

Tại một thời điểm nào đó trong tương lai, bạn S need cần mở rộng vượt quá khả năng hiện tại hoặc thay thế phần cứng hiện có bằng bộ công cụ hiện đại hơn. Dù chia tỷ lệ theo chiều dọc (máy lớn hơn) hay theo chiều ngang (tách web khỏi db với nhiều web hơn) bằng SCM đều sẽ đơn giản hóa việc di chuyển cuối cùng và giúp kiểm tra dễ dàng hơn khi bạn không phá vỡ bất cứ điều gì khi di chuyển. Quyết định bắt đầu thử nghiệm ngay bây giờ khi môi trường của bạn đơn giản là một lựa chọn sáng suốt. Lưu ý, bạn cũng có thể sử dụng các công cụ này (tôi thích Ansible vì tính đơn giản và không phụ thuộc vào các tác nhân cài đặt trên mỗi hộp) để cung cấp hệ thống Dev của bạn).
Bryan 'BJ' Hoffpauir Jr.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.