Цели и соответствие стандартам¶
Польза инструмента¶
С появлением инструментов для работы с большими наборами данных (миллионы строк) и больших языковых моделей (LLM), проблема генерации датасетов стала особенно актуальной. Однако большинство существующих инструментов сосредоточены на генерации текстов для обучения LLM и не решают задач создания датасетов для бенчмарков баз данных. Те, что существуют, часто страдают от проблем с удобством, функциональностью и производительностью. Поэтому мы создали наш инструмент, ориентируясь на широкий спектр целей и возможных применений:
Тестирование и отладка¶
Тестирование алгоритмов: Разработчики могут использовать синтетические данные для тестирования и отладки своих алгоритмов без необходимости ожидания сбора реальных данных.
Автоматизированное тестирование: Инструмент может быть интегрирован в системы непрерывной интеграции и доставки (CI/CD) для автоматизированного тестирования приложений и сервисов.
Анализ данных и визуализация¶
Исследовательский анализ данных (EDA): Синтетические данные могут быть использованы для предварительного анализа и проверки гипотез перед работой с реальными данными.
Визуализация данных: Генерация данных с определенными характеристиками позволяет создавать наглядные примеры для учебных материалов и демонстраций.
Защита данных и конфиденциальность¶
Защита чувствительных данных: Синтетические данные могут быть использованы для тестирования и анализа вместо реальных данных, что помогает защитить конфиденциальную информацию.
Симуляция атак: Генерация данных с определенными аномалиями или ошибками может помочь в симуляции атак и тестировании устойчивости систем.
Бизнес и индустрия¶
Разработка продуктов: Компании могут использовать синтетические данные для тестирования и разработки новых продуктов и услуг.
Маркетинговые исследования: Генерация данных о потребителях и рынках может помочь в проведении маркетинговых исследований и планировании стратегий.
Гибкость и настраиваемость¶
Пользовательские условия: Возможность задавать конкретные условия генерации данных позволяет создавать наборы данных, максимально соответствующие требованиям конкретных задач.
Модульность и расширяемость: Открытый исходный код позволяет другим разработчикам вносить улучшения и добавлять новые функции, делая инструмент более универсальным и мощным.
Рабочие истории¶
Рабочая история 1¶
Исполнитель: Разработчик
Ситуация: Разработчик работает над проектом, требующим тестовых данных для проверки функциональности приложения. Ему необходимо быстро сгенерировать набор данных и сохранить их в файл для дальнейшего использования.
Работа: Разработчик использует CLI интерфейс генератора данных, чтобы задать параметры генерации (например, количество записей, формат данных) и сохранить результат в файл на локальной машине.
Результат: Файл со сгенерированными данными успешно создан в указанной директории, данные соответствуют заданным параметрам.
Критерии приемки:
- Файл с данными создается в указанной директории.
- Формат и структура данных соответствуют заданным параметрам.
- В случае ошибок (например, неверные параметры) выводится понятное сообщение об ошибке.
- Программа корректно обрабатывает различные форматы данных (JSON, CSV и т.д.).
Рабочая история 2¶
Исполнитель: Система
Ситуация: Необходимо интегрировать генератор данных с другим HTTP сервисом (например, с тестовым кластером), чтобы автоматически загружать сгенерированные данные в этот сервис для тестирования.
Работа: Интеграционный сервис вызывает генератор данных через API, получает сгенерированные данные и отправляет их на другой HTTP сервис для загрузки.
Результат: Сгенерированные данные успешно загружаются в целевой HTTP сервис, обеспечивая актуальные тестовые данные для дальнейшего использования.
Критерии приемки:
- Данные корректно генерируются и передаются в целевой HTTP сервис.
- Интеграция работает без сбоев и ошибок.
- В случае проблем с передачей данных система корректно обрабатывает ошибки и повторяет попытки передачи.
- Логирование успешных и неуспешных операций для последующего анализа.
Рабочая история 3¶
Исполнитель: Инженер по тестированию
Ситуация: Инженеру по тестированию необходимо провести нагрузочные тесты для нового релиза приложения. Для этого требуется быстро и автоматически генерировать большие объемы тестовых данных в рамках процесса CI/CD.
Работа: Инженер настраивает CI/CD пайплайн таким образом, чтобы на этапе подготовки к нагрузочному тестированию автоматически вызывался генератор данных. Генератор создает необходимый объем данных, которые затем используются в нагрузочных тестах.
Результат: CI/CD пайплайн успешно генерирует и использует большие объемы тестовых данных для проведения нагрузочных тестов, обеспечивая проверку производительности приложения под высокой нагрузкой.
Критерии приемки:
- Генератор данных интегрирован в CI/CD пайплайн и автоматически запускается при каждом выполнении тестов.
- Сгенерированные данные соответствуют заданным параметрам и объему, необходимому для нагрузочного тестирования.
- Процесс генерации данных не замедляет выполнение пайплайна и укладывается в допустимые временные рамки.
- В случае ошибок в генерации или интеграции данных пайплайн предоставляет информативные логи для диагностики.
Ценности VK Tech¶
При работе над проектом мы стрались привнести в него ценности инженерной культуры нашего юнита:
1. Совместная работа и открытая коммуникация
Проект является частью InnerSource и открыт для контрибьюторов - для этого мы описали список возможных доработок.
2. Непрерывное обучение
Работая над этим проектом мы старались не повторить то, что мы уже когда-либо делали в своей работе, а использовать новые подходы и ресурсы.
3. Стремление к совершенству
При подготовке инструмента мы сразу создали базовую реализацию чистой архитектуры и подобрали список линтеров.
4. Качество прежде всего
В реализации мы решили ограничиться более узким функционалом, сосредоточившись на его качестве.
5. Инновации
Инструмент сделан cloud-native и совместимым с LLM.
6. Сопричастность и ответственность
Мы продолжим развивать инструмент и вне рамок хакатона так как он приносит пользу в нашей повседневной работе.
7. Фокус на клиентов
Основная аудитория инструмента - разработчики. Разработчики из пресейла и professional services смогут предоставлять с помощью него более качественные результаты тестирования. Разработчики продуктовых команд смогут тестировать новые фичи в условиях более близким к реальным.
Соответствие стандартам CNCF¶
Наш генератор данных соответствует стандартам Cloud Native Computing Foundation (CNCF), обеспечивая надежность, масштабируемость и удобство эксплуатации в современных облачных средах.
Контейнеризация¶
Наш генератор упакован в контейнеры с использованием Docker, что обеспечивает его портативность и изоляцию. Это позволяет легко развертывать его в различных средах без зависимости от конкретной инфраструктуры.
Микросервисная архитектура¶
Сам по себе генератор является микросервисом, который может использоваться в качестве части сервиса.
API-first подход¶
Наш HTTP API разработан в соответствии со стандартами REST, что обеспечивает простоту интеграции с другими системами и легкость в использовании.
Непрерывная интеграция и доставка (CI/CD)¶
Мы внедрили процессы CI/CD, которые автоматизируют тестирование, позволяя быстро и безопасно внедрять изменения.
Масштабируемость и отказоустойчивость¶
Наш сервис поддерживает горизонтальное масштабирование, что позволяет адаптироваться к изменяющимся нагрузкам, а также настроены механизмы автоматического восстановления в случае сбоев.