Not my area of expertise at all, but mosquitoes seem unique in nature in that they can pick up diseases from one animal and spread them to another by direct blood transfusion. I've long wondered if this might confer some kind of advantage to the animals being bit, perhaps along the lines of how vaccines work.
"many fish leeches directly transmit several blood parasites"
"Consequently, the leech is a potential vector of many pathogens, especially in regions with an endemic spread of human and/or animal pathogens."
I agree the doordash article gets some stuff right and most stuff wrong, almost to the point where it's difficult to read. But (somewhat tangentially) I admit I have struggled in the past with separating out Django apps for reasons not mentioned in the article.
Specifically, say I have two apps, with a second more specific app heavily dependent on a first more general app. What I find in this scenario is that I sometimes need hooks into the general app from the specific app, which means that I wind up importing modules from the specific app into the general app. This hasn't generally been a showstopper in my experience, but it creates some friction because:
a) I would prefer for the general app to have no dependencies on the specific app
b) This results in circular imports (which can themselves be addressed, but this is an implementation detail I would prefer not to have to worry about)
I realize these issues can be mitigated with signals, but I try to use signals sparingly for various reasons (https://code.djangoproject.com/ticket/16547#comment:2). It also helps that foreign keys can be expressed using a string literal rather than the actual model, but in the end, I still occasionally run into situations I don't feel great about.
Please note that I'm not advising against separating out functionality into apps. Instead, I'm merely citing an issue about having multiple apps that bothers me.
Agreed. I've built and maintained a moderate size Django app for 5 years now, and had similar issues.
GOOD app division: my "members" app which has classes for UserProfile, MemberType, and communicates with an upstream 3rd party membership API. It doesn't have any dependencies, but a bunch of other apps that depend on it.
Another one I've just started work on is a generic Questionnaire/Survey app. This one is a definite candidate for spinning out as an open-source third-party app later, it lets you attach Questions and Answers to any of your own model objects via generic relations.
BAD app division: I have separate "Entry" and "EntryHandling" models across two apps, the latter is a OneToOne with an Entry. Originally this was a separation of concerns, but it's become a mess. Like the parent, the generic app ends up depending on the specific app, and migrations have to be handled gently and sometimes manually edited.
If you treat your Django apps as points that would be logical for splitting as micro-services, you'd probably be just fine.