Remix.run Logo
gdcbe a day ago

That is a question I can answer in many ways. But the prime answer is that it's a weird question to ask.

When you mention tower you might mean two things:

1. the `Service` and `Layer` concept. That is in the end just a "tool" to provide composition. Just like you also use records (`structs`), procedures (functions) etc... We also lean on that concept. And also note that Tower did not invent that concept either. So in that sense Rama is just another child down the lane of this lineage.

2. The tower ecosystem. Rama can bridge into it, but it's true that we are not itself part of it. Six years ago Rama was still built directly with Tower. Later we created `tower-async`, and eventually we went our own road. This because it was clear at that point (and still is) that the tower ecosystem is not really gonna change any time soon despite rust having evolved a lot since its initial conception.

So if you like the concept of Tower, with its services and how it allows you to compose than you will also like Rama. That's however kinda where the comparison ends. Rama is a protocol agnostic network framework to build clients, servers and proxies. That is not what Tower is or its goal. Tower its only goal is provide an impl of the concept of "services". Rama uses that same concept, but its just one of many ways how we allow composition and is in a way just one of the concepts that make it so nice to build network services / network stacks.

Now different than what you might be used to in tower, is that in rama the service concept is everywhere (https://ramaproxy.org/book/intro/services_all_the_way_down.h...). You might also like to read https://plabayo.tech/blog/rama-101-2-core-concepts. With rama your services go through the different OSI layers, and easier to use and implement.

Rama is there as the foundation to build network services. Tower is there to provide you with a way to impl the concept of Services. Tower is also a ecosystem and we keep a very close eye on it. I suggest you explore Rama a bit for yourself. A lot more will be clear to you than whatever I might say here.