Хабр, привет!

Хочу написать небольшую серию постов о том, как я автоматизировала или ставила на конвейер какие‑то процессы, с разной степенью успешности, из личного и рабочего опыта.

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

Я работала в нескольких высоко‑технологичных компаниях и командах, и далеко не все из моих коллег имели стремление хотя бы попробовать что‑то из рутины перевести в автоматический или полуавтоматический режим.

Кейс №1 — Мой очень старый пример из 2021 года

Я пыталась автоматизировать процесс выгрузки и передачи отчетности.

Не поймите меня не правильно, я люблю людей, и своих коллег тоже (да, они тоже люди). Но когда им резко что‑то надо именно сейчас (ad‑hoc), и таких нуждающихся 30 человек‑ то я люблю их чуть меньше.

Проблема: ограниченность времени и рабочего ресурса

На одной из прошлых работ, где в моем отделе нас аналитиков было всего 2 (AdTech), а потребность в отчетах росла с кол‑вом запущенных рекламных (маркетинговых) компаний и привлеченных клиентов. Каждый месяц ( и/или неделю) вынь да положь всем картинки, отчетность, метрики и предсказания на 100 лет вперед и назад ( или хотя бы месяц) и не только. Компаний, для которых мы это делали было много, очень много, разных размеров и категорий. И как по часам в ПН N‑го числа, все с утра приходили к нам и, как чайки, «дай‑дай» отчет (да, это тоже часть их работы).

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

Для начала поймем, что за процесс и какие в нем этапы:

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

  2. Сбор данных и хранение всего в БД.

  3. Отчет должен появляться на столе у каждого аккаунт‑менеджера в ПН и желательно утром для каждой проведенной (запущенной) рекламе отдельно. ( далее компания будет означать рекламную компанию, а клиент — компанию как организацию)

  4. Аккаунт менеджер «окает» на отчет и рассылает этот отчет своим клиентам

Весь этот процесс занимал в лучшем случае 2–3 часа, в худшем сутки.

Я начала с конца, так как я не хотела, что бы мне начинали писать в 8 утра, а в 11 уже ругались, что отчеты еще не готовы, надо как‑то их готовить заранее, либо ограничить само общение без ущерба продуктивности.

Попытка №1

Например, я пробовала готовить отчеты в ВС вечером накануне.

Но тут сразу 2 минуса: работа в ВС, и то что клиент хочет видеть полный период отчетности (вдруг кто‑то купит телевизор за миллион рублей в 23–30 ВС, а мы не отобразим это в отчете), и даже дельта в 1 день не приемлема.

Попытка №2

Тогда, надо настроить коммуникацию внутри команды, так что бы все работало без пинков. Ну, для начала я решила организовать нам совместное хранилище на (кажется) SharePoint (в целом механика работы с облачными хранилищами везде +/‑ одинаковая).

Там создались папки в отдельности на каждую компанию — внутри папки по годам и месяцам — иерархичные каталоги.

Сейчас бы..

Сейчас, в эти джунгли из папок, я бы добавила еще папку «архив»,куда бы отправляла все устаревшие отчеты с заданной периодичностью.

Раздала я доступы сотрудникам (можно конкретному аккаунт‑менеджеру к папке компании, можно просто всем), доступ к папке с отчетом внешним клиентам выдавался строго регламентированно.

Сейчас бы..

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

Даже после этого шага, стало сильно проще, когда коллеги привыкли, что теперь все хранится и появляется в одном месте. Но скорость появления отчетов это не увеличило. И если коллеги не писали мне в 8 утра, то писали в 12 с вопросом «когда уже будет, скоро?»

А тут, в чем собственно была проблема: БД создавала и поддерживала не я, да и скрипты, которые собирали данные писала не я, это наш легаси код, я пыталась сделать ему искусственное дыхание и оживить. К тому же, формат отчета — был зарегламентирован, так что сильно не разгуляешься.

Актуальные проблемы:

  1. То как собирался отчет требовало личного контроля (вставлять название компании, проверь, что она еще с нами сотрудничает, указывать период и многое другое).

  2. Скорость обращения к БД и получения данных.

    И это были отчеты, где данные только собирались и агрегировались — никаких ML моделей, или посидеть‑подумать как посчитать бенчмарки. Только рукопашка.

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

Попытка №3

Почесала я затылок и предложила вот что, а давай мы будем перед началом скрипта всегда обновлять список текущих активных клиентов, их проведенных компаний, и запускать для каждого скрипт по сбору отчетности, максимально формализуем вариативную часть, пропишем правила (практически if else).

То есть, я хотела свести наше вмешательство в работу, уже запущенной программы, к минимуму. Что смогли — сделали. Стало еще лучше, но не достаточно хорошо, к сожалению, для правильной отчетности нужно было работать с большим кол‑вом переменных, которые. Не совсем или совсем не поддавались формализации. Так что случались исключения из наших правил, а соответственно и ошибки. А скрипт был один (шаблонный), и при 1-й же ошибке все упадало, а отчеты переставали формироваться.

Пока мы в режиме мультизадачности ее (ошибку) заметим — пройдет какое‑то время, а значит, мы опять получим десяток » а когда отчет?».

Попытка №4

«Давай игнорировать ошибки» — бодро предложила я, и моя коллега меня поддержала.

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

Создали отдельные скрипты под функционально независимые элементы, которые вызывались по условиям в главном скрипте, для более прозрачного дебага и формирования ruled‑based подхода.

Сейчас бы..

Сейчас, я бы формировала дополнительный текстовый файлик — где просто печатала бы список выгруженных отчетов и того, где встретилась ошибка. Можно его складывать на шарик или присылать на почту аналитикам

В тот момент я с аирфлоу была не знакома, а коллега мне ничего не подсказала. И мы автоматизацию запуска наладили как‑то криво, а может и не наладили, я уже и не помню.

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

Мои общие выводы и личные лайфхаки:

  1. Если что‑то повторяется больше 3-ех раз и имеет тенденцию продолжаться (даже с изменениями или корректировками), то самое время задуматься о каких‑то костылях‑помощниках.

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

  3. Я люблю информирование, многих, конечно, бесят потоки автоматически отправляемых писем — мне они помогают отслеживать процесс и собирать обратную связь.

Как часть само‑иронии прикреплю эту картинку.

Ожидание VS Реальность
Ожидание VS Реальность

В следующем посте расскажу, уже с примерами кода (надеюсь):

  1. Как мы делали автопроверку домашек.

  2. Заставляли менеджеров считать циферки и вписывать их в табличку.

  3. Может быть еще что-то вспомню

Комментарии (23)


  1. pepsimystic
    26.03.2024 19:42
    +2

    как была бесполезной, так и осталась.... увы.


    1. IT_starter Автор
      26.03.2024 19:42
      +1

      Что вы имеете в виду?


      1. paguyc
        26.03.2024 19:42
        +2

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


  1. SergioT4
    26.03.2024 19:42

    БД создавала и поддерживала не я, да и скрипты, которые собирали данные писала не я, это наш легаси код, я пыталась сделать ему искусственное дыхание и оживить.

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


    1. IT_starter Автор
      26.03.2024 19:42
      +1

      Я с вами отчасти согласна. Я предлагала пересобрать скрипты, но " не трогай пока работает" + в оптимизацию кода никто не хотел лезть вдобааок к своим основным задачам.


  1. NAI
    26.03.2024 19:42
    +2

    TL;DR: у нас была какая-то база из которой надо было делать какие-то отчеты и раскладывать по папочкам на сервере. Программиста который смог бы это сделать за 1.5 чашки кофе не нашлось, по этому я сама через "юпитер ноутбук" наделала костылей, потому что подсказала коллега. "Автоматизацию запуска наладили как-то криво, а может и не наладили, я уже и не помню."(C)

    У меня только один вопрос: при чем тут devops, python и sql?


    1. IT_starter Автор
      26.03.2024 19:42
      +1

      Инструментарий был : питон, скл и оркестраторы ( ci/cd)


      1. NAI
        26.03.2024 19:42
        +1

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

        Так вот, какой код и куда вы доставляли? Как использовали скл, если сами пишите что "Трогать саму БД я не рискнула"? Почему питон в связки с юпитером? Почему не выбрали питон + скл (SELECT FROM * WHERE company='ромашка' AND DATE=....) Почему не сделать выгрузку через ODB-драйвер(или как он там) самого ЭкСЕль? Вы же в курсе что из экселя можно делать запросы сразу в СКЛ?


        1. IT_starter Автор
          26.03.2024 19:42

          Замечания по делу, расскащываю как было.

          У нас был юпитер ноутбук написанный на питоне с интеграцией скл (запросов к БД). Мы вытагивали и валилировали данные из БД, рикактх эксель не было.

          Эксель формировался кск часть отчета.

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

          Надеюсь, стало чуть понятне


          1. webhamster
            26.03.2024 19:42
            +3

            Даги на айрфлове если им мапу энтрастнуть могли хотя бы Махачкалу затаргетить?


  1. edh_krusher
    26.03.2024 19:42
    +1

    В каком месте то тут DIY? На лицо статья о том как никто не хочет сменить плохих админов баз на адекватных.


    1. randomsimplenumber
      26.03.2024 19:42
      +4

      В каком месте то тут DIY?

      А как же иначе? Из г012а, палочек и питона слепили йожыка.


  1. LunarBirdMYT
    26.03.2024 19:42
    +1

    Хм, а не думали в сторону лигирования или на тот момент не слышали про это?


    1. IT_starter Автор
      26.03.2024 19:42

      Тогда не думали. Сейчас тоже думаю, что это было бы излишне, если речь идет про логгирование.

      Это имело бы смысл если у нас были бы дешборды в графане иши powerBI - в любой смстеме поддерживающей логгирование.

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

      Как-то так.


  1. Vad55
    26.03.2024 19:42
    +2

    Как можно что то улучшать, не улучшая и оптимизируя собственно сами инструменты?

    Без системного подхода - это все танцы с бубном вокруг священного камня, который нельзя трогать руками.


    1. IT_starter Автор
      26.03.2024 19:42

      Да, так и есть.

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

      На самом деле, сама БД была организована ( как я помню - неплохо), но например витрин по данным отдельных клиентов не было и их приходилось создавать в моменте.

      А в таких ситуациях : чем богаты, тем и рады. Свою задачу все эти танцы с бубном выполнили, Понедельники я себе подразгрузила.


  1. Didntread
    26.03.2024 19:42

    а таск в джире не пробовали создавать и ассайнить разработчику или кто у вас там? У нас, например, от любых "просьб" сделать что-то без указания, куда потраченное время потом трекать, бегают как от огня


    1. IT_starter Автор
      26.03.2024 19:42
      +1

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

      У нас не была внедрена культура трекать время по жире. Сейчас, уже работая в другом месте я так и делаю, ща исключением случаев, когда хочу сама покапаться.


  1. PetrKostyukov
    26.03.2024 19:42

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


    1. IT_starter Автор
      26.03.2024 19:42

      Да, это круто!

      Но в 2021 у нас в компании ничего не исполтзовалось, так что из подручных инстрцмертов улипали, что могли


      1. iLego
        26.03.2024 19:42

        Кажжое каше сооьзнние нудно расщифровввать. Простите, не удержался. Не торопитесь жмакать "отправить", перечитайте написанное.


  1. AlexTimmo
    26.03.2024 19:42
    +1

    А мне понравилось, продолжайте.


  1. Dremkin
    26.03.2024 19:42

    В эру интернета раскладывать файлы в папки и заниматься их рассылкой? Системный анализ, обобщение процессов с разбивкой на модули, последовательная автоматизация и web доступ к результатам, имхо