Nice app django — uniswa, does one thing, does it well, has some external API to communicate with other modules. Usually, even in a small project there are about a dozen apps. The advantages of this approach — much easier to test, reuse of code, can be relatively painless to change the implementation of a module without disrupting the entire site.
\r
Anti-pattern — a monolithic application (usually just one or two). Them, among other things, harder to maintain, because the code performs many not directly connected tasks (functions responsible for the generation of RSS and changing user avatars, are close together in this file, nothing will be done without a pint and ctrl-F). This is especially true when the team added new developer.
\r
Application interaction — a much more extensive topic, it so easily in two sentences, not to disclose, I think.