Skip to content

alexey0b/order_service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Order service CI Coverage Status

Order Service

📋 Описание проекта

Order Service — это микросервис для управления заказами. Сервис обрабатывает заказы из Kafka, сохраняет их в PostgreSQL и предоставляет HTTP API для получения информации о заказах с кешированием.


🚀 Запуск сервиса

Предварительные требования

  • Docker и Docker Compose
  • Go 1.24+ (для локального запуска)

Запуск сервиса

  1. Запустите Docker Engine

  2. Клонируйте репозиторий:

git clone https://github.com/alexey0b/order_service.git
  • Перейдите в корень проекта
  1. Запустите БД:
make postgres-start
  1. Заведите пользователя для БД:
make postgres-create-user NAME=username PASSWORD=password
  1. Примените миграции:
  • Установите пакет Goose
make install-goose
  • Мигрируйте таблицы в БД
make migrate-up
  1. Выдайте права на созданную БД:
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"
  1. Запустите брокер Kafka:
make broker-start
  1. Создайте 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
  1. Запустите go-сервис:
make app-start
  1. Отправьте тестовые сообщения на созданный топик:
make broker-send-msgs

API c UI интерфейсом доступен по адресу: http://localhost:8080

Пример запроса:

curl http://localhost:8080/api/v1/order/b563feb7b2b84b6test

📊 Мониторинг и метрики

  • Запустите Prometheus через docker compose:
make promo-start

Prometheus метрики

Сервис предоставляет метрики для мониторинга через Prometheus:

Доступные метрики:

  • app_requests_total - общее количество запросов
  • app_request_duration_seconds - время обработки запросов

🛠️ Технические ресурсы

  • Язык программирования: Go (Golang)
  • База данных: PostgreSQL

Основные библиотеки

Библиотеки для тестирования


📚 Полезные команды

# Посмотреть все доступные команды
make help

# Запустить unit тесты
make unit-test-start

# Запустить интеграционные тесты
make integration-test-start

# Проверить статус миграций
make migrate-status

About

Microservice for order management

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors