There are many kinds of complexity that you have to deal with developing software and different kinds of applications will have very different sets of problems you need to solve. If you are building the next Twitter, scalability and fault-tolerance are the problems you are probably fighting. On the other hand, these problems are almost never an issue when working on enterprise applications. The co
![DDD for Rails Developers. Part 1: Layered Architecture. — SitePoint](https://cdn-ak-scissors.b.st-hatena.com/image/square/7649284010e8c3cd73a345521cb7e69aa257cd3d/height=288;version=1;width=512/https%3A%2F%2Fwww.sitepoint.com%2Fwp-content%2Fthemes%2Fsitepoint%2Fassets%2Fimages%2Ficon.ruby.png)