Nhiều tập lệnh nhỏ, một kho lưu trữ hoặc nhiều?


15

Một đồng nghiệp và bản thân tôi đã gặp phải một vấn đề mà chúng tôi có nhiều ý kiến.

Hiện tại chúng tôi có một kho lưu trữ git mà chúng tôi đang giữ tất cả các cronjobs của chúng tôi. Có khoảng 20 crons và chúng không thực sự liên quan ngoại trừ thực tế là tất cả chúng đều là các kịch bản python nhỏ và cần thiết cho một số hoạt động. Chúng tôi đang sử dụng một fabric.pytệp để triển khai và một requirements.txttệp để quản lý các yêu cầu cho tất cả các tập lệnh.

Vấn đề của chúng ta là về cơ bản, chúng ta có giữ tất cả các tập lệnh này trong một kho lưu trữ git hay chúng ta nên tách chúng ra khỏi kho riêng của chúng? Bằng cách giữ chúng trong một kho lưu trữ, việc triển khai chúng trên một máy chủ sẽ dễ dàng hơn. Chúng tôi có thể sử dụng chỉ một tệp cron cho tất cả các tập lệnh.

Tuy nhiên điều này cảm thấy sai, vì 20 cronjobs không liên quan về mặt logic. Ngoài ra, khi sử dụng một requirements.txttệp cho tất cả các tập lệnh, thật khó để tìm ra phần phụ thuộc nào cho một tập lệnh cụ thể và tất cả chúng đều phải sử dụng cùng một phiên bản gói.

Chúng ta có thể tách tất cả các tập lệnh ra thành kho riêng của chúng nhưng điều này tạo ra 20 kho khác nhau cần được ghi nhớ và xử lý. Hầu hết các kịch bản này không lớn lắm và giải pháp đó dường như quá mức cần thiết.

Một câu hỏi liên quan là, chúng ta có sử dụng một tệp crontab lớn cho tất cả các cronjobs, hoặc một tệp riêng cho mỗi tệp không? Nếu mỗi cái có cái riêng, làm thế nào để cài đặt của crontab tránh ghi đè lên 19 cái kia? Điều này cũng có vẻ như là một nỗi đau vì sau đó sẽ có 20 tệp cron khác nhau để theo dõi.

Nói tóm lại, câu hỏi và vấn đề chính của chúng ta là chúng ta có giữ tất cả chúng chặt chẽ như một kho lưu trữ hay chúng ta tách chúng ra khỏi kho lưu trữ của riêng chúng với các yêu cầu riêng của chúng và fabfile.py? Chúng tôi cảm thấy như có lẽ chúng tôi cũng đang xem xét một số giải pháp thực sự đơn giản. Có cách nào dễ dàng hơn để giải quyết vấn đề này không?


Là các tập lệnh cron công việc liên quan đến các ứng dụng khác, hoặc theo nghĩa đen chỉ là một bãi bỏ các tập lệnh tiện ích?
Greg Burghardt

Tôi không thấy lý do tại sao có chúng trong cùng một kho lưu trữ có nghĩa là chúng sẽ cần chia sẻ cùng một yêu cầu? Mỗi người có thể có một yêu cầu khác nhau nếu bạn đặt chúng trong các thư mục con riêng biệt của kho lưu trữ ...
Sean Burton

Câu trả lời:


16

Trừ khi có một lý do cụ thể để bạn nghĩ rằng mỗi người trong số họ đều xứng đáng nhận được một repo bất đắc dĩ (Họ sẽ phát triển nhiều chứ? Có lẽ là không!) Có vẻ hợp lý hơn khi đặt tất cả chúng vào một repo và tự cứu mình khỏi rắc rối của việc nhân bản tất cả trong số họ từ 20 repos.

Giữ mỗi người trong một repo riêng dường như là con đường tạo ra một vấn đề mà vấn đề không tồn tại.

Đừng tạo thêm việc cho bản thân (và những người khác).


2
Đồng ý - miễn là các tập lệnh được đặt tên tốt và sự trùng lặp được giữ ở mức thấp giữa chúng (tức là các công cụ thư viện dùng chung) để các tìm kiếm grep không quá lộn xộn, tôi nghĩ rằng điều này hoạt động.
Daniel Staple

1

Trừ khi có một lý do thực sự tốt cho việc phân chia (hiệu suất; mối quan tâm bảo mật / tổ chức áp đảo, v.v.), bản năng của tôi là giữ các tài liệu nguồn cùng nhau trong cùng một kho lưu trữ.

Việc tách các hệ thống ra thành các kho riêng biệt thường tạo ra các rào cản ngăn cản việc tái sử dụng; vì việc tái sử dụng chỉ là cách duy nhất mà một tổ chức phải khấu hao chi phí phát triển, nên bất cứ điều gì cản trở việc tái sử dụng đều là một điều tồi tệ.

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.