playground/anagram-microservice/README.md

113 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Anagram microservice
### Задача
Разработать микросервис на Go для группировки слов по анаграммам с возможностью обработки больших объемов данных.
### Основные требования
1. REST API
Реализовать HTTP API со следующими эндпоинтами:
POST /api/v1/anagrams/group - группировка массива слов
GET /api/v1/anagrams/groups/{id} - получение результата по ID задачи
GET /api/v1/health - проверка состояния сервиса
2. Входные данные
```json
{
"words": ["ток","рост","кот","торс","Кто","фывап","рок"],
"case_sensitive": false
}
```
3. Выходные данные
```json
{
"task_id": "uuid-string",
"status": "completed",
"result": [
["ток","кот","Кто"],
["рост","торс"],
["фывап"],
["рок"]
],
"processing_time_ms": 15,
"groups_count": 4
}
```
4. Архитектура и производительность
Использовать паттерн Clean Architecture
Реализовать пул горутин для обработки больших массивов (>10k слов)
Добавить кэширование результатов (in-memory)
Поддержка конкурентной обработки нескольких запросов
5. Обработка больших данных
Поддержка потоковой обработки для массивов >100k элементов
Возможность загрузки данных из файла (CSV, JSON)
6. Мониторинг и логирование
Структурированное логирование (logrus/zap)
Трейсинг запросов
Graceful shutdown
8. Тестирование
Unit тесты с покрытием >80%
Integration тесты
Benchmark тесты для алгоритма группировки
Тестирование нагрузки
9. API дополнения
POST /api/v1/anagrams/upload - загрузка файла со словами
GET /api/v1/anagrams/stats - статистика обработанных запросов
DELETE /api/v1/anagrams/cache - очистка кэша
10. Обработка ошибок
Валидация входных данных
Rate limiting
Timeout для долгих операций
Возврат детальных ошибок в JSON формате
-----------------
Критерии оценки:
Качество и читаемость кода
Архитектурные решения
Производительность алгоритма
Обработка edge cases
Покрытие тестами
Документация API (Swagger/OpenAPI)
Monitoring и observability