Перейти к содержанию

Цели и соответствие стандартам

## Оглавление - [Польза инструмента](#польза-инструмента) - [Рабочие истории](#рабочие-истории) - [Ценности VK Tech](#ценности-vk-tech) - [Соответствие стандартам CNCF](#соответствие-стандартам-cncf)

Польза инструмента

С появлением инструментов для работы с большими наборами данных (миллионы строк) и больших языковых моделей (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, которые автоматизируют тестирование, позволяя быстро и безопасно внедрять изменения.

Масштабируемость и отказоустойчивость

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