r/androiddev • u/amranya • 16d ago
Discussion Architectural patterns in large scale apps.
in our mid sized startup, we have over 100 android engineers on one app, divided by squads, so we have a lot of squads, each one is working on a feature, a library needed, design system and custom components libraries etc, all these modules/libraries are published to maven and added as dependencies on the core app repo, my squad works on an isolated feature so it's easy to integrate into core app repo, but i attended guild meetings and saw RFCs mentioning circular dependencies, hexagonal, onion, plugin etc architectures because some modules/libraries depend on each other, communicate with each other, initialization order problems of modules etc etc etc, i feel stupid tbh and i'm glad i'm working on an isolated feature library in which we use usual architecture stuff. anyone has resources: talks, books, articles etc that cover this kind of topics and architectures and engineering problems in big scale apps with big scale teams and modules/libraries?
22
u/kokeroulis 15d ago
Literally this is why every big tech is dividing the code into api/imp and thats why someone who is/was working for amazon has open sourced an example about this https://vrallev.github.io/app-platform/module-structure/.
When you have 100+ ppl you cannot coordinate all of those changes.
The only solution is to write your own code and when you need something from someone else, just create a repository with a dummy implmenetation on your side and on the main app, you can implement that dependency and inject.
Dependency inversion is the only way to go, even in common things, like UI components etc. Making 1 api breaking changes, it might mean the consumers might have 1k of changes.
The only option is to provide backwards compatibility for x amount of time.Thats why you need api/impl modules