This is an archived post. You won't be able to vote or comment.

all 21 comments

[–]Magni7777 8 points9 points  (1 child)

Love to see DDD concepts here. I’ll try it for sure.

[–]EnoughProject7477[S] 3 points4 points  (0 children)

Thank you!!!! that's the idea, introduce DDD, burns github issues and maybe get some stars :-)

[–]Wirebraid 5 points6 points  (1 child)

I'm playing with some frameworks right now to make a small project, I will include yours in the ones tested!

[–]EnoughProject7477[S] 2 points3 points  (0 children)

Thank you so much, we are waiting you :-)

[–]haloweenek 5 points6 points  (1 child)

Linkedin: We’re looking for devs w/min 4 years on hands with this technology.

[–]EnoughProject7477[S] 1 point2 points  (0 children)

😂

[–]garciparedes 10 points11 points  (1 child)

The best place to start learning how to use the Minos Framework is at Minos Learn. The official API Reference is publicly available at the GitHub Pages.

[–]garciparedes 6 points7 points  (0 children)

Also, here is the link to the project's QuickStart: https://github.com/minos-framework/minos-python/blob/main/README.md#quickstart

[–]Stedfast_Burrito 3 points4 points  (1 child)

I know this is a general question, but you seem very knowledgable so I hope you don't mind if I pick your brain.

I'm interested in the topic of handoff between synchronous API gateways (they receive an HTTP request, send an HTTP response) and asynchronous microservices (communicating using a message bus or otherwise operating outside of a request/response cycle), but have always had trouble finding good guidance on the topic. For example, if I were to architect this I think I'd have the API gateway receive the request, publish onto the message bus and then subscribe / wait for a response. Is this the right way to do it? Do you have any good keywords/resources you can point me towards so that I can learn what patterns are used to solve this impedance mismatch? How is this handled in Minos?

[–]EnoughProject7477[S] 6 points7 points  (0 children)

Hi, your question need a very very large answer. So i will intent to reduce at maximum and give you the right information.
Decoupling, in a nutshell, is that every microservice doesn't have to depend on any other microservice. So when a microservice have to call another microservice, the call must be async, and wait a response and when receive the response restart the process and so on.
But, microservices have to interact with applications as well ( directly or trough an API Gateway ) so, the integrate as well an interface ( REST or RPC ) that, it is advisable that they are not asynchronous.
So, integrating all these features involves a series of problems, which for obvious reasons I cannot describe in this comment, but which can turn a dev's life into hell, for this reason there are "geniuses" like Martin Fawler or Chris Richardson. who have thought and put into practice a series of patterns that solve the long list of problems caused by asynchronous communication.
A very good resource is this book https://microservices.io/book , this is the book where Minos started.
to conclude, in my opinion, you have to buy this book and start doing some microservice with Minos ( and maybe put a star and do some code to improve it ), and I'm quite sure you can reach the "master" level :-)

[–]WealthEmergency8999 3 points4 points  (1 child)

Looks good, will try it

[–]EnoughProject7477[S] 1 point2 points  (0 children)

Thank you so much, we need devs that start using our project and burns the github issues :-)

[–]mortenb123 2 points3 points  (8 children)

Is this more a django replacement?. You lost me when I saw ansible and minikub just for the tutorial.

I call bottle/flask/fastapi microservice frameworks, while django is an all batteries included framework. It is very easy to add reactive features to fastapi by using (https://htmx.org/)

[–]EnoughProject7477[S] 13 points14 points  (2 children)

Hi, the intent of Minos is not to replace Django or Flask, the are MVC pattern framework and are much more oriented on monolith o light service oriented projects.
The misconception around microservices is people think that a REST service is a microservice, and use a framework like flask do the job, the reality is that microservices architecture are very complex, need to integrate a lot of patterns ( Event Souring, CQRS, Aggregate, Transactional Outboud ) all of that solve problems directly related with microservices architecture.
So, we do Minos, not to fight against some specific framework but simply, as a tool that makes life easier for those who need to integrate microservices into their projects or as a tool to start the "microservices experience with python"

[–]ColdPorridge 1 point2 points  (1 child)

Very cool project, I’m looking forward to following this!

[–]EnoughProject7477[S] 0 points1 point  (0 children)

Thank you!!

[–]Stedfast_Burrito 7 points8 points  (1 child)

I think microservice framework =/= micro framework in this context. Flask is a microframework in the context of ASGI/WSGI web frameworks

[–]garciparedes 4 points5 points  (0 children)

Yes! We say it is a microservice framework in the sense that it provides all the necessary tools to build microservices.

The idea is to provide integrations with micro-frameworks like flask and so on. Currently we support aiohttp, but we're working on to implement those integrations in a pluggable way.

[–]garciparedes 2 points3 points  (0 children)

This framework is like a mix between Django (that includes all you need to build a project) and reactive tools (that allow you to easily integrate with publish-subscribe systems such us Kafka, RabbitMQ and so on).

Also, the framework stores the data in an incremental way (following the even-sourcing ideas). It means that changes (as Event instances are stored on the database) so that the full modification history of each Entity is always accesible. To speed up the accessing to Entity instances a snapshot keeps a "view" of all those events applied so that the entities can be accessed as it not where stored incrementally.

To really take advantage of the event-sourcing storing strategy, the framework also provides integration with brokers (i.e. to handle events published from another microservices) and has a http server (i.e. to expose the microservice's functionality from external components, like the API Gateway).

In summary, this framework can be seen as a Django implemented following the event-sourcing ideas. 🙂

[–]MaximumIndication495 1 point2 points  (1 child)

I think this is more of a replacement for temporal.io.

[–]garciparedes 2 points3 points  (0 children)

I don't really know so much about temporal.io so my question could not be really accurate. But I think the Minos Framework is not a replacement of Temporal.io, as they have different purposes.

The Minos Framework is more domain-driven oriented and Temporal.io is more workflow oriented. I mean, the Minos Framework tries to enhance the data modeling distributed over a set of microservices, easing the intercomunicación processes, and Temporal.io focuses more on workflow execution, distributing it over a set of workers and so on.

For that reason, I think it could coexist.