2008-09-30 29 views
14

Giới thiệuCách theo dõi phụ thuộc hệ thống?

Trong tổ chức hiện tại của mình, chúng tôi có nhiều ứng dụng dành cho máy tính để bàn và web đều cho phép lẫn nhau vào một thời điểm nào đó. Khi tìm kiếm các ứng dụng cũ hoặc tạo ra các ứng dụng mới, việc thử và nhớ hệ thống nào dựa vào các hệ thống khác để làm việc rất khó khăn. Tôi không nói về phụ thuộc phần mềm như của DLL và hình ảnh, tôi đang nói về toàn bộ hệ thống giống như một hệ thống tài chính phụ thuộc vào hệ thống nhân sự, vv

Câu hỏi của tôi

Đó là một trong những cách tốt nhất để theo dõi toàn bộ hệ thống phụ thuộc vào hệ thống khác như thế nào?

Câu trả lời có thể đề xuất phương pháp làm như trên, gói phần mềm hoặc kỹ thuật tài liệu.

Trong trường hợp cụ thể của tôi, Nhiều hơn có nghĩa là hơn 20 ứng dụng web và máy tính để bàn trên một chục máy chủ.

+3

Nhắc tôi về những gì chúng tôi đã từng nói với nhau trong công việc cuối cùng của tôi - nếu có ai có thể nhận được bản sao chép sản phẩm của chúng tôi, họ xứng đáng với nó! – Benjol

Trả lời

6

Tôi sẽ nói rõ ràng rằng trên tài liệu thiết kế kiến ​​trúc của bạn. Có một số công cụ tốt cho việc này như Enterprise Architect. Công cụ này cho phép bạn tạo các sơ đồ bằng cách sử dụng tiêu chuẩn UML để mô tả các phụ thuộc này một cách rõ ràng và trực quan.

4

Nguồn thông tin tốt nhất thường được tìm thấy trong tệp Config. Điều này thường có các chuỗi kết nối, các url dịch vụ web, vv sẽ đưa ra ý tưởng tốt về các phụ thuộc bên ngoài.

Một kỹ thuật khác là sử dụng lược tả hoặc truy tìm và áp dụng bộ lọc, chúng tôi có thể dễ dàng theo dõi mọi cuộc gọi bên ngoài. Hầu hết các trường hợp, sự phụ thuộc nằm trong lớp cơ sở dữ liệu và việc kiểm tra các máy chủ được liên kết và theo dõi các phụ thuộc của chúng có thể khai quật rất nhiều thông tin.

Tôi không chắc liệu có bất kỳ cách tự động nào để nhận thông tin này đặc biệt là nếu các hệ thống trên nhiều nền tảng. Rất nhiều công việc thủ công sẽ được tham gia để ghi lại tất cả những điều đó.

1

Có vẻ như một công việc cho một khám phá doanh nghiệp tự động đến mức có thể. Tùy thuộc vào quy mô tổ chức của bạn và môi trường có các giải pháp khác nhau. Đối với cảnh quan lớn, bạn sẽ cần một CMDB (Cơ sở dữ liệu quản lý cấu hình). Các sản phẩm như HP Universal CMDB có thể khám phá và theo dõi các phụ thuộc trong môi trường có quy mô lớn.

Ví dụ: nó có thể khám phá mối quan hệ giữa một hệ thống SAP và các cơ sở dữ liệu liên quan và các máy chủ mà trên đó các hệ thống phân tán đang chạy và hiển thị cho bạn các phụ thuộc. Quan trọng hơn, nó có thể cảnh báo bạn trong trường hợp một số thay đổi trái phép được thực hiện cho môi trường thực tế.

Vì vậy, câu trả lời phụ thuộc vào những gì bạn coi là 'nhiều'.

+0

Trong trường hợp cụ thể của tôi, Nhiều người có nghĩa là hơn 20 ứng dụng web và máy tính để bàn trên một chục máy chủ. – GateKiller

+0

Vâng, trong trường hợp đó, Universal CMDB sẽ là cách quá đắt đối với bạn. – Yaba

2

Đây là một câu hỏi hay - chúng tôi đấu tranh với điều này mọi lúc, có vẻ như vậy.

gì chúng tôi đã cố gắng để làm trong năm qua hay như vậy là được "tàn nhẫn" vào hai điều:

  1. tự động hóa - nếu bạn tự động hóa nó và xây dựng/triển khai thường xuyên, sau đó quá trình tự động hóa sẽ có xu hướng nhận được nhiều thứ ngay từ đầu (cài đặt cấu hình, v.v.)

  2. wiki, wiki, wiki - chúng tôi cố gắng giữ vững đội ngũ và dự án wiki được cập nhật.

Tò mò để xem các phản hồi khác.

4

Đây là loại ứng dụng chúng tôi sản xuất tại Tideway Systems và nhiều tổ chức lớn chỉ sử dụng cho mục đích này. Bạn có thể sử dụng sản phẩm để khám phá bất động sản của mình và sử dụng các khả năng mô hình hóa để mô tả các ứng dụng kinh doanh của bạn (thường bao gồm nhiều phần mềm và các máy chủ span).

Có vẻ như bạn đủ điều kiện sử dụng Community Edition Foundation miễn phí, bạn có thể sử dụng tối đa 30 máy chủ - chỉ download và kiểm tra. Sau đó, cho chúng tôi biết những gì bạn nghĩ rằng xin vui lòng!

Tuyên bố từ chối trách nhiệm: Tôi điều hành nhóm phát triển tại Tideway. Sản phẩm này là rất mát mẻ IMO, mặc dù tôi đã không viết bất kỳ của nó bản thân mình trực tiếp :)

+0

Vì vậy, phần mềm này về cơ bản sẽ quét mã nguồn của tôi và quyết định ứng dụng nào phụ thuộc vào hệ thống nào? – GateKiller

+0

Không, nó không nhìn vào mã nguồn nhưng nhìn vào các hệ thống đang chạy. Từ danh sách quy trình, tập tin cấu hình, kết nối mạng, vv, nó gây ra sự hiện diện của sự vật và sự phụ thuộc của chúng. –

4

Tắt mỗi máy từng người một và xem những gì phá vỡ ..; p

Mặc dù nghiêm túc, không có đơn giản trả lời cho câu hỏi này. Với một bộ sưu tập các hệ thống, bạn có thể tạo một sơ đồ hiển thị các phụ thuộc cơ bản, nhưng nó sẽ không có nhiều ý nghĩa trừ khi bạn có ý tưởng về sự phụ thuộc là gì. Thông thường, mục tiêu của bạn là xác định những gì bạn cần "xác nhận lại" khi bạn thay đổi hệ thống khác, không phải máy nào bạn có thể tắt một cách ngẫu nhiên. Nhưng loại thông tin đó đòi hỏi một lượng lớn chi tiết và rất khó để tích lũy ngay từ đầu.

Tất cả điều này cuối cùng sẽ kết thúc trong một tình huống mà bạn là hệ thống phía trước tự động hóa của bạn. Bạn sẽ không bao giờ tìm thấy một công cụ tự động hóa bị thu hẹp. Mặt khác với rất nhiều chi tiết cần thiết bất cứ điều gì có thể chăm sóc một nửa hoặc thậm chí một phần ba khối lượng công việc sẽ có giá trị.

0

Ánh xạ hệ thống phụ thuộc là một điều. Cài đặt môi trường thực, mật khẩu, mật khẩu, cài đặt mạo danh, tên cơ sở dữ liệu và các dữ liệu khác thay đổi từ phát triển thành qa sang sản xuất là thách thức thực sự.

Ai lưu trữ/ghi nhớ tất cả?

Nhà phát triển không biết máy chủ sản xuất nào sẽ đăng ký. Ông chỉ ghi tên cơ sở dữ liệu phát triển của mình, uid's, pwd và mô tả các bảng cơ sở dữ liệu, các chuỗi liên kết, v.v.

Sau khi được kiểm tra vào môi trường QA, người quản lý dữ liệu cần thiết để cập nhật các tập tin cấu hình với các giá trị thích hợp?

Một lần nữa khi di chuyển sang QA và UAT, ai?

Trách nhiệm của ai là thông báo cho nhóm di chuyển tiếp theo về những gì cần phải thay đổi?

Trong công ty của tôi, đây là nguyên nhân khiến chúng tôi đau đầu nhất. Vào thời điểm nó được chấp thuận bởi quy trình kiểm soát thay đổi nội bộ và yêu cầu di chuyển được tạo ra để di chuyển ứng dụng vào môi trường sản xuất, tất cả những gì cần thiết là quên một thiết lập cấu hình, và nó luôn xảy ra bởi vì rõ ràng dòng trách nhiệm không được rút ra (trong opnion của tôi).

Ngoài trách nhiệm tôi nghĩ là kho lưu trữ trung tâm cho thông tin này.

tức là. Một hệ thống lưu trữ tất cả các cài đặt cấu hình cho tất cả các dự án/ứng dụng và dựa trên "vai trò" của bạn, bạn có thể/không thể thấy các giá trị thực tế.

Nhà phát triển hoàn thành bản dựng của mình và tạo yêu cầu di chuyển trong "hệ thống". Người QA nhận được thông báo rằng việc xây dựng ### đã sẵn sàng. Người QA đăng nhập vào "hệ thống" và truy xuất các hướng dẫn di chuyển. Bây giờ họ rõ ràng biết những gì cần phải được thực hiện, và họ đang mạo hiểm quá trình kiểm tra và di chuyển mã.

Lặp lại cho UAT và cuối cùng là sản phẩm.

Khi ai đó xây dựng hệ thống di chuyển này cho tôi biết, vì điều đó sẽ giúp ích cho nhiều người.

Có lẽ tôi sẽ tự xây dựng ... Ai muốn ký hợp đồng với tôi?

1

Hai loại của các vấn đề liên quan đến:.

a) cho những ai muốn biết làm thế nào để xác định phụ thuộc cho mỗi thành phần

b) đối với những người muốn theo dõi liên phụ thuộc và ưu tiên của họ trong. một hệ thống các thành phần. (như trong đó, thành phần nào được cài đặt vào môi trường thử nghiệm đầu tiên, v.v ...)

Nếu bạn có hàng loạt thành phần, mỗi thành phần bạn biết phụ thuộc và bạn muốn có thứ tự phụ thuộc cho toàn bộ danh sách của các thành phần, bạn có thể tìm thấy một mô-đun Perl được gọi là Thuật toán :: Phụ thuộc :: Được sắp xếp để có một số giá trị. Có các mô-đun liên quan khác có thể làm việc với các bản ghi cơ sở dữ liệu của các thành phần, hoặc thậm chí các bản ghi tệp đơn giản. Nhưng một cảnh báo: Tôi đã có vấn đề nhận được điều này để làm việc.

Cách khác, một công cụ vẽ đồ thị có thể có giá trị.

1

Đây là chức năng của nhóm "Quản lý cấu hình". Để bắt đầu, bạn sẽ phải nói chuyện với các "chuyên gia" tại công ty của bạn và tạo ra một bản đồ/đồ thị của các ứng dụng. Sử dụng graphviz/dot để tạo một sơ đồ, nó sẽ không đẹp, nhưng nó sẽ cho bạn một biểu diễn trực quan về các phụ thuộc.

Dưới đây là một ví dụ:

digraph g { 
rankdir=LR; 
app1->app2->db1; 
app1->app3; 
} 

Hope this helps,

+1

Để định dạng mã dưới dạng mã (và không phải là văn bản thuần túy), hãy thêm 4 dấu cách ở đầu dòng. – Artemix

0

tôi mới đến một công việc, và nó đã được đề xuất như một nhiệm vụ đầu tiên mà tôi đi xác định sự phụ thuộc của hệ thống. Nó chỉ ra rằng những gì ông chủ của tôi có nghĩa là để nói chuyện với mọi người - theo cách đó tôi sẽ tìm hiểu ai là ai. Tôi nghĩ ông chủ của tôi muốn tôi viết một chương trình máy tính để làm điều đó. Và vì vậy tôi đã làm. Giả định của tôi là nếu một chương trình là khách hàng của một chương trình khác (dịch vụ hoặc máy chủ), thì netstat -pantnetstat -panu thì grep cho ESTABLISHED sẽ cung cấp cho bạn điều đó. Bạn có thể xác định các dịch vụ bằng cách grepping đầu ra cho LISTENING.

Đây chỉ là một giải pháp một phần. Có, nó cho bạn biết ứng dụng nào nói chuyện với ứng dụng nào, nhưng có những phụ thuộc khác. Vì vậy, ví dụ, một số ứng dụng sử dụng DNS để tìm các máy chủ của chúng, trong khi các ứng dụng khác được mã hóa cứng hoặc trong các tệp cấu hình. Bất cứ thứ gì sử dụng TCP hoặc UDP đều phụ thuộc vào IP. Ở hầu hết các nơi, IP phụ thuộc vào ARP và Ethernet hoặc WiFi. Bất kỳ điều gì phụ thuộc vào một dịch vụ trên mạng LAN khác đều phụ thuộc vào ít nhất một bộ định tuyến.

Nếu bạn có cân bằng tải hoặc một số loại cụm, thì vấn đề trở nên thú vị hơn. Nếu tôi là một dịch vụ xuất phát từ bộ cân bằng tải, và máy chủ "thực" đằng sau tường lửa sẽ ngừng hoạt động thì dịch vụ sẽ bị hỏng nhưng vẫn đang hoạt động.

Nó trở nên thú vị hơn bởi vì các dịch vụ (chương trình) phụ thuộc vào máy chủ (phần cứng). Máy chủ, lần lượt, phụ thuộc vào quyền lực và điều hòa không khí. Vì vậy, khi suy nghĩ của tôi vượt ra khỏi tầm kiểm soát, mọi thứ trở nên phức tạp hơn, và tôi nghĩ về việc tạo ra một ngôn ngữ cụ thể cho miền (DSL) để nắm bắt tất cả những phụ thuộc này. Tôi nghĩ rằng, ví dụ, server_1, server_3 và server_5 đang ở giai đoạn 1; server_2, server_4 và server_6 đang ở giai đoạn quyền lực 2. Server_1, Server_3 và server_5 đều thất bại trong cùng khoảng thời gian: có thể giai đoạn 1 đã thất bại. Tôi vẫn chưa hiểu rõ điều đó. Rõ ràng, tình hình có thể được biểu diễn bằng một đồ thị được chỉ dẫn, tôi đã không làm rõ các chi tiết.

Các vấn đề liên quan