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

Как мы поддерживаем стабильность приложения Lamoda

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for MOSDROID MOSDROID
November 10, 2018

Как мы поддерживаем стабильность приложения Lamoda

Виталий Бендик, Lamoda – MOSDROID #13 Aluminium

Мы поговорим о том, что мы понимаем под стабильностью. Какие факторы приводили к нарушению стабильности, как мы с ними боролись и что предприняли для их устранения

Avatar for MOSDROID

MOSDROID

November 10, 2018
Tweet

More Decks by MOSDROID

Other Decks in Programming

Transcript

  1. Что такое стабильное приложение? : не падает* : не виснет

    : не существует : работает предсказуемо
  2. Pre-release сборка Debug сборка* Release сборка Pre-release сборка ProGuard SSL

    Pinning * используют только разработчики
  3. Pre-release сборка Release сборка Pre-release сборка ProGuard SSL Pinning ⚠

    Аналитика Debug сборка* * используют только разработчики
  4. { "brands": [ { "id": "1", "title": "Lacoste" }, {

    "id": "2", "title": "Adidas" } ] } Specification first Массив { "brands": { "id": "1", "title": "Lacoste" } } Объект
  5. Real User Monitoring 1.Потребление памяти 2.Потребление CPU 3.Что грузилось из

    сети? 4.Что происходило на основном потоке? 5.Что происходило в других потоках?
  6. Мониторинг критических мест : Сетевые запросы (в том числе сторонние

    библиотеки) ◦ Ошибки ◦ Время ответа ◦ Нагрузка
  7. Мониторинг критических мест : Сетевые запросы (в том числе сторонние

    библиотеки) ◦ Ошибки ◦ Время ответа ◦ Нагрузка : Падения
  8. Мониторинг критических мест : Сетевые запросы (в том числе сторонние

    библиотеки) ◦ Ошибки ◦ Время ответа ◦ Нагрузка : Падения : Handled exceptions
  9. A/B Tool : Глубоко интегрирован в системы Lamoda : Позволяет

    раскатывать эксперименты / переменные на офис или даже на конкретного пользователя : Независим от сторонних систем
  10. : Автоматическая инструментация кода : Сетевые запросы (в том числе

    сторонние библиотеки) ◦ Ошибки ◦ Время ответа Поддерживаются: HttpURLConnection, OkHttp2, OkHttp3, AndroidHttpClient, Volley, Apache HTTP Client
  11. : Автоматическая инструментация кода : Также, сбор информации о ◦

    Потребление памяти ◦ Потребление CPU ◦ Операции связанные с JSON ◦ Операции связанные с SQLite
  12. : Автоматическая инструментация кода : Отчёты о падениях : Handled

    exceptions : Пользовательские интеракции : Real User Monitoring (RUM) ◦ Потребление памяти ◦ Потребление CPU ◦ Что грузилось из сети? ◦ Что происходило на основном потоке? ◦ Что происходило в других потоках?
  13. : Автоматическая инструментация кода : Отчёты о падениях : Пользовательские

    интеракции : Сетевые метрики и ошибки : Гибкий язык запросов NRQL : Кастомизируемые дашборды : Система алертинга и интеграция с мессенджерами (например, Slack) : и многое другое
  14. Так что со стабильностью? Warning Critical 0.3% ~ 0.5% >

    0.5% Crash rate Warning Critical 0.1% ~ 0.3% > 0.3% Было Стало
  15. Так что со стабильностью? Crash rate Было Стало Warning Critical

    0.3% ~ 0.5% > 0.5% Warning Critical 0.1% ~ 0.3% > 0.3% Average 0.1%
  16. Так что со стабильностью? Crash rate Было Стало Warning Critical

    0.3% ~ 0.5% > 0.5% Warning Critical 0.1% ~ 0.3% > 0.3% Average 0.1% Average 0.05%