Top.Mail.Ru
Проект Car Wash

ETL-конвейер на Apache AirFlow

Реализация отказоустойчивого ETL-конвейера. Обработка email и FTP, валидация, безопасность и управление через Appsmith. Полная контейнеризация на Docker для быстрого деплоя.

Задача

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

Ключевые требования:

  • Поддержка источников: электронная почта (IMAP/POP3) и FTP-серверы
  • Автоматическая валидация и проверка безопасности данных
  • Многоуровневая архитектура хранения данных
  • Административная панель для управления системой
  • Полная контейнеризация решения

Архитектура решения

Технологический стек:

Backend:

  • Apache Airflow 2.7+ - оркестрация ETL-процессов
  • Python 3.10 - разработка кастомных операторов и DAG
  • Docker & Docker Compose - контейнеризация
  • MinIO - S3-совместимое объектное хранилище
  • PostgreSQL - метаданные и логи
  • ClamAV - антивирусная проверка

Frontend:

  • Appsmith - административная панель
  • React.js - веб-интерфейс
  • Tailwind CSS - стилизация

Архитектура хранения (MinIO):

  • staging-area → Временное хранение "сырых" данных
  • quarantine-zone → Файлы, не прошедшие валидацию
  • transformation-zone → Пространство для преобразований
  • validation-zone → Проверка качества данных
  • loading-zone → Финальная зона перед загрузкой
  • archive-zone → Архив для аудита и анализа

Реализованный функционал

1. Модуль обработки электронной почты

  • Подключение: IMAP/POP3 с настраиваемыми параметрами
  • Периодичность опроса: Конфигурируемый интервал (в минутах)
  • Логика обработки:
    • Генерация уникального ID процесса для каждого письма
    • Фильтрация по черному списку отправителей
    • Проверка вложений по разрешенным типам файлов
    • Автоматическое удаление обработанных писем
    • Детальное логирование всех операций

2. Модуль обработки FTP

  • Структура: Рекурсивный обход папок по отправителям
  • Обработка архивов: Поддержка .zip, .tar.gz с распаковкой
  • Выбор актуальных данных: Автоматический выбор самых свежих файлов
  • Изоляция отправителей: Независимая обработка данных от каждого источника

3. Система валидации данных

  • Валидация объема: Сравнение с историческими данными
    • Мягкий порог → предупреждение
    • Критический порог → карантин
  • Проверка безопасности:
    • Антивирусное сканирование (ClamAV)
    • Проверка на исполняемый код
    • Контроль целостности: Проверка форматов и кодировок

Ключевые особенности реализации

Отказоустойчивость:

  • Повторные попытки обработки при сбоях
  • Изоляция проблемных файлов в карантин
  • Сохранение состояния процессов

Масштабируемость:

  • Микросервисная архитектура
  • Горизонтальное масштабирование компонентов
  • Разделение зон ответственности

Безопасность:

  • Многоуровневая аутентификация
  • Шифрование конфиденциальных данных
  • Регулярное антивирусное сканирование

Мониторинг:

  • Детальное логирование всех операций
  • Система уведомлений о критических событиях
  • Визуализациaя потоков данных в Airflow

Результаты проекта

Технические достижения:

  • Развернут основной каркас ETL-системы на Apache Airflow
  • Реализована полная контейнеризация решения с Docker
  • Создана многоуровневая архитектура хранения в MinIO
  • Разработана административная панель на Appsmith
  • Настроены процессы валидации и безопасности данных
  • Реализованы модули обработки для email и FTP источников

Бизнес-преимущества:

  • Сокращение времени развертывания на 60-70% для новых проектов
  • Повышение надежности обработки данных за счет автоматической валидации
  • Снижение операционных затрат благодаря автоматизации рутинных процессов
  • Улучшение безопасности данных через многоуровневые проверки
  • Упрощение управления системой через единую административную панель

Примеры использования

Сценарий 1: Обработка ежедневных отчетов по email

  1. Система проверяет почтовый ящик каждые 15 минут
  2. Обнаруживает письмо с вложениями .csv
  3. Проверяет отправителя по белому списку
  4. Выполняет антивирусное сканирование
  5. Проверяет объем данных (не превышает исторические +20%)
  6. Перемещает файл в staging-area
  7. Логирует операцию с ID процесса

Сценарий 2: Обработка данных с FTP сервера

  1. Рекурсивный обход папки поставщика
  2. Обнаружение нового .zip архива
  3. Распаковка и проверка содержимого
  4. Выбор самого актуального файла по дате модификации
  5. Валидация формата и кодировки
  6. Загрузка в соответствующую зону MinIO

Дальнейшее развитие

Планируемые улучшения:

  • Интеграция с дополнительными источниками данных (API, облачные хранилища)
  • Реализация машинного обучения для аномалий в данных
  • Расширение панели управления аналитическими отчетами
  • Добавление поддержки потоковой обработки данных
  • Интеграция с системами оповещения (Telegram, Slack)

Оптимизации:

  • Кэширование часто запрашиваемых данных
  • Параллельная обработка независимых источников
  • Автоматическое масштабирование ресурсов

Выводы

Разработанный ETL-контейнер представляет собой готовое решение для автоматизации процессов работы с данными, которое сочетает в себе надежность современных технологий (Apache Airflow, Docker) с удобством управления через веб-интерфейс.

Основные сильные стороны:

  • Модульная архитектура позволяет легко адаптировать систему под конкретные бизнес-требования
  • Полная контейнеризация обеспечивает простоту развертывания и масштабирования
  • Комплексная система валидации гарантирует качество обрабатываемых данных
  • Интуитивный интерфейс управления снижает порог вхождения для операторов

Заключение

Проект демонстрирует возможности создания enterprise-решений для обработки данных с использованием современных DevOps практик и cloud-native технологий.