I told at the open day in Almaty about mobile development in Ozon.
We discussed a lot of things:
- Department structure
- Technology stack
- Backend Driven UI
- Growth of developers and team leaders
- Developers' onboarding
- Development practices
- Application performance
- Degradation of metrics
3. Department structure
• Team of 120+ people
• Mobile First
• More than 85% of orders via apps
• Release cycle - 1 week
• LTS - 6 months
3
App For Customers
• Team of 70+ people, Go backend
• More used in the app than on the web: discount requests,
chats, stock updates
• DAU - 3/4 of the user base
• The share of orders collected through the mobile application
according to the FBS model is 15% of GMV per month
• Release cycle – 2 weeks
App For Sellers
• Team of 19 people
• 70% more orders on buying plane tickets than on the web
• Purchase of railway tickets
• Booking hotels
• Booking tours
Ozon Travel
4. Technology stack
• Swift
• iOS 12+
• Composer
• Multiple modules
• CocoaPods
• MVVM
• PinLayout
• Alamofire
• Nuke
• Own implementation of DI
• Navigation on deeplink
• CoreData
• GitLab CI
4
iOS App For Buyers
• Swift
• iOS 14+
• SwiftUI 2
• Multiple modules
• Swift Package Manager
• MVVM
• Alamofire
• Async/await
• Needle
• CoreData
• GitLab CI
iOS App For Sellers
8. Development practices
• Feature teams
• Platform team
• DexExp
• Scrum, Kanban
• GitFlow
• Release train
• Release sync
• Technical debt
8
• Onboarding
• Growth of developers and team leaders
• Committees
• Competence matrix
• Developer rotations
• Internal meetups and technical demos
9. Performance
• Time To First Byte – the time to receive the first byte
• Time To Last Byte – the network interaction time
• Decoding Time - the time of parsing the response from the server
• Layout Time – the UI rendering time
• Total Time - the time from the beginning of the page opening to the full rendering of
the content
• Hitch Rate - lag time relative to the total scroll time
• Placeholder Rate - the share of images that the user saw uploaded
• Image Time To Last Byte – the image loading time
9
What we measure
10. Parsing and binding
Total Time
10
TTLB Decoding Time Layout Time + Binding Data
Total Time
Sending an API request Parsing and rendering
Static UI
Decoding Time Binding Data
Sending an API request
TTLB
Layout Time
Backend Driven UI
TTLB
TTLB
Total Time
11. Time To Last Byte
11
Details
DNS Time TCP Time TLS Time Server Time Request Time Response Time
Time To First Byte
Time To Last Byte
Sending an API
request
Getting the first
byte
Getting the
last byte
17. palbitskiy@ozon.ru
Thanks for your attention
Pavel Albitskiy, Head Of Mobile Department
Make mobile great again
https://www.linkedin.com/in/albitsky