CoolStore is a containerised polyglot 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 https://vietnam-devs.github.io for more information about how can we design and implement it.
The business domain for internal µservice is inspired from CoolStore project by JBoss Demo Central and Red Hat Demo Central. The readme file is inspired from GoogleCloudPlatform Demo.
- From Microservices to Service Mesh - DevCafe event in July 2018
- Service Mesh for Microservices- Vietnam Mobile Day event in June 2018
- Avoid SPOF in Cloud-native Apps - Vietnam Web Summit event in December 2018
Check out my blog, my chat or say hi on Twitter!
- OS, SDK, library, tooling and prerequisites
- High level software architecture
- Installation
- µService development
- Open API
- CI/CD
- Service mesh
- Contributing
- Contributors
- Licence
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 OSDocker for desktop (Kubernetes enabled)
- the easiest tool to run Docker, Docker Swarm and Kubernetes on Mac and WindowsKubernetes
/AKS
- the app is designed to run on Kubernetes (both locally on "Docker for Desktop", as well as on the cloud with AKS)istio
- application works on Istio service meshhelm
- the best package manager to find, share, and use software built for Kubernetesenvoy-proxy
- open source edge and service proxy, designed for cloud-native applications.NET Core SDK 2.x
- .NET Framework and .NET Core, including ASP.NET and ASP.NET Corenodejs 10.x
- JavaScript runtime built on Chrome's V8 JavaScript enginetypescript
- a typed superset of JavaScript that compiles to plain JavaScriptidentityserver
- the Identity and Access Control solution for .NET CoregRPC
- a high-performance, open-source universal RPC frameworkcreate-react-app
- a modern web app by running one commandvue-cli
- standard tooling for Vue.js developmentapollo-client
- the best way to use GraphQL to build client applicationstanka-graphql
- GraphQL execution library with SignalR based server and ApolloLink implementationnetcorekit
- a crafted microservices toolkit for building cloud-native apps on the .NET platform
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. | Pricing (.NET Core + MySQL) | Handles a business rules application for product pricing | code | dev |
10. | Review (.NET Core + MySQL) | Runs for writing and displaying reviews for products | code | dev |
11. | Rating (Node.js + TypeScript + Mongo) | Runs for rating products | code | dev |
See https://vietnam-devs.github.io/docs/development/up-running-d4d-aks/#docker-for-desktop
$ docker-compose up
$ docker-compose -f docker-compose-graphql.yml up
$ docker-compose -f docker-compose-graphql.headless.yml up
$ docker-compose -f docker-compose-graphql.dev.yml up
See https://vietnam-devs.github.io/docs/development/up-running-d4d-aks/#azure-kubernetes-service-aks
Guidance for developing µService can be found at Clean Domain-Driven Design in 10 minutes
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.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :p
Thang Chung Developer |
Thinh Nguyen Developer |
Stuart Leeks Contributor |
Phi Huynh Contributor |
Code released under the MIT license.