Как стать автором
Обновить
5
0
Хитрин Сергей @serhit

Бизнес-анализ, управление проектами, разработка

Отправить сообщение

Сервис проверки пользовательских файлов «powered by pytest»: нужно повозиться, но оно того стоит

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.4K

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

Пользователю нужно возвращать информацию "что не так с файлом": какую проверку не прошел файл и где конкретно в файле проблемные данные.

Эта задача - про качество данных и очень напоминает тестирование. Так почему не использовать фреймворк тестирования pytest, и не написать тесты на каждый проверяемый аспект и для каждого типа файлов? Однако, есть небольшое "но". проверка должна быть реализована в качестве сервиса, чтобы встраиваться в более широкий процесс обработки пользовательских документов.

Давайте посмотрим, как заставить pytest работать внутри сервиса. Это не так тривиально, как может показаться на первый взгляд.

Читать далее
Всего голосов 8: ↑6 и ↓2+7
Комментарии7

Как поставить и контролировать цели на «текучку» по SMART и не забывая про мотивацию

Время на прочтение12 мин
Количество просмотров6.3K

Практически повсеместно в производственных и коммерческих компаниях отделы ИТ сталкиваются со смешанной нагрузкой - часть “проектная”, часть “операционная”.

Как правило, операционная часть воспринимается сотрудниками как неинтересная и рутинная. Однако, от качества выполнения этих рутинных работ зависит то, как внутренние клиенты воспринимают отдел ИТ. Своевременно-ли доставляются сервисы? Быстро-ли устраняются инциденты? Поддерживается-ли адекватный уровень коммуникации с заказчиком во время разрешения проблемы? И так далее.

Понятно, что все ожидания внутренних клиентов от отдела ИТ должно выражаться в виде SLO (Service Level Objectives). Вот только количество сервисов и SLO со времененем растет, и сама задача контроля становится тяжелой рутиной.

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

В этой статье я хочу поделиться практикой постановки и внедрения S.M.A.R.T. (Specific, Measurable, Attainable/Achievable, Relevant, Time-bounded) целей для операционной части загрузки отдела. Как мы к этому подходили, какие результаты получили и какие побочные эффекты наблюдаем.

Читать далее
Рейтинг0
Комментарии18

Преобразование офисных файлов в текст

Время на прочтение4 мин
Количество просмотров5.3K

Представление документа в виде простого текста понадобится для анализа его содержимого: индексирования и поиска, классификации, предварительной проверки.

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

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

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

Домашний кластер на Dask

Время на прочтение9 мин
Количество просмотров6.7K

image


Я недавно проводил исследование, в рамках которого было необходимо обработать несколько сотен тысяч наборов входных данных. Для каждого набора — провести некоторые расчеты, результаты всех расчетов собрать вместе и выбрать "лучший" по некоторым критериям. По сути это bruteforce перебор. Тоже самое происходит при подборе параметров ML моделей с помощью GridSearch.


Однако, с некоторого момента размер вычислений может стать для одного компьютера великоват, даже если запускать ее в несколько процессов с помощью joblib. Или, если сказать точнее, он становится слишком долгим для нетерпеливого экспериментатора.


И поскольку в современной квартире сейчас можно найти больше одного "недогруженного" компьютера, а задача явно подходит для массового параллелизма — пора собрать свой домашний кластер и запускать такие задачи на нем.

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии4

Поиск похожих инцидентов и заявок. Метрики и оптимизация

Время на прочтение8 мин
Количество просмотров2K

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


Для того, чтобы двигаться дальше и находить более качественные модели, необходимо было сначала оценить работу текущей модели. Также необходимо было выбрать критерии, по которым две модели можно было бы сравнить между собой.


Под катом я расскажу про:


  • сбор отзывов на рекомендации
  • выработку метрик для оценки качества рекомендаций
  • построение цикла оптимизации модели
  • полученные инсайты и новую модель
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

«Вроде такое уже было?» Поиск похожих инцидентов и заявок

Время на прочтение7 мин
Количество просмотров4.1K

Всем, кто провел определенное время, поддерживая системы, знакомо чувство déjà vu при получении новой заявки: "вроде такое было, вроде решали, но как конкретно — не помню". Можно потратить время, покопаться в предыдущих заявках и постараться найти похожие. Это поможет: инцидент будет закрыт быстрее, а может быть даже удастся обнаружить глубинную причину и закрыть проблему раз и навсегда.


У "молодых" сотрудников, только присоединившихся к команде, такой истории в голове еще нет. Они, скорее всего, не знают, что аналогичный инцидент, например, произошел полгода-год назад. И решил тот инцидент коллега из соседней комнаты.


Скорее всего, "молодые" сотрудники не станут искать в базе инцидентов что-то похожее, а будут решать проблемы "с нуля". Потратят больше времени, приобретут опыт и в следующий раз справятся быстрее. А может быть — сразу забудут под потоком новых заявок. И в следующий раз все повторится снова.


Мы уже используем ML-модели для классификации инцидентов. Чтобы помочь нашей команде эффективнее обрабатывать заявки, мы создали еще одну ML-модель для подготовки списка "ранее закрытые похожие инциденты". Детали — под катом.

Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии16

Применение расширяемых политик Pull Request в VSTS для поддержки процесса разработки

Время на прочтение6 мин
Количество просмотров1.6K

Часто в рамках проверки Pull Request, помимо, собственно, code review, возникает необходимость проделывать набор рутинных проверок. Некоторые проверки могут касаться оформления PR. Другие — проверять смежные условия, которые составляют основу процесса принятия изменений.
Если рутинные проверки не автоматизированы, человек может начать их забывать или обходить. Потому, что рутина — это скучно.


Visual Studio Team Services предлагает довольно удобную инфраструктуру для обработки Pull Request. Сюда входят настраиваемые политики merge builds, назначение ревьюеров, правила слияния принимаемых изменений. Все это дополненной удобной системой обсуждения и комментирования кода.


Мощнейшим инструментом расширения процесса Pull Request являются внешние подключаемые политики.


Об их создании и использовании и поговорим (и посмотрим код)

Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

Трансформация процессов разработки и доставки для унаследованного приложения

Время на прочтение12 мин
Количество просмотров2.3K

Наша команда отвечает за эксплуатацию и развитие большого корпоративного продукта.
В начале 2017 года, передохнув от крупного внедрения и перечитав "lessons learned", мы твердо решили пересмотреть процесс разработки и доставки нашего приложения. Нас беспокоила низкая скорость и качество доставки, не позволяя нам обеспечивать уровень сервиса, который от нас ожидают заказчики.


Пора было переходить от слов к делу — менять процессы.


В этой статье будет кратко рассказано о том с чего мы начинали, что делали, какая ситуация сейчас, с какими трудностями столкнулись, что пришлось пока оставить за скобками, что ещё планируем делать.

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

Анализ заявок на обслуживание с помощью машинного обучения

Время на прочтение6 мин
Количество просмотров5.4K

В рамках поддержки продукта мы постоянно обслуживаем обращения от пользователей. Это — стандартный процесс. И как любой процесс, его нужно регулярно критически оценивать и улучшать.


Мы знаем о некоторых систематически проблемах, которые хорошо-бы решить и, по возможности, без привлечения дополнительных ресурсов:


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

Решение любой из указанных задач будет положительно влиять на скорость обработки заявок.


Применение машинного обучения, в приложении к анализу содержания заявки, выглядит как реальная возможность улучшить процесс диспетчеризации.


В нашем случае задачу можно сформулировать следующими задачами классификации:


  1. Убедиться, что запрос корректно отнесен к:
    • конфигурационной единице (одна из 5 в рамках приложения или "другие")
    • категории обслуживания (инцидент, запрос информации, сервисный запрос)
  2. Оценить ожидаемое время на закрытия запроса (как высокоуровневый индикатор "сложности").
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии12

Процесс «Управление релизами» — для постпроектной поддержки или развития продукта

Время на прочтение13 мин
Количество просмотров31K
После формального окончания проекта — работа не заканчивается, а только начинается. Необходимо реализовать функционал который не вошёл в основное содержание проекта, исправить некритичные ошибки которые не препятствовали запуску, и обслуживать поток изменений и инцидентов, сопутствующих процессу эксплуатации. При этом, необходимо организовать процесс таким образом, чтобы учитывать приоритеты запросов, технические зависимости, оставлять время на анализ требуемых изменений.

Процесс «управление релизами», один из стека процессов ITSM, как раз и предлагает решение для формальной приоритизации и группировки запросов пользователей (запросов на изменения, инцидентов) в общие пакеты доставки — «релизы».

В данной статье кратко раскрываются следующие темы:

  • применимость процесса — когда имеет смысл его внедрять
  • основные этапы процесса, активности, вовлеченные ресурсы и результаты
  • планирование релизов: календарь, объем, параллельное выполнение
  • некоторые проблемы доставки в релизах

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

Генерация автоматических тестов: Excel, XML, XSLT, далее — везде

Время на прочтение7 мин
Количество просмотров15K

Проблема


Есть определенная функциональная область приложения: некая экспертная система, анализирующая состояние данных, и выдающая результат — множество рекомендаций на базе набора правил. Компоненты системы покрыты определенным набором юнит-тестов, но основная «магия» заключается в выполнении правил. Набор правил определен заказчиком на стадии проекта, конфигурация выполнена.
Более того, поскольку после первоначальной приемки (это было долго и сложно — потому, что “вручную") в правила экспертной системы регулярно вносятся изменения по требованию заказчика. При этом, очевидно, неплохо — бы проводить регрессионное тестирование системы, чтобы убедиться, что остальные правила все еще работают корректно и никаких побочных эффектов последние изменения не внесли.

Основная сложность заключается даже не в подготовке сценариев — они есть, а в их выполнении. При выполнении сценариев “вручную", примерно 99% времени и усилий уходит на подготовку тестовых данных в приложении. Время исполнения правил экспертной системой и последующего анализа выдаваемого результата — незначительно по сравнению с подготовительной частью. Сложность выполнения тестов, как известно, серьезный негативный фактор, порождающий недоверие со стороны заказчика, и влияющий на развитие системы («Изменишь что-то, а потом тестировать еще прийдется… Ну его...»).

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

Под катом будет рассказано об одном подходе, реализующим данную идею — с использованием MS Excel, XML и XSLT преобразований.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии2

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность