lab10

0

Описание

Лабораторная работа 10: Тестирование облачных data-сервисов

Языки

  • Python100%
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
README.md

Лабораторная работа 10: Тестирование облачных data-сервисов

Цель работы

Научиться тестировать облачные сервисы для работы с данными с помощью Python и локальных эмуляторов.

Что такое облачные data-сервисы простыми словами?

Облачные data-сервисы = Аренда мощностей для данных в интернете

Это как аренда склада вместо постройки собственного:

  • 📊 Хранилище данных (S3) - большой склад для файлов
  • 🗃️ Базы данных (RDS) - умные полки для структурированных данных
  • 📨 Очереди сообщений (SQS) - почтовые ящики для общения сервисов
  • 🔍 Аналитика (Athena) - отдел анализа данных

Мы научимся тестировать эти сервисы локально перед отправкой в облако!

Инструменты

  • Python - основной язык
  • LocalStack - локальная эмуляция AWS сервисов
  • Docker - для запуска LocalStack
  • boto3 - библиотека для работы с AWS
  • pytest - для тестов
  • pandas - для работы с данными

Структура проекта

lab10/ ├── docker-compose.yml # Конфигурация LocalStack ├── start_localstack.py # Скрипт запуска LocalStack ├── cloud_client.py # Клиент для работы с S3 и SQS ├── cloud_pipeline.py # Облачный пайплайн обработки данных ├── cloud_monitor.py # Система мониторинга ├── run_cloud_system.py # Главный скрипт запуска всей системы ├── requirements.txt # Зависимости Python ├── tests/ │ ├── __init__.py │ └── test_cloud_pipeline.py # Тесты для пайплайна ├── README.md # Документация └── localstack_data/ # Данные LocalStack (создается автоматически)

Установка

1. Установите зависимости

2. Установите Docker Desktop

Запуск системы

Вариант 1: Пошаговый запуск

  1. Запустите LocalStack:

  2. Протестируйте базовые операции:

  3. Запустите пайплайн:

  4. Запустите мониторинг:

  5. Запустите всю систему целиком:

Вариант 2: Запуск тестов

Остановка LocalStack

Тестируемые облачные сервисы

Amazon S3 (Simple Storage Service)

  • Создание bucket'ов для хранения файлов
  • Загрузка данных в формате CSV
  • Скачивание и чтение данных
  • Список файлов в bucket'е

Amazon SQS (Simple Queue Service)

  • Создание очередей сообщений
  • Отправка сообщений
  • Получение сообщений
  • Удаление обработанных сообщений

Примеры выполненных операций

Пример 1: Работа с S3

Пример 2: Работа с SQS

Пример 3: Полный пайплайн

Пайплайн обработки данных

Пайплайн выполняет следующие шаги:

  1. Генерация данных - создает тестовые данные о сотрудниках
  2. Загрузка сырых данных - сохраняет данные в S3 bucket для сырых данных
  3. Обработка данных:
    • Добавление вычисляемых полей (категория зарплаты, стаж)
    • Очистка данных
    • Создание агрегированной статистики по отделам
  4. Сохранение результатов - сохраняет обработанные данные в отдельный bucket
  5. Уведомления - отправляет сообщения в SQS о каждом этапе обработки

Мониторинг

Система мониторинга отслеживает:

  • Новые файлы в S3 bucket'ах
  • Сообщения в SQS очередях
  • Метрики производительности:
    • Количество S3 операций
    • Количество отправленных/полученных сообщений
    • Количество ошибок
    • Время работы системы

Проблемы и их решения

Проблема 1: Docker не запускается

Решение:

  • Убедитесь что Docker Desktop установлен и запущен
  • Проверьте что Docker daemon работает:
    docker ps
  • Перезапустите Docker Desktop
  • На Windows используйте WSL2

Проблема 2: LocalStack не отвечает

Решение:

  • Проверьте что контейнер запущен:
    docker ps
  • Проверьте логи:
    docker-compose logs localstack
  • Подождите несколько секунд после запуска (LocalStack требует время на инициализацию)
  • Проверьте порт 4566:
    curl http://localhost:4566/health

Проблема 3: Ошибки подключения к LocalStack

Решение:

  • Убедитесь что используется правильный endpoint:
    http://localhost:4566
  • Проверьте что LocalStack запущен на порту 4566
  • Проверьте что нет конфликтов портов

Проблема 4: Ошибки импорта модулей

Решение:

  • Убедитесь что все зависимости установлены:
    pip install -r requirements.txt
  • Проверьте что вы находитесь в правильной директории
  • Убедитесь что Python может найти модули (проверьте PYTHONPATH)

Критерии оценки

ЗаданиеБаллы
LocalStack запускается и работает2
S3 операции работают корректно2
SQS операции работают корректно2
Облачный пайплайн работает полностью2
Мониторинг и тесты работают2
Всего10

Скриншоты для сдачи

Необходимо приложить скриншоты:

  1. Работающего LocalStack (
    docker ps
    )
  2. Выполнения
    cloud_pipeline.py
  3. Работающего мониторинга
  4. Успешных тестов (
    pytest tests/ -v
    )

Дополнительные ресурсы

Автор

Лабораторная работа выполнена в рамках курса по тестированию облачных сервисов.