Skip to content

thangchung/practical-dapr

Repository files navigation

practical-dapr project

A lightweight low ceremony .NET microservices are lifted and shifted to Kubernetes platform and run on Dapr runtime (with and without Tye options).

Price webhost-ui graphql-api identity-api product-catalog-api inventory-api

This repository based on some of the old libraries. So be careful if you use it in your production environment!!!

We're working on clean-architecture-dotnet for the new and lightweight version of the minimal Clean Architecture, Domain-driven Design lite, CQRS lite, and just enough Cloud-native patterns, then package into Docker, and finally deploy it using Tye on Kubernetes and Dapr in a practical way 👍

High level architecture

CoolStore demo application

Want to develop this application? Reference at Developer Guidance

Want to deployment this application? Reference at Deployment Guidance

Dapr building blocks

Service to service

  • Dapr client to calling to another service (product-catalog-api to inventory-api)
  • HTTP/gRPC invocation

State store

  • Using state management to store the shopping cart data and its items
  • Redis for state management

Pub/sub message

  • Create, update and delete a project at product-catalog-api, and subsequently publish an event to inventory-api to create price, rop, and eoq
  • Redis for pub/sub

Input/output binding

TODO

Observability

  • Run tye command as following
$ tye run --dtrace zipkin=http://localhost:9411 --logs seq=http://localhost:5340
  • Log management with Seq dashboard

  • Distributed Tracing with Zipkin dashboard (OpenTelemetry)

Technical stack is at technical_stack

Show your support

If you liked practical-dapr project or if it helped you, please give a star ⭐ for this repository. That will not only help strengthen our .NET community but also improve cloud-native apps development skills for .NET developers in around the world. Thank you very much 👍

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