# Building a really DRY infra-structure: sharing a database and models between multiple apps

**URL:** <https://www.ruby-forum.com/t/building-a-really-dry-infra-structure-sharing-a-database-and-models-between-multiple-apps/144073>\
**Category:** Rails\
**Created:** [July 25, 2008, 5:30am UTC](https://www.ruby-forum.com/t/building-a-really-dry-infra-structure-sharing-a-database-and-models-between-multiple-apps/144073 "2008-07-25T05:30:19Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mhfs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/b2d939/32.png) [@mhfs](https://www.ruby-forum.com/u/mhfs)\
**Post date:** [July 25, 2008, 5:30am UTC](https://www.ruby-forum.com/t/building-a-really-dry-infra-structure-sharing-a-database-and-models-between-multiple-apps/144073/1 "2008-07-25T05:30:19Z")

</div>

Hello,

I was wondering about database/model sharing between applications. In  
the  
previous company I worked, my boss thought that the best way to build a  
strong application infra-structure (kind of SOA-based) was to have ONE  
BIG  
shared database between the various applications. Since the company  
works  
with a certain business domain, these applications would all solve  
problems  
related to this business domain too, and the database, in theory, would  
scale up to be the perfect KB for the company, and, also in theory,  
things  
could be made very DRY.

These application would all be all web-based. And at the time, they were  
thinking on using Java (migrating from desktop Delphi to Java/Web).

In the beginning I liked the approach. The idea of having one big  
database  
back-end able to serve any application, was the truly integration  
heaven.  
Entitites wouldn’t be tied to applications, but instead, be implemented  
as  
middleware models, using Spring.

Java is nice, but not very agile. Also, after applying some agile  
thoughts  
in this idea, I started to see that it was not very agile at all, and  
not  
really suitable to do with Rails (at least not after putting a lot of  
time  
thinking about how to do it without messing things).

I can see where this would have potential though. Imagine two similar  
applications that, in its objects model, both have an Event model. I can  
see  
both of these applications using the same database, sharing Events data.  
Also, the model could be shared between applications via plugins, and  
additional logic put as needed.

However, I think that it is more trouble that its worth, in the end.  
Maybe  
being a little wet, creating two databases, and sharing via websevices  
as  
needed would be a more pragmatic approach.

What do you think? Did you have a similar experience?
