This is the repository with the ordering system services. The services are written as homework of the Route 256 course from Ozone Tech. Written on Go 1.19. Using gRPC and Kafka for communication, postgresql as storage, jaeger for tracing, prometheus and grafana for metrics and alerts. Services can be started via docker-compose.
checkout/- customer service for managing the shopping cart and placing orders. Linked by gRPC to product_service (external service) and loms.loms/- internal order management service. Linked to checkout via gRPC and notifications via Kafka.notifications/- order notification service. Just reads messages from Kafka topic.libs/- implementations of various tools for servicescache- in-memory cache implementationconfig- help parse yaml config to structcron- lib for periodical tasksdb- wrapper over db interface with transactions supporterrors- errors handlinggrpc- gRPC interceptors for client and serverhttpaux- wrappers over http client and serverkafka- kafka producer and consumermiddleware- logger and ratelimiter middlewareratelimiter- ratelimiter libvalidator- singleton and checker forgithub.com/go-playground/validator/v10workerpool- implemplementation of goroutine worker pool
# lint
make precommit
# test
make test
# run
make run-all