Avoid monolithic applications -> architecture doubts

Hi,

 We are developing an APP and we like to make it as modular as

possible, the reasons?
- Isolate functionality
- Be able to work with different versions, for example module1 with
rails 3.0.1, module2 with 3.0.2, module 3 trough WS with an external
APP, …
- Avoid monolithic applications, we think they are hard to
maintain

 Our first idea was to develop one APP for each module and we where

discussing how to connect them.
- Creating a “monolithic gem” with all the shared services
(modules, routes, views), and erasing the functionality from the
original APP
- Creating a “monolithic plugin” same method… but in this case we
think will have to repeat the functionality between de APP’s and the
plugin.
- Communications trough web services between APP’s

 Which problems are we encountering?
 - Some modules need to be almost everywhere, for example in a

medical APP we need the administrative module (name, gender, birth,
paying info), almost everywhere (hospital, emergency, radiology, …)
- In the gem and plugin, we have doubts how to synchronize the
migrations, images, css, updated everywhere.

 I like to know which approach you consider the best for this

architecture, problems that you encountered or any advice / opinion.

 Thanks,


Miquel C. Escarr
+34 699 73 22 46
[email protected]

Miquel C. wrote in post #1009473:

 We are developing an APP and we like to make it as modular as

possible, the reasons?
- Isolate functionality
- Be able to work with different versions, for example module1 with
rails 3.0.1, module2 with 3.0.2, module 3 trough WS with an external
APP, …
- Avoid monolithic applications, we think they are hard to
maintain

 Our first idea was to develop one APP for each module and we where

discussing how to connect them.
- Creating a “monolithic gem” with all the shared services
(modules, routes, views), and erasing the functionality from the
original APP
- Creating a “monolithic plugin” same method… but in this case we
think will have to repeat the functionality between de APP’s and the
plugin.
- Communications trough web services between APP’s

 Which problems are we encountering?
 - Some modules need to be almost everywhere, for example in a

medical APP we need the administrative module (name, gender, birth,
paying info), almost everywhere (hospital, emergency, radiology, …)
- In the gem and plugin, we have doubts how to synchronize the
migrations, images, css, updated everywhere.

 I like to know which approach you consider the best for this

architecture, problems that you encountered or any advice / opinion.

Having some experience in this space I can say with confidence that
there is NO easy answer to this question. Monolithic apps are HARD not
matter how you slice them.

I work in an “enterprisy” environment and a lot of buzz words get thrown
around. Most notably as related to this topic is the term Service
Oriented Architecture (or SOA for short). This has been a hot topic in
the enterprise space. SOA seems, on the surface, to be the “magic
bullet” that will solve all these problems utilizing web services
scattered throughout the organization, each contributing its small part
to driving the whole array of business needs.

From my experience though, SOA comes with its own set of issues. The
most obvious are performance and complexity. Most SOA systems are based
on SOAP, which carries a lot of overhead. SOA has its uses, but I really
don’t expect it to be the “dream” solution for building monolithic
enterprise applications. Like everything else that’s been attempted it
will have its place, but I don’t expect this stuff to get much easier in
the foreseeable future.