Transition to Modular Architecture
Sowmya Viswanathan & Vidhi Thakrar
Developer & Tech Lead
Enterprise Mobile Applications are rapidly growing and providing a large set of features to the users. As mobile application codebase grows bigger, it becomes hard to maintain and scale the application in a conventional single module, generally called the ‘app’. It starts challenging the growth due to various problems such as tight feature coupling, lack of defect isolation, longer feedback loop, slower time to market, scaling the team, etc. Modularizing the application is at rescue to overcome these problems. It is not a naive concept to break the big system into subsystems, it’s been there for backend services since quite some time now in the form of microservices. On top of that, it also helps to leverage dynamic feature delivery.
We have faced the same challenge as highlighted above for a couple of our clients who have rapid growth of application. At a certain point, we were a 75 people distributed team working on 5 features at the same time and wanted to grow more but it was already hard not to step into each other's toes with the existing structure. We started outlining our modularization approach and after finishing it, we have seen tremendous success like a feedback loop time reduced by ~25%, time to develop new features reduced by ~20% and scaling the team size by ~30% etc.
Modular mobile application architecture is nothing new, It was also highlighted in Google IO 2019. However, As a part of this session, we will mainly focus on the transition to modularization and also the internals of it. At a very high level the outline of the session will be:
- Pain points of monolith application
- Objective of modularization
- Modularized architecture
- Different approaches of how features interact with each other with code examples
- How to approach the modularization in a large codebase and where to start?
- Success story of a real world example
I am a developer with 5+ years of experience who look forward to learning and solving problems in any opportunity being presented. On the mobile platform, I have working experience in Android have worked on enterprise applications using the same. I am also passionate about Kotlin and how the Android development advances through the language. I also have experience on working with microservices for the backend.
I have 13+ years of experience. Mainly worked on multiple mobile platforms like J2ME, Blackberry, Android and also have an experience on building cross platform framework for Android, iOS, Windows and Blackberry. I also have good experience on backend development.
In the recent past I led couple of big mobile projects around airline and retail domain. I have conducted several android and kotlin bootcamps and have spoken at droidconIN 2015.
I am always enthusiastic for system design, solving complex problems and learning something new.