Как отслеживать системные зависимости?
введение
в моей текущей организации, у нас есть много настольных и веб-приложений все кормления друг в друга в какой-то момент. При поиске старых приложений или создании новых приложений очень сложно попытаться вспомнить, какая система полагается на другие системы для работы. Я не говорю о программных зависимостях, таких как DLL и изображения, я говорю о целых системах, таких как финансовая система, зависящая от системы HR так далее.
У Меня Вопрос
какой лучший способ отслеживать, как одна вся система зависит от другой?
ответ может предложить либо метод выполнения вышеизложенного, программный пакет или методы документации.
в моем конкретном случае, много означает более 20 веб-и настольных приложений более десятка серверов.
10 ответов
Я бы сказал, чтобы четко указать, что в вашем документе дизайна архитектуры. Есть некоторые хорошие инструменты для этого, как Enterprise Architect. Этот инструмент позволяет создавать диаграммы с использованием стандарта UML для четкого и наглядного описания этих зависимостей.
лучший источник информации обычно находится в файлах конфигурации. Обычно это строки подключения, URL-адреса веб-служб и т. д., которые дадут хорошее представление о внешних зависимостях.
другой метод с помощью профилирования и трассировки и применения фильтров, мы можем легко отслеживать любые внешние вызовы. В большинстве случаев зависимость находится на уровне базы данных, и проверка связанных серверов и отслеживание их зависимостей могут извлечь много информации.
Я не уверен, что есть какой-либо автоматический способ получить эту информацию, особенно если системы находятся на нескольких платформах. Для документирования всего этого потребуется много ручной работы.
Это вид применения мы производим на Tideway Systems, и которые многие крупные организации используют именно для этой цели. Продукт можно использовать для обнаружения недвижимости, а возможности моделирования-для описания бизнес-приложений (которые обычно состоят из нескольких компонентов программного обеспечения и серверов span).
похоже, вы имеете право использовать бесплатную версию сообщества Foundation, которую вы можете использовать на серверах до 30-просто скачать его и проверить его. Тогда дайте нам знать, что вы думаете, пожалуйста!
отказ от ответственности: я запускаю группу разработки в Tideway. Продукт очень классный IMO, хотя я сам не написал ничего из этого напрямую:)
выключите каждую машину по одному и посмотрите, что ломается.. ; p
Если серьезно, нет простого ответа на этот вопрос. С помощью коллекции систем вы можете создать диаграмму, показывающую основные зависимости, но она не будет иметь большого значения, если у вас нет представления о том, что такое зависимость. Обычно ваша цель-определить, что вам нужно "переоценить" при изменении другой системы, а не какие машины вы можете отключить наугад. Но такого рода информация требует большого количества деталей и трудно накапливается в первую очередь.
все это в конечном итоге заканчивается в ситуации, когда вы системы впереди вашей автоматизации. Вы никогда не найдете инструмент автоматизации, завернутый в термоусадочную пленку, который не отстает. С другой стороны, с таким количеством деталей необходимо все, что может позаботиться о половине или даже трети рабочей нагрузки будет ценным.
Это хороший вопрос-мы боремся с этим каждый раз, кажется.
то, что мы пытались сделать за последний год или около того, это быть "безжалостными" по двум вещам:
автоматизация -- если вы автоматизируете его и часто строите / развертываете, то процесс автоматизации будет иметь тенденцию получать все правильно большую часть времени (настройки конфигурации и т. д.)
wiki, wiki, wiki -- мы стараемся быть жесткими в сохранении команды и проекта wiki современный.
любопытно увидеть другие ответы.
звучит как работа для обнаружения предприятия, которое автоматизировано, насколько это возможно. В зависимости от размера организации и среды существуют различные решения. Для больших ландшафтов вам все равно понадобится CMDB (база данных управления конфигурацией). Такие продукты, как HP универсальный CMDB может обнаруживать и отслеживать зависимости в крупномасштабных средах.
Е. Г. он может обнаружить отношения между системой SAP и базы данных и хозяева на котором работают распределенные системы и показывают вам зависимости. Более важно, что он может предупредить вас в случае, если некоторые несанкционированные изменения сделаны в реальной среде.
поэтому ответ зависит от того, что вы считаете "много".
два вида проблем, связанных:
а.) для тех, кто хочет знать, как определить зависимости для каждого компонента
b.) для тех, кто хочет отслеживать взаимозависимости и их приоритеты в системе компонентов. (например, какой компонент сначала устанавливается в тестовую среду и т. д...)
Если у вас есть ряд компонентов, для каждого из которых вы знаете зависимости, и вы хотите порядок зависимостей для всего списка компоненты, вы можете найти модуль Perl под названием Algorithm::Dependency:: Ordered для некоторого значения. Существуют другие связанные модули, которые могут работать с записями баз данных компонентов и т. д. или даже с простыми файловыми записями. Но предупреждение: у меня были проблемы с тем, чтобы заставить это работать.
альтернативно, инструмент построения графиков может иметь значение.
Это функция группы "управление конфигурацией". Чтобы начать работу, вам нужно будет поговорить с "экспертами" в вашей компании и создать карту/график приложений. Используйте graphviz / dot для создания диаграммы, это не будет красиво, но это даст вам визуальное представление зависимостей.
вот пример:
digraph g {
rankdir=LR;
app1->app2->db1;
app1->app3;
}
надеюсь, это поможет,
отображение системных зависимостей-это одно. Истинные настройки окружающей среды, uid, пароли, настройки олицетворения, имена баз данных и другие данные, которые меняются от разработки к qa к uat к производству, являются реальной проблемой.
кто хранит / помнит их все?
разработчик не знает, на каком производственном сервере(ах) будет находиться его приложение. Он только документирует имя своей базы данных разработки, uid, pwd и описывает свои таблицы базы данных, строки conn, так далее.
после того, как он зарегистрирован в репозитории кода и перенесен в среду QA, кто является хранителем данных, необходимых для обновления этого файла конфигурации с соответствующими значениями?
снова при миграции в QA и UAT, кто?
кто несет ответственность за информирование следующей миграционной группы о том, что необходимо изменить?
в моей компании, это то, что вызывает у нас наиболее головная боль. К тому времени, когда он получает одобрение внутреннего контроля изменений процесс и запрос на миграцию создаются для переноса приложения в рабочую среду, все, что требуется, это один параметр конфигурации, который будет забыт, чтобы разрушить всю реализацию, и это происходит все время, потому что четкие линии ответственности не нарисованы (в моем opnion).
помимо ответственности, я думаю, является центральным хранилищем этой информации.
ie. Система, которая хранит все параметры конфигурации для всех проектов / приложений и на основе "роль" вы можете/не можете видеть фактические значения.
разработчик завершает сборку и создает запрос на миграцию в "системе". Человек QA получает уведомление о том, что сборка ### готова. Человек QA входит в "систему" и получает инструкции по миграции. Теперь они четко знают, что нужно сделать, и они просят код-проверить и миграционный процесс.
повторите для UAT и в конечном счете prod.
когда кто-то строит эту систему миграции дайте мне знать, потому что это поможет многим людям.
может быть, я построю его сам... Кто хочет заключить со мной контракт?
Я был новичком в работе, и в качестве первой задачи было предложено определить системные зависимости. Оказалось, что мой босс имел в виду, чтобы пойти поговорить с людьми - так я узнаю, кто есть кто. Я думал, мой босс хочет, чтобы я написал компьютерную программу для этого. Так я и сделал.
Мое предположение состояло в том, что если программа является клиентом другой программы (службы или сервера), то netstat -pant
и netstat -panu
тогда grep for ESTABLISHED даст вам это. Вы можете определить службы по grepping выход для прослушивания.
это только частичное решение. Да, он говорит вам, какие приложения говорят с какими приложениями, но есть и другие зависимости. Так, например, некоторые приложения используют DNS для поиска своих серверов, в то время как другие жестко закодированы или находятся в файлах конфигурации. Все, что использует TCP или UDP, зависит от IP. В большинстве мест IP зависит от ARP и Ethernet или WiFi. Все, что зависит от службы в другой локальной сети, зависит, по крайней мере, от один маршрутизатор.
Если у вас есть балансировщик нагрузки или какой-то кластер, то проблема становится более интересным. Если я служба, которая выходит из балансировщика нагрузки, и либо "реальный" сервер за брандмауэром идет вниз, то служба деградирует, но все еще работает.
это становится еще более интересным, потому что службы (программы) зависят от серверов (оборудования). Серверы, в свою очередь, зависят от мощности и кондиционирования воздуха.
Так как мое мышление вышло из контроль, все стало ужасно сложным, и я подумал о создании доменного языка (DSL) для захвата всех этих зависимостей. Я думал, что, например, server_1, server_3, и server_5 на фазы питания 1; server_2, server_4 и server_6 на фазы питания 2. Server_1, Server_3 и server_5 все не одновременно: наверное, Фаза 1 не удалось. Я до сих пор этого не понял. Очевидно, что ситуация может быть представлена направленным графом, я просто я не продумал детали.