{"repo":"cloudblue/django-cqrs","free":true,"listed":false,"github":"https://github.com/cloudblue/django-cqrs","clone":"git clone https://github.com/cloudblue/django-cqrs.git","description":"django-cqrs is an Django application, that implements CQRS data synchronization between several Django micro-services","language":"Python","stars":129,"topics":["django","django-cqrs","microservices","rabbitmq","python","highload","cqrs"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"Django CQRS =========== django-cqrs is an Django application, that implements CQRS data synchronisation between several Django microservices. CQRS ---- In Connect we have a rather complex Domain Model. There are many microservices, that are decomposed by subdomain and which follow database-per-service pattern. These microservices have rich and consistent APIs. They are deployed in cloud k8s cluster and scale automatically under load. Many of these services aggregate data from other ones and usually API Composition is totally enough. But, some services are working too slowly with API JOINS, so another pattern needs to be applied. The pattern, that solves this issue is called CQRS - Command Query Responsibility Segregation. Core idea behind this pattern is that view databases (replicas) are defined for efficient querying and DB joins. Applications keep their replicas up to data by subscribing to Domain events published by the service that owns the data. Data is eventually consistent and that's okay for non-critical business transactions. Documentation ============= Full documentation is available at https://django-cqrs.readthedocs.org. Examples ======== You can find an example project here Integration ----------- Setup RabbitMQ Install django-cqrs Apply changes to master service, according to RabbitMQ settings Apply changes to replica service, according to RabbitMQ settings Apply migrations on both services Run consumer worker on replica service. Management command: python mana","default_branch":null,"files":null,"tree":[],"storefront":"/r/cloudblue","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/cloudblue/django-cqrs/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}