| Bounded domains, as Evans calls them in DDD. Indeed, how these domains communicate is rather irrelevant. It can be HTTP, injected objects, closures or functions, a message bus, an event store. I've worked on a few actually good Rails apps (out of hundreds of abysmal to just meh ones). Some just put all he bounded domains in libraries (gems, railties), some by pure message passing, one through sheer discipline to not ever add that has_many that would cross a domain boundary. Microservices are just one, very specific way to erect and enforce bounded domains. But there are many more. I guess, though, that in practice, "monolith" means "lack of any decoupling or domain boundaries". At least, to many it apparently does. So then there's still a large group of architectures that aren't exactly microservices (http communication, isolated runtimes and processes) but aren't monoliths either. What would those be called? |