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.

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/