With Silex Microframework You’re effectively deciding your own architecture and directory structure Symfony does the same, it just has defaults set up for you! Model Layer Persistence (Database) “Repository” Has methods like ‘get()’, ‘save()’ This is why we use interfaces - so we can just call the same methods that the interface defines, but how the concrete does that in the background doesn’t matter - we can write different implementations (database, file) that have the same methods so we can switch between them without changing any of the calling code! Persistence (Cache) Persistence (File) Additional layer of abstraction Interface here - you can save to anywhere with the same method calls