GithubHelp home page GithubHelp logo

nitisharyan / saga-pattern-example Goto Github PK

View Code? Open in Web Editor NEW

This project forked from victoramsantos/saga-pattern-example

0.0 0.0 0.0 76 KB

A Saga Pattern implementation with Kafka, MongoDb and Python.

Python 93.35% Dockerfile 2.26% JavaScript 4.40%

saga-pattern-example's Introduction

saga-example

Projeto de exemplo para demonstrar o padrão de arquitetura Saga.

No padrão Saga temos que para um determinado microsserviço as informações de completude de uma transação é dividida entre seus microsserviços servidores. Desta forma para definir, por exemplo, o estado de uma transação é necessário aguardar o processamento dos microsserviços servidores.

Cenário - Padaria

Para exemplificar o padrão foi escolhido o domínio de uma padaria. Neste domínio temos três personas sendo Garçons (waiter), Cozinheiros (cooker) e Barmen (bartender). Neste cenário, os garçons respondem quais são os itens do menu, realizam os pedidos e verificam se os pedidos estão prontos. Os cozinheiros e barmen recebem os pedidos e os produzem, aguardando o tempo necessário para preparo de cada item. Uma vez que cada item do pedido foi enviado para o preparo, é possível perguntar ao garçom se o pedido já está pronto. Caso esteja, o estado do pedido será pronto, caso contrário, pendente.

Arquitetura

Abaixo segue a arquitura implementada.

architecture

Conforme pode ser visto, foram criados diferentes microsserviços para cada persona. Optamos por utilizar o Apache Kafka para gerir as mensagens entre os microsserviços e o MongoDd como banco de dados.

Todos os microsserviços foram implementados em Python. Porém, como apenas o microsserviço waiter possui interface com o usuário, ele possui uma interface web construida utilizando Flask. Já os demais microsserviços (cooker e bartender) são apenas consumidores, logo não possuindo interface web.

Rodando a stack

Para construir as dependências necessárias para os microsserviços foi contruido um docker-compose.yml. Ele cria os containers Docker das aplicações, o Kafka e suas dependências (Zookeeper) além dos bancos de dados dos microsserviços.

Testando a stack

Visando simplificar o teste, é disponibilizado uma postman collection. Para confirmar o comportamento do padrão saga, execute uma chamada da API POST /order e verifique na API GET /order a mudança do estado (campo status) dos itens.

saga-pattern-example's People

Contributors

victoramsantos 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.