Recommendations for Frameworks that Combine Monolith and Microservice Benefits

This message was imported from the Ruby/Rails Modularity Slack server. Find more info in the import thread.

Good to see big companies exploring the modular monolith approach

https://twitter.com/kelseyhightower/status/1630995723956412420

the overhead of maintaining multiple different microservice binaries—with their own configuration files, network endpoints, and serializable data formats—significantly slowed our development velocity.

Service Weaver, is a framework that has the best of both worlds: the development velocity of a monolith, with the scalability, security, and fault-tolerance of microservices.

I wish I had more time to read about this, but the gut feeling is that by using this you’ll effectively end up with a “distributed monolith” :thinking_face:

That is, if Google doesn’t kill the project over the next few months like they often do :joy:

yes, but I think the major benefit is what Kelsey said here https://twitter.com/kelseyhightower/status/1631659425827270656

I think most people can still leverage the Service Weaver framework to help write and maintain modular code even when deployed as a monolith. The builtin observability tools, packaging, and deployment SDKs are pretty dope too.

If the time comes and you need to deploy parts of the app independently, to create a security boundary for example, then ideally you’re a configuration change away.

Message originally sent by slack user U70NT4Z5OIU

distributed objects and application servers…

Message originally sent by slack user U70NT4Z5OIU

what year is it

The ability to vary deployment boundaries independently from package boundaries has been around a long time. At least as far back as the 90s.

Rails can already be made to work this way, for instance, if you build “engines” instead of a single “app.” For deployment, you can declare a single application, or many, and mount any number of engines in each app.

Message excluded from import.

Message excluded from import.

Message excluded from import.

Message excluded from import.

Message excluded from import.