Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kavirajk/bookshop
An attempt to write an Cloud Native web services following microservices patterns. Primary Language is Go
https://github.com/kavirajk/bookshop
elegant go go-kit monolithic services web
Last synced: 2 days ago
JSON representation
An attempt to write an Cloud Native web services following microservices patterns. Primary Language is Go
- Host: GitHub
- URL: https://github.com/kavirajk/bookshop
- Owner: kavirajk
- Created: 2017-02-27T19:49:55.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-05-08T21:59:06.000Z (over 6 years ago)
- Last Synced: 2024-06-21T19:02:25.954Z (5 months ago)
- Topics: elegant, go, go-kit, monolithic, services, web
- Language: Go
- Homepage:
- Size: 3.86 MB
- Stars: 9
- Watchers: 2
- Forks: 3
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BookShop
This repo try to demonstrates building a "real-world" web services in go. It is used only for learning purposes.
## Description
We focus on building the services in monolithic way first. We iterate over to split this monolithic to microservices that can be deployed separately.
Bookshop consists of following services
* Auth - Login, Signup, ResetPassword, Impersonate and Forgot password
* Catalog - View, filter, search books
* Order - Place, View and Cancel Orders
* Payment - Add/Edit payment method and Make payment.
* Notification - Email and SMS notifications.### Roadmap
- [ ] Elegant monolitic exposing REST endpoints for all the services - v1.0
- [ ] Add async task queue support - v2.0
- [ ] Catalog search via elastic search - v3.0
- [ ] Split to microservices. grpc transport between microservices and single API gateway - v4.0
- [ ] Dockerize all the services - v5.0
- [ ] Introduce service mesh between services - v6.0
- [ ] Make services deployable via kubernetes - v7.0
- [ ] Add service discovery support - v8.0
- [ ] Monitoring via Prometheus and Grafana - v9.0
- [ ] Request tracing - v10.0
- [ ] Log aggregation via "OK log" - v11.0### Organization
We will stick to Domain Driven Design as much as possible.
```
bookshop
├── build # Compiled files
├── cmd # Main entry points
├── bookstore
├── pkg # Domain related packages
├── auth
├── catalog
└── order
└── payment
└── notification
└── resource # High-level packages. Can be used by any domain
└── db
└── vendor
└── Gopkg.toml
└── Gopkg.yaml
```