Building mobile platforms for scale and differentiated user experience
1. Building Mobile Platforms for Massive Scale
and Differentiated User Experience
Regunath B, Principal Architect, Flipkart
Amar Nagaram, Sr. Engineering Manager, Flipkart
2. Retail App (there are so many...)
Search and
navigation
View product,
reviews
Buy
Track status
Social
integration
Zoom, Bar-code
scan
3. eBook App (not a common app...)
Search, browse,
read sample
Buy, read from
multiple devices
Gesture interface
Sync reading
location, offline
mode
Dictionary, notes
7. Standards and Productivity
Stacks
- Hybrid views (HTML5) for portability
- Standard navigation
- Quick to develop interactions
- Web API
- Wrapper based integration with
backend systems
- Push Notifications(StackMob, AirShip) - Offline experience
- Data availability across devices
- Cloud data service (StackMob,
OpenMobster)
9. Sub-optimal User Experience
• Software on Device : Responsiveness of app,
Resource usage
• Network : Ability to deal with slow/broken
network connectivity
– Latencies of services located in far of geographies
•e.g. 3 seconds to exchange 2K data using StackMob
• API Platform : Latencies, Fault tolerance
• Engagement : Notifications, Usage
– Relevance of Notifications
– Tracking installs, failures in accessing data
10. Attempt2 : Building Scalable and
Differentiated User Experience
Why User Experience Matters
(across platforms, networks, features, time)
11. Cue the Numbers
• Only 16% of users return to an app that fails to
load fast
• Ideal app launch time : 2 seconds
• Average Indian network data speed : 0.9 mbps
• API Platform latencies : has to be < 500ms
Scale fast
Install base : 1 M Android installs in 6 months
Traffic growth : 75% MoM
Per user engagement growing MoM
12. Architecture decisions
• Native device user interface
• Server controlled layouts – A/B configurable
– Page composition using reusable widgets
• Fault-tolerant, parallel service calls
• Availability vs. Consistency tradeoffs
– Distributed and local caches
• Prevent cascading failures
– Timeouts, Threadpools control resource usage
• Ability to operate in disconnected mode
– Offline data store, sync support
13. Architecture decisions
• User experience on slow networks
– Low resolution images, preference for text over
image
• Content specific user engagement
– Deep linked Push Notifications
– In-app notifications
• Data driven decision making, features
– Usage information, Performance statistics
14. Stacks Optimized for User
Experience
- Native views with optimized rendering
- Gesture navigation
- Fluid, friction free interactions
Jetty, Lego, Phantom FlipCast Notifications FlipSync Offline mode
- Mobile Gateway/API
- Transparent integration into
other backend systems
- Resilience, Low latency
execution
- Multicast (Targeted)
- Personalized
- Platform agnostic
- Interactive
- Context sensitive
-
- Disconnected mode
- Near real-time sync
- Data availability across
devices & web
Hyperion analytics
- Usage information
- Errors/crashes
- Performance statistics
- Soft real-time trends
- Feedback/insights
16. Operating the API Platform –
Phantom Console
https://github.com/Flipkart/phantom (Flipkart OSS)
17. FlipCast Notifications
• Supported Platforms
– iOS, Android, Windows Phone 8
• Features
Device register/unregister API
Configurable push message payloads
Automatic housekeeping for invalid
devices
Automatic/Transparent retry and
sidelining
Message history management
Pluggable data source (Default:
MongoDB)
Automatic backpressure management
Unicast, Multicast & Broadcast Push
API
Auto Batching for multicast & broadcast
push
• Tech stack
– spray.io, akka.io
– RabbitMQ
– MongoDB
18. Hyperion Analytics
• REST style Event API for data injestion
• Replicated and Partitioned Kafka message queue
• Distributed stream processor using Storm
• HBase event data store
• MongoDB Query data store
• Search and aggregation API on query data store