lab10
Описание
Лабораторная работа 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
- Скачайте с официального сайта: https://www.docker.com/products/docker-desktop
- Установите и запустите Docker Desktop
Запуск системы
Вариант 1: Пошаговый запуск
-
Запустите LocalStack:
-
Протестируйте базовые операции:
-
Запустите пайплайн:
-
Запустите мониторинг:
-
Запустите всю систему целиком:
Вариант 2: Запуск тестов
Остановка LocalStack
Тестируемые облачные сервисы
Amazon S3 (Simple Storage Service)
- Создание bucket'ов для хранения файлов
- Загрузка данных в формате CSV
- Скачивание и чтение данных
- Список файлов в bucket'е
Amazon SQS (Simple Queue Service)
- Создание очередей сообщений
- Отправка сообщений
- Получение сообщений
- Удаление обработанных сообщений
Примеры выполненных операций
Пример 1: Работа с S3
Пример 2: Работа с SQS
Пример 3: Полный пайплайн
Пайплайн обработки данных
Пайплайн выполняет следующие шаги:
- Генерация данных - создает тестовые данные о сотрудниках
- Загрузка сырых данных - сохраняет данные в S3 bucket для сырых данных
- Обработка данных:
- Добавление вычисляемых полей (категория зарплаты, стаж)
- Очистка данных
- Создание агрегированной статистики по отделам
- Сохранение результатов - сохраняет обработанные данные в отдельный bucket
- Уведомления - отправляет сообщения в 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 |
Скриншоты для сдачи
Необходимо приложить скриншоты:
- Работающего LocalStack (
)docker ps - Выполнения cloud_pipeline.py
- Работающего мониторинга
- Успешных тестов (
)pytest tests/ -v
Дополнительные ресурсы
Автор
Лабораторная работа выполнена в рамках курса по тестированию облачных сервисов.