Order Service — это микросервис для управления заказами. Сервис обрабатывает заказы из Kafka, сохраняет их в PostgreSQL и предоставляет HTTP API для получения информации о заказах с кешированием.
- Docker и Docker Compose
- Go 1.24+ (для локального запуска)
-
Запустите
Docker Engine -
Клонируйте репозиторий:
git clone https://github.com/alexey0b/order_service.git- Перейдите в корень проекта
- Запустите БД:
make postgres-start- Заведите пользователя для БД:
make postgres-create-user NAME=username PASSWORD=password- Примените миграции:
- Установите пакет Goose
make install-goose- Мигрируйте таблицы в БД
make migrate-up- Выдайте права на созданную БД:
make postgres-grant-permissions NAME=username- Чтобы сервис взаимодействовал с БД от лица созданного пользователя, то введите его NAME и PASSWORD в файле конфигурации у значений полей
userиpassword:
# path: /order_service/config/config.yaml
---
# Database configuration
postgres:
host: "postgres"
port: 5432
database: "my_db"
user: "user"
password: "password"
ssl_mode: "disable"- Запустите брокер Kafka:
make broker-start- Создайте Kafka-топик:
make broker-create-topic NAME=topic_name- Введите созданное имя топика NAME в файле конфигурации у значения поля
topic
# path: /order_service/config/config.yaml
---
# Kafka configuration
kafka:
network: "tcp"
brokers: ["broker:9092"]
topic: "my-topic"
group_id: "1"
poll_timeout: 1000 # in milliseconds- Запустите go-сервис:
make app-start- Отправьте тестовые сообщения на созданный топик:
make broker-send-msgsAPI c UI интерфейсом доступен по адресу: http://localhost:8080
Пример запроса:
curl http://localhost:8080/api/v1/order/b563feb7b2b84b6test- Запустите Prometheus через docker compose:
make promo-startСервис предоставляет метрики для мониторинга через Prometheus:
- Эндпоинт метрик: http://localhost:8080/metrics
- Prometheus UI: http://localhost:9090
Доступные метрики:
app_requests_total- общее количество запросовapp_request_duration_seconds- время обработки запросов
- Язык программирования: Go (Golang)
- База данных: PostgreSQL
- jmoiron/sqlx - работа с PostgreSQL
- jackc/pgx - PostgreSQL драйвер
- segmentio/kafka-go - Kafka клиент
- hashicorp/golang-lru - LRU кеш
- pressly/goose - миграции БД
- spf13/viper - конфигурация
- prometheus/client_golang - метрики Prometheus
- stretchr/testify - assertions
- uber-go/mock - моки
- testcontainers-go - интеграционные тесты
# Посмотреть все доступные команды
make help
# Запустить unit тесты
make unit-test-start
# Запустить интеграционные тесты
make integration-test-start
# Проверить статус миграций
make migrate-status