Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Architecting android app for scale

Architecting android app for scale

The presentation covers the design principles and architecture one should follow to build a scalable app. It provides in-depth knowledge on the tech stacks to be used for modernization. The last part talks about modularisation and how it helps in building a faster, performant, and scalable app.

Avatar for Ashwini Kumar

Ashwini Kumar

April 01, 2022
Tweet

More Decks by Ashwini Kumar

Other Decks in Technology

Transcript

  1. Architecting android app for Scale Ashwini Kumar Director of Engineering

    - PayU Credit GDE - Firebase @reactivedroid Build for India, Build for the world
  2. Goals • Develop in Kotlin. Use latest language constructs •

    Consistent design and app architecture • Separation of Concern • Enhance developer productivity • Better test coverage • Modernization of tech stack • Robust and scalable • Modularization of code base • Faster app performance
  3. The difference between good and bad architecture is the time

    you spent on it. - David Chipperfield
  4. App Design Clean Code Architecture • Outer circle -> Mechanisms

    & Inner Circle -> Contracts • Dependencies always point inwards • Separation of concern • Loose Coupling • Highly testable
  5. App Design MVVM Design • Model-View-ViewModel • Inversion of Control

    - DI • Unidirectional flow • Reactive with Kotlin Coroutines • Developer productivity • Easily modularised • Highly testable
  6. Don’t try to reinvent the wheel, just work on making

    it better than anyone else. - John Muir
  7. Modernisation • Kotlin with Coroutines • Handle Lifecycle with Lifecycle

    aware components like ViewModel • UI Using View- ViewBinding for interaction with UI and Data Binding to bind data into your UI. • Move across screens using Jetpack Navigation • Build with Jetpack Compose • Dependency Injection with HILT • Improve performance with Jetpack Benchmark and App Startup • Persistence with DataStore and Room • Image loading using Coil • Automation using Fastlane and Firebase App Distribution or any other CI/CD pipeline • Networking with Retrofit over OkHttp and Moshi
  8. We cannot learn something new and stick to it without

    a modular approach to application, positive reinforcement and a real change to environment. - David Amerland
  9. Modularisation • Multi-modular architecture • Improve build time • Separation

    of concern. • PODs or Containers for small modules. Focussed development. • High performance. • Faster feature delivery. • Use for experimentation around technologies. • Kotin Multi-Mobile Platform(KMP) ◦ SQLDelight ◦ Okhttp and more
  10. A good programmer is someone who always looks both ways

    before crossing a one-way street. - Doug Linder
  11. References • https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architectur e.html • https://developer.android.com/jetpack/guide • https://developer.android.com/training/dependency-injection/hilt-android • https://github.com/reactivedroid/TvFlix

    • https://github.com/chrisbanes/tivi • https://github.com/skydoves/Pokedex • https://github.com/ZacSweers/CatchUp • https://developer.android.com/jetpack/compose/ • https://github.com/android/compose-samples • https://touchlab.co/kotlin-multiplatform-guide/