Advantages of a layered architecture

Advantages
  1. Enables develop loosely coupled systems
  2. Application can be independently deployed, maintained, and updated, on different time schedules
  3. Helps you to test the components independently
  4. Multiple applications can reuse the components
Dis-Advantages
  1. Extra overhead of passing through layers instead of calling a component directly
  2. Separating codes leads to complexity to simple applications
Source: http://venkataspinterview.blogspot.com/2011/03/what-are-advantages-and-disadvantages.html