Информационный портал по безопасности » Программирование » Веб-разработка » Что делать, если не знаешь, как работает ПО

 

Что делать, если не знаешь, как работает ПО

Автор: admin от 20-11-2017, 12:15, посмотрело: 317

Что делать, если не знаешь, как работает ПО
Источник



Мы тоже не любим софт, который неизвестно как работает. Если программа - черный ящик, при каждой непонятной ситуации остается ровно два варианта: попробовать приложить подорожник или обратиться к производителю. Но, во-первых, мы не знаем, где растет столько подорожника, а, во-вторых, обращаться по разным мелочам к вендору тоже как-то не ацаца.



Несколько лет назад, у одного из наших заказчиков нашелся ровно такой софт: на входе запросы, на выходе ответы, а внутри непонятно что. Называется автоматизированная банковская система или АБС. Но по сути это база данных, которая в общем случае обрабатывает запросы из процессинга и возвращает результат. В результате содержится ответ: может банк провести эту операцию или нет. Подступиться к этой базе данных с внешним запросом нет никакой возможности в силу ее архитектурных ограничений. В одном из недавних проектов снова столкнулись с таким же ПО в ритейле и подумали, что пора бы уже поделиться своими наработками.



В прошлой статье мы рассказывали, как прослушивание трафика помогло одному из клиентов Техносерва отловить внутренние проблемы софта. В этой будет технический разбор той давней задачи (руки-то помнят), а в конце — два важных бенифита такого вида мониторинга.



Специальный продукт для анализа трафика MicroFocus RUM (подробнее о нем в предыдущей статье по ссылке выше), конечно, поддерживает разнообразные сетевые протоколы, но вот именно те, что нам нужны - нет. А нужно было прослушать служебные RPC-запросы от внутрибанковских систем к АБС и трафик по протоколу ISO8583 от внешних устройств (банкоматов и POS-терминалов) всё к той же АБС.



Анализируем данные по протоколу RPC



Постановка задачи от заказчика выглядела примерно так:



«Парни, вот вам трафик за несколько часов для анализа. Тут у меня от разных банковских систем к АБС бегают транзакции в виде запросов-ответов. Нужно знать время выполнения каждого такого запроса, получать значения некоторых полей и считать количество ошибок. На выходе нужен отчет в табличном виде».



Самым сложным в этой задаче был анализ полученного трафика. Поиск последовательностей и разделение потока на отдельные транзакции потребовало кропотливого труда. После анализа выяснилось, что каждая транзакция это XML-пакет с одинаковым идентификатором для запроса и ответа, а также набором других полей. На скриншоте пример этого трафика в интерфейсе Wireshark и соответствующий ему XML.



Что делать, если не знаешь, как работает ПО


Чтобы RUM научился понимать различные типы сетевых данных, нужно эти данные ему описать. Для этого мы разработали скрипт на C++. Ниже код для разбора RPC-трафика.





На выходе получился такой элегантный отчет:



Что делать, если не знаешь, как работает ПО


Заказчик доволен, а мы получили новые навыки в продукте.



Анализируем данные по протоколу ISO8583



Задача аналогична предыдущей с небольшими изменениями:



«Парни, вот вам новая порция трафика. У меня есть агрегатор, который собирает транзакции с моих банкоматов и POS-терминалов. Все транзакции летят в АБС. Хочу знать — сколько у меня было таких транзакций, их статус и время выполнения каждого запроса. На выходе нужен отчет в виде графика».



Как и в предыдущей задаче, пакеты сетевого трафика представляли из себя XML. Только со значительно большим количеством полей. С помощью нового кода мы отсеяли все ненужное и получили примерно такой же XML для анализа и подсчета транзакций как в случае с RPC.

На выходе заказчик получил график с количеством транзакций. На скриншоте ниже отображен недельный интервал. Теперь любое аномальное поведение этого графика трактуется системой как сбой. Мы настроили корреляцию событий с другими приложениями бизнес-процесса, и администраторы могут сразу увидеть возможную причину отклонения от нормы. Разумеется, в разные дни поведение графика может отличаться. Например, в субботу и воскресенье нет проседаний в дневное время по количеству транзакций - это норма для выходных дней и событие не генерируется. Вот такой искусственный интеллект.



Что делать, если не знаешь, как работает ПО


За время работы с системами мониторинга пользовательского трафика мы выявили два важных преимущества (их может и больше, но пока остановились на двух):




  • Не создается дополнительная нагрузка на бизнес-приложение. Нет нужды встраивать в приложение специальные агенты, просить разрешения у админов чего-то там перезагрузить и вообще беспокоить людей по пустякам.

  • Возможность контролировать «черные ящики». Таких приложений много и не всегда понятно как за ними следить. Пример - наша ситуация с АБС.



  • Приглашаем пройти опрос, поделиться в комментариях примерами приложений-черных ящиков и рассказать, как вы их контролируете.



    Автор статьи Антон Касимов, архитектор систем мониторинга, компания «Техносерв».

    Источник: Хабрахабр

    Категория: Программирование / Веб-разработка

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent