All Projects → mvillarrealb → order-management-system

mvillarrealb / order-management-system

Licence: other
Ecommerce demo microservice platform, a proof of concept for microservices architecture

Programming Languages

typescript
32286 projects
java
68154 projects - #9 most used programming language
javascript
184084 projects - #8 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to order-management-system

golang-101
🍺 In-depth internals, my personal notes, example codes and projects. Includes - Thousands of codes, OOP, Concurrency, Parallelism, Goroutines, Mutexes & Wait Groups, Testing in Go, Go tool chain, Backend web development, Some projects including Log file parser using bufio.Scanner, Spam Masker, Retro led clock, Console animations, Dictionary pro…
Stars: ✭ 61 (+306.67%)
Mutual labels:  microservices-architecture
aegis-host
This is the ÆGIS federated application host. Federated components are independently deployable, written by multiple teams in multiple languages, and loaded from multiple repos and network locations at runtime, yet capable of running together in a single process or as distributed components in the ÆGIS application fabric.
Stars: ✭ 197 (+1213.33%)
Mutual labels:  microservices-architecture
Gauntlet
🔖 Guides, Articles, Podcasts, Videos and Notes to Build Reliable Large-Scale Distributed Systems.
Stars: ✭ 336 (+2140%)
Mutual labels:  microservices-architecture
cryptographic-protocols-arduino-and-PC
This project demonstrates how cryptographic protocols can be implemented for the case when an Arduino board and a PC communicate. Primitives implemented: AES, RSA and Diffie–Hellman key exchange.
Stars: ✭ 46 (+206.67%)
Mutual labels:  proof-of-concept
run-aspnet-grpc
Using gRPC in Microservices for Building a high-performance Interservice Communication with .Net 5. See gRPC Microservices and Step by Step Implementation on .NET Course w/ discount->
Stars: ✭ 82 (+446.67%)
Mutual labels:  microservices-architecture
b-rabbit
A thread safe library that aims to provide a simple API for interfacing with RabbitMQ. Built on top of rabbitpy, the library make it very easy to use the RabbitMQ message broker with just few lines of code. It implements all messaging pattern used by message brokers
Stars: ✭ 15 (+0%)
Mutual labels:  microservices-architecture
envoy-nats-streaming
No description or website provided.
Stars: ✭ 28 (+86.67%)
Mutual labels:  microservices-architecture
spring-cloud-gcp-guestbook
No description or website provided.
Stars: ✭ 55 (+266.67%)
Mutual labels:  microservices-architecture
Consul.ServiceDiscovery.Demo
This demo shows how to implement simple containerized (Docker) microservice architecture with gateway, load balancer (Ocelot) and automatic service discovery (Consul).
Stars: ✭ 24 (+60%)
Mutual labels:  microservices-architecture
ecommerce-microservices-spring-reactive-webflux
E-commerce demo with spring reactive webflux and spring cloud microservice
Stars: ✭ 107 (+613.33%)
Mutual labels:  microservices-architecture
advisories
Advisories and Proofs of Concept by BlackArrow
Stars: ✭ 17 (+13.33%)
Mutual labels:  proof-of-concept
steamstatus
A quick and dirty POC website to view the status of Steam CM servers. Precursor to steamstat.us
Stars: ✭ 67 (+346.67%)
Mutual labels:  proof-of-concept
e-commerce-microservices
REST Microservices architecture for E-commerce with Spring boot, Cloud and multiple modules
Stars: ✭ 102 (+580%)
Mutual labels:  microservices-architecture
Umbraco-RCE
Umbraco CMS 7.12.4 - (Authenticated) Remote Code Execution
Stars: ✭ 61 (+306.67%)
Mutual labels:  proof-of-concept
arnold
👷‍♀️ Deploy your applications to Kubernetes with Ansible
Stars: ✭ 37 (+146.67%)
Mutual labels:  microservices-architecture
CVPZ
No description or website provided.
Stars: ✭ 16 (+6.67%)
Mutual labels:  microservices-architecture
Systemizer
A system design tool that allows you to simulate data flow of distributed systems.
Stars: ✭ 1,219 (+8026.67%)
Mutual labels:  microservices-architecture
clean-ddd-php-poc-contacts
A simple contact manager API to demonstrate the concepts of Clean Architecture and DDD with PHP 7.4+.
Stars: ✭ 31 (+106.67%)
Mutual labels:  proof-of-concept
sparql-micro-service
SPARQL micro-services: A lightweight approach to query Web APIs with SPARQL
Stars: ✭ 22 (+46.67%)
Mutual labels:  microservices-architecture
busysteg
👻 Hide information content into busy areas of images, optimally
Stars: ✭ 62 (+313.33%)
Mutual labels:  proof-of-concept

ORDER-MANAGEMENT-SYSTEM

Ecommerce demo microservice platform, a proof of concept for microservices architecture.

alt text

MICROSERVICES

CUSTOMERS

Rest based api to handle customer data and delivery addresses backed by MySQL

PRODUCTS

Rest based api to fetch product catalog backed by elastic search.

ORDERS

Rest based api to place an order backed by MySQL

ORDERS-GRAPH

Graphql based api to fetch order information, uses a query model backed by postgres

ORDERS-STREAM

Kafka streams process to enrich order information and expose them into a read model.

INFRAESTRUCTURE COMPONENTS

APACHE KAFKA

Apache kafka serves as the main messaging broker, decouples the comunication between services enssuring scalable

APACHE KAFKA CONNECT

Connector used to extract information from the different systems into kafka topics for late stream processing.

SQL DATABASES

MYSQL

Main database used for fast and simple operations

POSTGRESQL

Main database used for more complex data models and scalable models.

NO SQL DATABASES

ElasticSearch

Document based & text search database used to index product catalog

INSTALLING

REQUIREMENTS

  • Docker 19.03.8
  • Docker compose 1.21.2
  • NPM 6.4.1
  • Node v10.14.2
  • Java JDK 1.8.0
  • Kafka lite Image

Optional:

  • Curl or Postman

START THE ENVIRONMENT

docker-compose up -d

BUILD THE MICROSERVICES

# Build orders service
cd orders && npm run build
docker build -t oms-orders:1.0.0 .

# Build customers service
cd customers && npm run build
docker build -t oms-customers:1.0.0 .

# Build products service
cd products && npm run build
docker build -t oms-products:1.0.0 .

# Build orders-graph service
cd orders-graph && npm run build
docker build -t oms-orders-graph:1.0.0 .

# Build orders-stream service
cd orders-stream && ./gradlew build
docker build -t oms-orders-stream:1.0.0 .

CREATE TOPICS

# ENTER TO THE KAFKA DOCKER CONTAINER
docker exec -ti order-management-system_kafka_lite_1  sh

./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic customer
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic address
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic order
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic order_detail
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic products
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic orders-graph

SUBMIT THE CONNECTORS

To submit the connectors to the kafka connect api

curl -X POST -H "Content-Type: application/json" -d @./connectors/customers.json http://localhost:8083/connectors
curl -X POST -H "Content-Type: application/json" -d @./connectors/orders.json http://localhost:8083/connectors
curl -X POST -H "Content-Type: application/json" -d @./connectors/products.json http://localhost:8083/connectors
curl -X POST -H "Content-Type: application/json" -d @./connectors/graph.json http://localhost:8083/connectors

To validate connectors status:

curl http://127.0.0.1:8083/connectors/oms-customers/tasks/0/status
curl http://127.0.0.1:8083/connectors/oms-orders/tasks/0/status
curl http://127.0.0.1:8083/connectors/oms-products-sink/tasks/0/status
curl http://127.0.0.1:8083/connectors/oms-graph/tasks/0/status

The expected output should be something like:

{"id":0,"state":"RUNNING","worker_id":"localhost:8083"}

ROADMAP

  • Implement inventory system(redis based)
  • Implement shipping service(backed by event sourcing)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].