Patterns of enterprise application architecture - Fowler, Martin (Addison-Wesley, 2008)