Giter Site home page Giter Site logo

satishrawat / coolstore-microservices Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vietnam-devs/coolstore-microservices

0.0 1.0 0.0 44.46 MB

A Kubernetes-based microservices application on service mesh

Home Page: https://vietnam-devs.github.io/coolstore-microservices

License: MIT License

CSS 0.36% HTML 2.57% Smarty 0.23% Dockerfile 1.86% Shell 1.65% PowerShell 1.38% C# 83.25% JavaScript 0.03% TypeScript 6.14% TSQL 2.53%

coolstore-microservices's Introduction

CoolStore Web Application - 🎡 Kubernetes-based Microservices Application on Service Mesh ⛵

Travis (.org) Price OpenTracing Badge

 ______     ______     ______     __         ______     ______   ______     ______     ______    
/\  ___\   /\  __ \   /\  __ \   /\ \       /\  ___\   /\__  _\ /\  __ \   /\  == \   /\  ___\   
\ \ \____  \ \ \/\ \  \ \ \/\ \  \ \ \____  \ \___  \  \/_/\ \/ \ \ \/\ \  \ \  __<   \ \  __\   
 \ \_____\  \ \_____\  \ \_____\  \ \_____\  \/\_____\    \ \_\  \ \_____\  \ \_\ \_\  \ \_____\ 
  \/_____/   \/_____/   \/_____/   \/_____/   \/_____/     \/_/   \/_____/   \/_/ /_/   \/_____/ 

CoolStore Website is a containerised microservices application consisting of services based on .NET Core, NodeJS and more running on Service Mesh. It demonstrates how to wire up small microservices into a larger application using microservice architectural principals. Read documentation for more information.

The business domain is inspired from CoolStore project by JBoss Demo Central and Red Hat Demo Central.

Check out my blog or say hi on Twitter!

Try it online

Open in Gitpod

Usage with careful: The project is in development mode so that a lot of things shall change due to .NET Core 3.x upgrading.

Public presentation

Table of contents

Screenshots

Home page

home-page

Shopping Cart page

cart-page

Business Context

Conceptual Model

conceptual-model

Event Storming

es-bc

Context Map

es-context-map

OS, SDK, library, tooling and prerequisites

Infrastructure

  • Windows 10 - the OS for developing and building this demo application.
  • Windows subsystem Linux - Ubuntu OS - the subsystem that helps to run easily the bash shell on Windows OS.
  • Docker for desktop (Kubernetes enabled) - the easiest tool to run Docker, Docker Swarm and Kubernetes on Mac and Windows.
  • Kubernetes / AKS - the app is designed to run on Kubernetes (both locally on "Docker for Desktop", as well as on the cloud with AKS).
  • helm - the best package manager to find, share, and use software built for Kubernetes.
  • istio - application works on Istio service mesh.
  • linkerd2 - a service mesh for Kubernetes and beyond.

Back-end

  • .NET Core 3.x - .NET Framework and .NET Core, including ASP.NET and ASP.NET Core.
  • IdentityServer4 - the Identity and Access Control solution for .NET Core.
  • gRPC - a high-performance, open-source universal RPC framework.
  • Redis - General purpose redis client.
  • NEST - Elasticsearch.Net & NEST.

Front-end

  • nodejs 10.x - JavaScript runtime built on Chrome's V8 JavaScript engine.
  • typescript - a typed superset of JavaScript that compiles to plain JavaScript.
  • create-react-app - a modern web app by running one command.

High level software architecture

Architecture Screenshot

There are several individual µservices and infrastructure components that make up this app:

No. Service Description Source Endpoints
1. IdP (.NET Core + In-memory database)
Uses IdentityServer4 to authentication with OAuth 2.0 and OpenID Connect for the whole stack code dev and staging
2. GraphQL server (.NET Core)
The GraphQL server for backoffice application code dev and staging
3. OpenApi (.NET Core + envoy-proxy)
The OpenAPI which generated from gRPC contract files, hosted in OpenAPI format, and used envoy-proxy to proxy it code dev and staging
4. Web (PWA - Vuejs + Node.js)
Frontend based on vuejs and Node.js code dev and staging
5. Backoffice (React + TypeScript + Apollo-client)
The back office application for management business entities in the system code dev and staging
6. Catalog (Node.js + TypeScript + Mongo)
Serves products and prices for retail products code dev
7. Cart (.NET Core + MySQL)
Manages shopping cart for each customer code dev
8. Inventory (.NET Core + MySQL)
Serves inventory and availability data for retail products code dev
9. Rating (Node.js + TypeScript + Mongo)
Runs for rating products code dev

Installation

Development environment

Up and running with Docker and docker compose

$ docker-compose -f docker-compose.yml -f docker-compose.dev.yml build
$ docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d

See https://vietnam-devs.github.io/coolstore-microservices/development/#up-and-running-with-docker-and-docker-compose

Staging and Production environments

Up and Running on Azure Kubernetes Service (AKS)

See https://vietnam-devs.github.io/coolstore-microservices/development/#up-and-running-manually-on-docker-for-desktop-and-aks

µService development

Guidance for developing µService can be found at Clean Domain-Driven Design in 10 minutes

µService Screenshot

Open API

OpenAPI Screenshot

https://documenter.getpostman.com/view/4847807/SVmvUeZv?version=latest#9f5ed7e4-e855-46e5-a42d-64edb31bc1cb

CI/CD

Lift and Shift

Service mesh

istio provide a wealth of benefits for the organizations that use them. There’s no denying, however, that adopting the cloud can put strains on DevOps teams. Developers must use microservices to architect for portability, meanwhile operators are managing extremely large hybrid and multi-cloud deployments. Istio lets you connect, secure, control, and observe services.

Distributed tracing

DAG chart

Trace chart

Metrics

Metrics chart

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :p

Contributors ✨

Thanks goes to these wonderful people (emoji key)


Thang Chung

💻 💬 📖 👀 🚇 🚧


Phuong Le

💻 📦 🚇


Phi Huynh

🤔 🚇


Thinh Nguyen

💻 🚧


Stuart Leeks

📖

Licence

Code released under the MIT license.

coolstore-microservices's People

Contributors

thangchung avatar thinhnotes avatar thinhnguyenh avatar trumhemcut avatar stuartleeks avatar azure-pipelines[bot] avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.