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

    View Slide

  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

    View Slide

  3. The difference between good and bad
    architecture is the time you spent on it.
    - David Chipperfield

    View Slide

  4. App Design
    Clean Code Architecture
    ● Outer circle -> Mechanisms &
    Inner Circle -> Contracts
    ● Dependencies always point
    inwards
    ● Separation of concern
    ● Loose Coupling
    ● Highly testable

    View Slide

  5. App Design
    MVVM Design
    ● Model-View-ViewModel
    ● Inversion of Control - DI
    ● Unidirectional flow
    ● Reactive with Kotlin Coroutines
    ● Developer productivity
    ● Easily modularised
    ● Highly testable

    View Slide

  6. Don’t try to reinvent the wheel, just work on
    making it better than anyone else.
    - John Muir

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  10. Modularisation
    Tivi by Chris Banes

    View Slide

  11. A good programmer is someone who always looks
    both ways before crossing a one-way street.
    - Doug Linder

    View Slide

  12. 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/

    View Slide

  13. Thank You :)

    View Slide