Хабр, привет!
Хочу написать небольшую серию постов о том, как я автоматизировала или ставила на конвейер какие‑то процессы, с разной степенью успешности, из личного и рабочего опыта.
Ну, люблю я автоматизировать все, что движется, а все что не движется — двигать и автоматизировать. Так что таблицы, трекеры и скрипты (небольшой код) я делаю далеко не только для рабочих задач.
Я работала в нескольких высоко‑технологичных компаниях и командах, и далеко не все из моих коллег имели стремление хотя бы попробовать что‑то из рутины перевести в автоматический или полуавтоматический режим.
Кейс №1 — Мой очень старый пример из 2021 года
Я пыталась автоматизировать процесс выгрузки и передачи отчетности.
Не поймите меня не правильно, я люблю людей, и своих коллег тоже (да, они тоже люди). Но когда им резко что‑то надо именно сейчас (ad‑hoc), и таких нуждающихся 30 человек‑ то я люблю их чуть меньше.
Проблема: ограниченность времени и рабочего ресурса
На одной из прошлых работ, где в моем отделе нас аналитиков было всего 2 (AdTech), а потребность в отчетах росла с кол‑вом запущенных рекламных (маркетинговых) компаний и привлеченных клиентов. Каждый месяц ( и/или неделю) вынь да положь всем картинки, отчетность, метрики и предсказания на 100 лет вперед и назад ( или хотя бы месяц) и не только. Компаний, для которых мы это делали было много, очень много, разных размеров и категорий. И как по часам в ПН N‑го числа, все с утра приходили к нам и, как чайки, «дай‑дай» отчет (да, это тоже часть их работы).
Я думала‑думала как бы так разгрузить этот злосчастный понедельник, что бы и волки сыты и овцы целы. Ведь другие задачи, никто не отменял, они могут быть и важными, и срочными в том числе.
Для начала поймем, что за процесс и какие в нем этапы:
Что, когда, для кого была проведена маркетинговая компания — именно эти данные падают в отчет. По ним считаются метрики и строятся графики. Особенно это важно, если компания как организация (клиент) одна, а вот реклам она запускала несколько разных, в разный период или на разную длительность (по типу рекламы тоже отличаются: есть для узнаваемости бренда, есть для конверсии и тд).
Сбор данных и хранение всего в БД.
Отчет должен появляться на столе у каждого аккаунт‑менеджера в ПН и желательно утром для каждой проведенной (запущенной) рекламе отдельно. ( далее компания будет означать рекламную компанию, а клиент — компанию как организацию)
Аккаунт менеджер «окает» на отчет и рассылает этот отчет своим клиентам
Весь этот процесс занимал в лучшем случае 2–3 часа, в худшем сутки.
Я начала с конца, так как я не хотела, что бы мне начинали писать в 8 утра, а в 11 уже ругались, что отчеты еще не готовы, надо как‑то их готовить заранее, либо ограничить само общение без ущерба продуктивности.
Попытка №1
Например, я пробовала готовить отчеты в ВС вечером накануне.
Но тут сразу 2 минуса: работа в ВС, и то что клиент хочет видеть полный период отчетности (вдруг кто‑то купит телевизор за миллион рублей в 23–30 ВС, а мы не отобразим это в отчете), и даже дельта в 1 день не приемлема.
Попытка №2
Тогда, надо настроить коммуникацию внутри команды, так что бы все работало без пинков. Ну, для начала я решила организовать нам совместное хранилище на (кажется) SharePoint (в целом механика работы с облачными хранилищами везде +/‑ одинаковая).
Там создались папки в отдельности на каждую компанию — внутри папки по годам и месяцам — иерархичные каталоги.
Сейчас бы..
Сейчас, в эти джунгли из папок, я бы добавила еще папку «архив»,куда бы отправляла все устаревшие отчеты с заданной периодичностью.
Раздала я доступы сотрудникам (можно конкретному аккаунт‑менеджеру к папке компании, можно просто всем), доступ к папке с отчетом внешним клиентам выдавался строго регламентированно.
Сейчас бы..
Сейчас, я бы еще добавила скрипт на любом языке, который запускался бы оркестратором (даг на аирфлоу или даже внутренняя программа‑планировщик на рабочей машине — тоже запускается автоматически по расписанию) — что бы присылать отбивку на почту аккаунт‑менеджеру и представителю компании.
Даже после этого шага, стало сильно проще, когда коллеги привыкли, что теперь все хранится и появляется в одном месте. Но скорость появления отчетов это не увеличило. И если коллеги не писали мне в 8 утра, то писали в 12 с вопросом «когда уже будет, скоро?»
А тут, в чем собственно была проблема: БД создавала и поддерживала не я, да и скрипты, которые собирали данные писала не я, это наш легаси код, я пыталась сделать ему искусственное дыхание и оживить. К тому же, формат отчета — был зарегламентирован, так что сильно не разгуляешься.
Актуальные проблемы:
То как собирался отчет требовало личного контроля (вставлять название компании, проверь, что она еще с нами сотрудничает, указывать период и многое другое).
-
Скорость обращения к БД и получения данных.
И это были отчеты, где данные только собирались и агрегировались — никаких ML моделей, или посидеть‑подумать как посчитать бенчмарки. Только рукопашка.
Трогать саму БД я не рискнула, да и мне никто бы не позволил, так что оставалось работать только с нашим внутренним скриптом.
Попытка №3
Почесала я затылок и предложила вот что, а давай мы будем перед началом скрипта всегда обновлять список текущих активных клиентов, их проведенных компаний, и запускать для каждого скрипт по сбору отчетности, максимально формализуем вариативную часть, пропишем правила (практически if else).
То есть, я хотела свести наше вмешательство в работу, уже запущенной программы, к минимуму. Что смогли — сделали. Стало еще лучше, но не достаточно хорошо, к сожалению, для правильной отчетности нужно было работать с большим кол‑вом переменных, которые. Не совсем или совсем не поддавались формализации. Так что случались исключения из наших правил, а соответственно и ошибки. А скрипт был один (шаблонный), и при 1-й же ошибке все упадало, а отчеты переставали формироваться.
Пока мы в режиме мультизадачности ее (ошибку) заметим — пройдет какое‑то время, а значит, мы опять получим десяток » а когда отчет?».
Попытка №4
«Давай игнорировать ошибки» — бодро предложила я, и моя коллега меня поддержала.
В итоге, мы нашли како‑то плагин для юпитер ноутбук, который не позволял работе скрипта остановится, даже если он наткнулся на ошибку — ведь у нас отдельные независимые блоки. И потом мы просматривали, какие отчеты выгрузились, а какие нет.
Создали отдельные скрипты под функционально независимые элементы, которые вызывались по условиям в главном скрипте, для более прозрачного дебага и формирования ruled‑based подхода.
Сейчас бы..
Сейчас, я бы формировала дополнительный текстовый файлик — где просто печатала бы список выгруженных отчетов и того, где встретилась ошибка. Можно его складывать на шарик или присылать на почту аналитикам
В тот момент я с аирфлоу была не знакома, а коллега мне ничего не подсказала. И мы автоматизацию запуска наладили как‑то криво, а может и не наладили, я уже и не помню.
Да, и хотя нельзя назвать это полной автоматизацией, КПД по сохраненному времени и нервам был приличным (с нашей стороны, и со стороны аккаунт‑менеджеров, и со стороны клиентов).
Мои общие выводы и личные лайфхаки:
Если что‑то повторяется больше 3-ех раз и имеет тенденцию продолжаться (даже с изменениями или корректировками), то самое время задуматься о каких‑то костылях‑помощниках.
Если что‑то заняло больше 2-ух часов и не является сугубо интеллектуально‑созидательной работой — тоже можно подумать. Из практики, если что‑то случилось единожды скорее всего произойдет и второй раз.
Я люблю информирование, многих, конечно, бесят потоки автоматически отправляемых писем — мне они помогают отслеживать процесс и собирать обратную связь.
Как часть само‑иронии прикреплю эту картинку.
В следующем посте расскажу, уже с примерами кода (надеюсь):
Как мы делали автопроверку домашек.
Заставляли менеджеров считать циферки и вписывать их в табличку.
Может быть еще что-то вспомню
Комментарии (23)
SergioT4
26.03.2024 19:42БД создавала и поддерживала не я, да и скрипты, которые собирали данные писала не я, это наш легаси код, я пыталась сделать ему искусственное дыхание и оживить.
Надо было вместо "искусственного дыхания", что-нибудь более привлекательное предложить разработчикам - глядишь и случилось бы счастье.
IT_starter Автор
26.03.2024 19:42+1Я с вами отчасти согласна. Я предлагала пересобрать скрипты, но " не трогай пока работает" + в оптимизацию кода никто не хотел лезть вдобааок к своим основным задачам.
NAI
26.03.2024 19:42+2TL;DR: у нас была какая-то база из которой надо было делать какие-то отчеты и раскладывать по папочкам на сервере. Программиста который смог бы это сделать за 1.5 чашки кофе не нашлось, по этому я сама через "юпитер ноутбук" наделала костылей, потому что подсказала коллега. "Автоматизацию запуска наладили как-то криво, а может и не наладили, я уже и не помню."(C)
У меня только один вопрос: при чем тут devops, python и sql?
IT_starter Автор
26.03.2024 19:42+1Инструментарий был : питон, скл и оркестраторы ( ci/cd)
NAI
26.03.2024 19:42+1я может конечно отстал от жизни, но мне казалось, что оркестратор это оркестратор, а континиус интегрейшн и континиус деливери (раз уж вы термины пишите на русском, думаю, так будет понятнее) это то что доставляет код и делает это непрерывно.
Так вот, какой код и куда вы доставляли? Как использовали скл, если сами пишите что "Трогать саму БД я не рискнула"? Почему питон в связки с юпитером? Почему не выбрали питон + скл (SELECT FROM * WHERE company='ромашка' AND DATE=....) Почему не сделать выгрузку через ODB-драйвер(или как он там) самого ЭкСЕль? Вы же в курсе что из экселя можно делать запросы сразу в СКЛ?
IT_starter Автор
26.03.2024 19:42Замечания по делу, расскащываю как было.
У нас был юпитер ноутбук написанный на питоне с интеграцией скл (запросов к БД). Мы вытагивали и валилировали данные из БД, рикактх эксель не было.
Эксель формировался кск часть отчета.
Про доставку кода: тогда мы до этого не дошли, но я писала, что сейчас бы сдалсла, например, гитлаб репозитортй и сформировала несколько дагов на аирфлоу или аналогах, которые запускались по расписанию, дергали новые версии скриптов, обновляли созданные витрины данных, может быть и на почту отбивку присылали.
Надеюсь, стало чуть понятне
webhamster
26.03.2024 19:42+3Даги на айрфлове если им мапу энтрастнуть могли хотя бы Махачкалу затаргетить?
edh_krusher
26.03.2024 19:42+1В каком месте то тут DIY? На лицо статья о том как никто не хочет сменить плохих админов баз на адекватных.
randomsimplenumber
26.03.2024 19:42+4В каком месте то тут DIY?
А как же иначе? Из г012а, палочек и питона слепили йожыка.
LunarBirdMYT
26.03.2024 19:42+1Хм, а не думали в сторону лигирования или на тот момент не слышали про это?
IT_starter Автор
26.03.2024 19:42Тогда не думали. Сейчас тоже думаю, что это было бы излишне, если речь идет про логгирование.
Это имело бы смысл если у нас были бы дешборды в графане иши powerBI - в любой смстеме поддерживающей логгирование.
А мы так и не убрали шаг, когда аккаунт менеджер предворительно смотрит отчет. Даже с доступом, клиенты сами не ходтли в папки за отчетами.
Как-то так.
Vad55
26.03.2024 19:42+2Как можно что то улучшать, не улучшая и оптимизируя собственно сами инструменты?
Без системного подхода - это все танцы с бубном вокруг священного камня, который нельзя трогать руками.
IT_starter Автор
26.03.2024 19:42Да, так и есть.
Это не было частью моих обязанностей и запросить отдельную систему с логгированием, или даже отдельные новые дашборды было не у кого.
На самом деле, сама БД была организована ( как я помню - неплохо), но например витрин по данным отдельных клиентов не было и их приходилось создавать в моменте.
А в таких ситуациях : чем богаты, тем и рады. Свою задачу все эти танцы с бубном выполнили, Понедельники я себе подразгрузила.
Didntread
26.03.2024 19:42а таск в джире не пробовали создавать и ассайнить разработчику или кто у вас там? У нас, например, от любых "просьб" сделать что-то без указания, куда потраченное время потом трекать, бегают как от огня
IT_starter Автор
26.03.2024 19:42+1В московском офисе не было разработчиков, можно сказать мы были за них ( жнец и на дуде игрец).
У нас не была внедрена культура трекать время по жире. Сейчас, уже работая в другом месте я так и делаю, ща исключением случаев, когда хочу сама покапаться.
PetrKostyukov
26.03.2024 19:42Для подготовки отчетов сейчас все больше компаний начинают использовать технологию RPA, когда можно самому достаточно быстро написать скрипт или робота, который будет "нажимать" за Вас кнопки и формировать отчет, отправляя его менеджерам. Платформ есть несколько на российском рынке.
IT_starter Автор
26.03.2024 19:42Да, это круто!
Но в 2021 у нас в компании ничего не исполтзовалось, так что из подручных инстрцмертов улипали, что могли
iLego
26.03.2024 19:42Кажжое каше сооьзнние нудно расщифровввать. Простите, не удержался. Не торопитесь жмакать "отправить", перечитайте написанное.
Dremkin
26.03.2024 19:42В эру интернета раскладывать файлы в папки и заниматься их рассылкой? Системный анализ, обобщение процессов с разбивкой на модули, последовательная автоматизация и web доступ к результатам, имхо
pepsimystic
как была бесполезной, так и осталась.... увы.
IT_starter Автор
Что вы имеете в виду?
paguyc
он имеет ввиду, что ты не знаешь, куда себя применить.