Разработка и автоматизация

Автоматизация рутины: какие задачи в компании стоит отдать скрипту

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

Алексей Сергеев 3 мин чтения

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

Признаки задачи, которую стоит автоматизировать

  • Повторяется по расписанию или по одинаковому поводу. Каждое утро, каждый понедельник, при каждом новом заказе.
  • Выполняется по понятным правилам. Если задачу можно описать инструкцией на одну страницу, её, скорее всего, можно описать и кодом.
  • Данные уже есть в электронном виде. В учётной системе, таблице, почте, по API.
  • Ошибка стоит дорого. Перепутанная цифра в счёте или пропущенное напоминание.

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

Типичные примеры

  • Интеграции между системами. Заказы с сайта попадают в учётную систему, статусы — обратно, без ручного переноса.
  • Отчёты. Сбор данных из нескольких источников в одну таблицу или панель, которая обновляется сама.
  • Уведомления. Сообщение в рабочий чат, когда произошло важное событие: крупный заказ, просроченная задача, ошибка в обмене.
  • Проверки. Сроки сертификатов, доменов, лицензий, наличие свежих резервных копий.
  • Учётные записи. Создание и отключение доступов сотрудникам в нескольких сервисах по одному действию.

Как оценить, окупится ли автоматизация

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

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

Пример: проверка сроков TLS-сертификатов

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

check_certs.py
import socket
import ssl
from datetime import datetime, timezone

DOMAINS = ["example.com", "cloud.example.com", "mail.example.com"]
WARN_DAYS = 21


def days_left(host: str, port: int = 443) -> int:
    context = ssl.create_default_context()
    with socket.create_connection((host, port), timeout=10) as sock:
        with context.wrap_socket(sock, server_hostname=host) as tls:
            not_after = tls.getpeercert()["notAfter"]
    expires = datetime.fromtimestamp(ssl.cert_time_to_seconds(not_after), tz=timezone.utc)
    return (expires - datetime.now(timezone.utc)).days


def main() -> int:
    problems = []
    for domain in DOMAINS:
        try:
            left = days_left(domain)
        except OSError as exc:
            problems.append(f"{domain}: не удалось проверить ({exc})")
            continue
        if left < WARN_DAYS:
            problems.append(f"{domain}: сертификат истекает через {left} дн.")
    for line in problems:
        print(line)
    return 1 if problems else 0


if __name__ == "__main__":
    raise SystemExit(main())

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

Когда нужен не скрипт, а сервис

Если с автоматизацией работают несколько сотрудников, нужны права доступа, история изменений и удобный интерфейс, — это уже внутренний веб-сервис. Я делаю такие сервисы на Python и Django: панель для сотрудников, API для интеграций, фоновые задачи. Подробнее — в разделе «Разработка и автоматизация».

Есть рутина, которая отнимает время сотрудников?

Опишите процесс: что делают руками, в каких системах и как часто. Я подскажу, что можно автоматизировать и как.

Обсудить задачу

Алексей СергеевИнженер, IT-инфраструктура и DevOps

Читайте также

Сегментация офисной сети на MikroTik: VLAN для сотрудников, гостей и серверов

Почему «плоская» сеть, где все устройства видят друг друга, - главный источник проблем в небольшом офисе, и как разделить её на VLAN на MikroTik с RouterOS 7: схема, настройка моста, правила firewall и типичные ошибки.

Резервный интернет в офисе: два провайдера и автоматическое переключение на MikroTik

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

Корпоративный Wi-Fi: почему в офисе плохо ловит и как это исправить

Мёртвые зоны, обрывы при переходе между кабинетами и «тормоза» в переговорной — разбираю частые причины проблем с офисным Wi-Fi и то, как я проектирую беспроводную сеть, чтобы она работала стабильно.