I was listening to Clean Architecture Presentation by Robert C Martin. http://vimeo.com/43612849
The last project I was working we had attempted to have an Architecture where delivery mechanism was plugged in. It started well. But on the way lot of crap and delivery mechanism got mixed up. We had to do a lot of the refactoring to improve the stuff. But still there is lot of mess we are working on it.
The challenges we faced were
1) Interface Model (Request and Response Model) had dependencies with the Entity model. (Root cause of the issue directory structure for the project was not correct)
2) Business Services (Interactors) and Delivery mechanism got mixed up.
3) Security was the at delivery layer only.
Authentication at the Interactors were costing for the performance and turned off. The Interactors had to trust the Delivery layer for the security.
4) Delivery layers were stateless REST calls. Although mess it was something we could still manage.
5) Couldn't get the correct directory layout this created lot of confusions.
The good things were
1) UI is completely plugged in to the system. No dependency. So it had complete different lifecycles
2) Good amount of Unit testing which finished fast. We did achieve this with lot of refactoring.
3) Framework code was extracted so could changes the frameworks often.
The following is extract of chat we had in our dev chat we had some time back.
***************
Team member A: Uncle Bob's latest post about the DB and beer: http://blog.8thlight.com/uncle-bob/2012/05/15/NODB.html
Team member B: From a hands-on approach, some arguments in the opposite direction: http://saucelabs.com/blog/index.php/2012/05/goodbye-couchdb/
Team member B: I am not saying that any of them is right, I am just saying that we can find arguments for both sides of the question
Team member C: but Uncle Bob's point is that the database should not be the central, most important part of the database - no matter what it is, whereas the second article is arguing one db over another
Team Member E: This are non-controversial issue: 1) The use cases are the central driver for the architecture, not the DB. 2) Most apps do need a DB, so which on to take?
Team Member A: challenging Uncle Bob on NODB: http://www.techdarkside.com/dear-uncle-bob-please-please-show-me-the-code
Team Member A: and his response: http://cleancoder.posterous.com/aldos-response
******************