# coolstore-microservices **Repository Path**: iagiler/coolstore-microservices ## Basic Information - **Project Name**: coolstore-microservices - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-24 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CoolStore Web Application - :ferris_wheel: Kubernetes-based Microservices Application on Service Mesh :sailboat:  [](https://github.com/vietnam-devs/coolstore-microservices/blob/master/LICENSE) [](http://opentracing.io) ``` ______ ______ ______ __ ______ ______ ______ ______ ______ /\ ___\ /\ __ \ /\ __ \ /\ \ /\ ___\ /\__ _\ /\ __ \ /\ == \ /\ ___\ \ \ \____ \ \ \/\ \ \ \ \/\ \ \ \ \____ \ \___ \ \/_/\ \/ \ \ \/\ \ \ \ __< \ \ __\ \ \_____\ \ \_____\ \ \_____\ \ \_____\ \/\_____\ \ \_\ \ \_____\ \ \_\ \_\ \ \_____\ \/_____/ \/_____/ \/_____/ \/_____/ \/_____/ \/_/ \/_____/ \/_/ /_/ \/_____/ ``` 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](https://vietnam-devs.github.io/coolstore-microservices) for more information. The business domain is inspired from [CoolStore project](https://github.com/jbossdemocentral/coolstore-microservice) by [JBoss Demo Central](https://github.com/jbossdemocentral) and [Red Hat Demo Central](https://gitlab.com/redhatdemocentral). > Currently, we're working on [practical-dapr project](https://github.com/thangchung/practical-dapr) which uses and leverages [Dapr](https://github.com/dapr/dapr) and [Tye](https://github.com/dotnet/tye) from Microsoft to run CoolStore website without need Docker, Docker-compose, and Helm chart for running on localhost and deploying to Kubernetes platform. If you are interested in, please come over [that link](https://github.com/thangchung/practical-dapr)! Check out my [blog](https://medium.com/@thangchung) or say hi on [Twitter](https://twitter.com/thangchung)! ## Try it online [](https://gitpod.io#https://github.com/vietnam-devs/coolstore-microservices) > 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 - [Service Mesh on AKS, the future is now - Microsoft Build event in May 2019](https://mybuild.techcommunity.microsoft.com/sessions/77172?source=TechCommunity) - [From Microservices to Service Mesh - DevCafe event in July 2018](https://www.slideshare.net/ThangChung/from-microservices-to-service-mesh-devcafe-event-july-2018) - [Service Mesh for Microservices- Vietnam Mobile Day event in June 2018](https://www.slideshare.net/ThangChung/service-mesh-for-microservices-vietnam-mobile-day-june-2017) - [Avoid SPOF in Cloud-native Apps - Vietnam Web Summit event in December 2018](https://www.slideshare.net/ThangChung/avoid-single-point-of-failure-in-cloud-native-application) # Table of contents - [Screenshots](https://github.com/vietnam-devs/coolstore-microservices#screenshots) - [Business Context](https://github.com/vietnam-devs/coolstore-microservices#business-context) - [OS, SDK, library, tooling and prerequisites](https://github.com/vietnam-devs/coolstore-microservices#os-sdk-library-tooling-and-prerequisites) - [High level software architecture](https://github.com/vietnam-devs/coolstore-microservices#high-level-software-architecture) - [Installation](https://github.com/vietnam-devs/coolstore-microservices#installation) - [µService development](https://github.com/vietnam-devs/coolstore-microservices#µmicroservice-development) - [Open API](https://github.com/vietnam-devs/coolstore-microservices#open-api) - [CI/CD](https://github.com/vietnam-devs/coolstore-microservices#ci-cd) - [Service mesh](https://github.com/vietnam-devs/coolstore-microservices#service-mesh) - [Contributing](https://github.com/vietnam-devs/coolstore-microservices#contributing) - [Contributors](https://github.com/vietnam-devs/coolstore-microservices#contributors) - [Licence](https://github.com/vietnam-devs/coolstore-microservices#licence) ## Screenshots ### Home page  ### Shopping Cart page  ## Business Context ### Conceptual Model  ### Event Storming  ### 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`](https://docs.microsoft.com/en-us/windows/wsl/install-win10)** - the subsystem that helps to run easily the bash shell on Windows OS. - **[`Docker for desktop (Kubernetes enabled)`](https://www.docker.com/products/docker-desktop)** - the easiest tool to run Docker, Docker Swarm and Kubernetes on Mac and Windows. - **[`Kubernetes`](https://kubernetes.io) / [`AKS`](https://docs.microsoft.com/en-us/azure/aks)** - the app is designed to run on Kubernetes (both locally on "Docker for Desktop", as well as on the cloud with AKS). - **[`helm`](https://helm.sh)** - the best package manager to find, share, and use software built for Kubernetes. - **[`istio`](https://istio.io)** - application works on Istio service mesh. - **[`linkerd2`](https://github.com/linkerd/linkerd2)** - a service mesh for Kubernetes and beyond. ### Back-end - **[`.NET Core 3.x`](https://dotnet.microsoft.com/download)** - .NET Framework and .NET Core, including ASP.NET and ASP.NET Core. - **[`IdentityServer4`](https://identityserver.io)** - the Identity and Access Control solution for .NET Core. - **[`gRPC`](https://grpc.io)** - a high-performance, open-source universal RPC framework. - **[`Redis`](https://github.com/StackExchange/StackExchange.Redis)** - General purpose redis client. - **[`NEST`](https://github.com/elastic/elasticsearch-net)** - Elasticsearch.Net & NEST. ### Front-end - **[`nodejs 10.x`](https://nodejs.org/en/download)** - JavaScript runtime built on Chrome's V8 JavaScript engine. - **[`typescript`](https://www.typescriptlang.org)** - a typed superset of JavaScript that compiles to plain JavaScript. - **[`create-react-app`](https://facebook.github.io/create-react-app)** - a modern web app by running one command. ## High level software architecture  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 |
Thang Chung |
Phuong Le |
Phi Huynh |
Thinh Nguyen |
Stuart Leeks |