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

Droidcon NYC 2023: Measuring and Improving Perf...

Colin Marsch
September 14, 2023

Droidcon NYC 2023: Measuring and Improving Performance

Are you looking to track and improve the performance of specific customer flows in your app? We were at Cash App and in this talk I’ll walk through how we went about measuring, monitoring and improving the performance of one of Cash App’s main screens! I’ll discuss what metrics we tracked, how we set up alerting to ensure our product was healthy and how these checks set us up well for a future migration. Come join us to hear about what kind of instrumentation we considered and what made the final cut!

Colin Marsch

September 14, 2023
Tweet

More Decks by Colin Marsch

Other Decks in Programming

Transcript

  1. Overview • Where we started • What metrics we are

    tracking • Collecting the data • Setting up monitoring
  2. Overview • Where we started • What metrics we are

    tracking • Collecting the data • Setting up monitoring • Challenges we faced
  3. Overview • Where we started • What metrics we are

    tracking • Collecting the data • Setting up monitoring • Challenges we faced • Discoveries
  4. Why now? • Compare data during a Kotlin Multiplatform migration

    • Have visibility into the features on the screen
  5. Why now? • Compare data during a Kotlin Multiplatform migration

    • Have visibility into the features on the screen • Ensure Cash App is performant for all customers
  6. sealed interface AppletState { data class Loading(...) : AppletState data

    class Unadopted(...) : AppletState data class Adopted(...) : AppletState data class Unavailable(...) : AppletState data class Error(...) : AppletState }
  7. sealed interface AppletState { data class Loading(...) : AppletState data

    class Unadopted(...) : AppletState data class Adopted(...) : AppletState data class Unavailable(...) : AppletState data class Error(...) : AppletState }
  8. sealed interface AppletState { data class Loading(...) : AppletState data

    class Unadopted(...) : AppletState data class Adopted(...) : AppletState data class Unavailable(...) : AppletState data class Error(...) : AppletState }
  9. Savings: Adopted ✅ Bitcoin: Loading
 Stocks: Loading Taxes: Loading Savings:

    Adopted ✅ Bitcoin: Adopted ✅
 Stocks: Loading Taxes: Unavailable ✅ Savings: Adopted ✅ Bitcoin: Adopted ✅
 Stocks: Adopted ✅ Taxes: Unavailable ✅
  10. Savings: Adopted ✅ Bitcoin: Loading
 Stocks: Loading Taxes: Loading Savings:

    Adopted ✅ Bitcoin: Adopted ✅
 Stocks: Loading Taxes: Unavailable ✅ Savings: Adopted ✅ Bitcoin: Adopted ✅
 Stocks: Adopted ✅ Taxes: Unavailable ✅
  11. Savings: Adopted ✅ Bitcoin: Loading
 Stocks: Loading Taxes: Loading Savings:

    Adopted ✅ Bitcoin: Adopted ✅
 Stocks: Loading Taxes: Unavailable ✅ Savings: Adopted ✅ Bitcoin: Adopted ✅
 Stocks: Adopted ✅ Taxes: Unavailable ✅
  12. In-house analytics Pros: • Infrastructure already set up in Cash

    App • Data fl ows to visualization tools our teams are familiar with
  13. In-house analytics Pros: • Infrastructure already set up in Cash

    App • Data fl ows to visualization tools our teams are familiar with Cons:
  14. In-house analytics Pros: • Infrastructure already set up in Cash

    App • Data fl ows to visualization tools our teams are familiar with Cons: • Large cost for high volume events
  15. In-house analytics Pros: • Infrastructure already set up in Cash

    App • Data fl ows to visualization tools our teams are familiar with Cons: • Large cost for high volume events • Visualization tools are mainly business focused
  16. Datadog Pros: • Focused on engineering metrics • Used in

    Cash App backend services • Many supported default metrics
  17. Datadog Pros: • Focused on engineering metrics • Used in

    Cash App backend services • Many supported default metrics Cons:
  18. Datadog Pros: • Focused on engineering metrics • Used in

    Cash App backend services • Many supported default metrics Cons: • External dependency risks (APK size, app startup, etc)
  19. Datadog Pros: • Focused on engineering metrics • Used in

    Cash App backend services • Many supported default metrics Cons: • External dependency risks (APK size, app startup, etc) • Additional e ff ort to implement and maintain
  20. Automated alerting • Main focus on overall and applet load

    times • Possible alerts on secondary metrics (e.g. scroll performance)
  21. Lessons learned • Architecture choices have long term impact •

    Performance monitoring is worth the e ff ort
  22. Lessons learned • Architecture choices have long term impact •

    Performance monitoring is worth the e ff ort • Performance will always need to be top of mind