Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/albertllousas/auctions-microservice
https://github.com/albertllousas/auctions-microservice
ddd event-driven-architecture functional-programming hexagonal-architecture kafka microservice mongodb optimistic-locking spring-boot transactional-outbox
Last synced: 11 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/albertllousas/auctions-microservice
- Owner: albertllousas
- Created: 2023-02-10T09:10:16.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-10T18:09:08.000Z (9 months ago)
- Last Synced: 2024-12-03T20:11:52.961Z (2 months ago)
- Topics: ddd, event-driven-architecture, functional-programming, hexagonal-architecture, kafka, microservice, mongodb, optimistic-locking, spring-boot, transactional-outbox
- Language: Kotlin
- Homepage:
- Size: 147 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Auction System
Keywords: `Tactical DDD`, `microservice`, `kotlin`, `spring-boot`, `Hexagonal-Architecture`, `SOLID`, `Domain-Driven Design`, `functional-programming`,
`Testing`, `Event-Driven Architecture`, `Domain-Events`, `Kafka`, `MongoDB`, `Transactional-outbox`, `optimistic-locking`## Problem
Design and implement an online auction system that allows buyers to participate on auctions through digital means,
rather than being at a physical location.## Functional requirements
- Sellers can post any item for auction at any time from their catalog, with an initial price, a minimal bid and an opening date-time.
- An item can not be for an auction twice, unless it was not sold in a previous action.
- An auction can not be changed, only cancelled, but only after 5 min of creation.
- An auction will be on a preview status for a while, between 1 day to 7 days, allowing potential buyers to take a look beforehand.
- Once an auction is open, bidders can bid for the item.
- A Bidder wins an item if there are no higher bids in the next 20 min.
- An auction will expire if there aren't any bidders in a period of 1h.
- Bidders can bid on any existing item any number of times.
- Bids are only allowed during opening time.
- The platform would allow auto-bidding up to a limit, increasing automatically your bid every time someone outbids you.## Scope
The scope of the system should be auctions, we will work with the assumption that we will have other systems in place for:
- Catalog
- User lifecycle
- ...Design only the Backend part, let's skip all the FE side.
## Non Functional Requirements
- Low Latency
- High Availability
- Highly consistent## Estimated workloads
- 10M auctions added every day
- 100M requests to bid on these items