Внимание: Тестовое задание найдено на просторах github-а. Для обучения и тренировки, попробовал решить ее в меру своего понимания. На ревью не отправлял, за оптимальность не ручаюсь.
Создать REST-API сервис, который позволяет вести список задач, и провести с ними простейшие действия.
Подробнее здесь
git clone https://github.com/p12s/ispring-todo-list-api.git
cd ispring-todo-list-api
mv configs/config.example.yml configs/config.yml
mv .env.example .env
docker-compose up -d
Что происходит:
- поднимается контейнер с PostgreSQL
- поднимается контейнер с сервисом migrate для инициализации/миграции БД
- БД приводится к рабочему виду, контейнер с migrate удаляется
- поднимается контейнер с кодом приложения: http://localhost/swagger/index.html
- ✅ Язык программирования: PHP 7.x или Go
Go - ✅ СУБД: MySQL или postgresql
PostgreSQL - ✅ Исходный код разместить в репозитории на GitHub
- ✅ Использование фреймворков и библиотек по желанию
Gin - ❌ Привести сервис в полное соответствие заданию (получение невыполненных задач, 404 при неверном идентификаторе и т.п.)
- ✅ Метод API, позволяющий получить список архивных задач (которые были помечены выполненными) {{host}}:{{port}}/api/items/completed
- ✅ набор API тестов, позволяющих проверить работу приложения в автоматическом режиме. Реализовать можно с помощью Postman (https://www.postman.com/use-cases/api-testing-automation/)
Описание запуска из командной строки - ✅ Dockerfile, который содержит все необходимые настройки и зависимости для быстрого разворачивания окружения.
docker-compose
- swagger - документация
- бейдж с %-ом покрытия unit-тестами (сейчас 0%)
- бейдж с результатом запуска тестов и пробной сборки в Github Actions для master-ветки
- Покрыть код unit-тестами (пока только интеграционные - с помощью postman)
- Настроить запуск сервиса с помощью docker-compose, чтобы поднимался сервис и БД (сейчас контейнер с postgres поднимаю руками + накатываю миграции)
- Использовать FastHTTP вместо Gin
- Добавить индексы в БД
- Забенчмаркать с помощью wrk для проверки производительности
- Отпрофилировать с помощью pprof и по-возможности, зарефакторить. А после снова забенчмаркать