Using packages (gems, eggs, etc.) to create decoupled architectures
- by Juan Carlos Coto
The main issue
Seeing the good support most modern programming platforms have for package management (think gem, npm, pip, etc), does it make sense to design an application or system be composed of internally developed packages, so as to promote and create a loosely coupled architecture?
Example
An example of this would be to create packages for database access, as well as for authentication and other components of the system. These, of course, use external packages as well. Then, your system imports and uses these packages - instead of including their code within its own code base.
Considerations
To me, it seems that this would promote code decoupling and help maintainability, almost in a Web-based-vs.-desktop-application kind of way (updates are applied almost automatically, single code base for single functionality, etc.).
Does this seem like a rational and sane design concept? Is this actually used as a standard way of structuring applications today?
Thanks very much!