Тестирование
Nice Weather 2: как я чуть не убил свое самое успешное приложение
Ожидание было ужасным, потому что я не только ждал подтверждения обновления, но и видел, как пользователи разносят приложение в своих отзывах.
[pullquote align=right]
Алексик Крюзо рассказал, как обновлением чуть не погубил свое самое успешное приложение
[/pullquote]
Я разработал Nice Weather в 2013 году. Концепция была простая и я не имел особых ожиданий: простое погодное приложение, интерактивные графики и понятный пользовательский интерфейс.
На запуске оно прошло незамеченным, но я продолжал его улучшать. Сторонние проекты, в конце концов, развлекают.
Несколькими месяцами позже я решил переделать дизайн — но не хотел продавливать его уже существующим пользователям — и запустил проект в качестве нового приложения: Nice Weather 2.
Я получил много внимания. А потом мне улыбнулся ангел с небес. Apple заметили мое приложение и решили зафичерить его в App Store. Загрузки взлетели, и оно быстро стало самым продающимся моим приложением.
Следующие несколько недель были чистым сумасшествием. Потом все понемногу устаканилось; Nice Weather 2 заняло свое место в секции Погода в App Store, обеспечив мне постоянные показатели скачиваний. Я продолжал улучшать его и получал отзывы от в целом удовлетворенных пользователей.
После года маленьких обновлений, я решил в прошлом апреле сделать большое. В его рамках я удалял и с нуля перепрограммировал некоторых части.
Одной из самых больших задач, которые я хотел сделать, было более эффективное и надежное хранение данных. Если вы когда-либо работали с базами данных, вы знаете, как опасно может быть улучшение их структуры. Чтобы быть уверенным, что все остается совместимым со старыми моделями данных, нужно создавать так называемые «миграции», которые берут данные из старой структуры и обрабатывают их так, чтобы они подходили к новой.
Главная проблема с миграциями — нужно думать о каждой форме, которую могут принять данные, чтобы все правильно обработать.
Вышло большое обновление, и я заметил почти сразу, что процент сессий без ошибок упал с привычных 99.5% до 94%. Что-то было не так, и я прыгнул к компьютеру, чтобы решить эту проблему.
Я изменил кое-что в управлении данными и подал новое обновление, запросив ускоренное рассмотрение, которое было быстро принято.
Новое-новое обновление вышло, и очень быстро я понял, что опять что-то не так. Ко мне приходили десятки писем от пользователей и сигнализировал Fabric, который я использовал для отслеживания сбоев. Падение было жестким.
С 95% сессий без сбоев я упал до 40%. В спешке я забыл о миграции, когда подавался на обновление, и почти каждый существующий пользователь столкнулся со сбоем на запуске приложения после этого обновления.
Я снова прыгнул за консоль и убедился, что миграция в этот раз не забыта, протестировал прошлые версии, чтобы убедиться, что все будет нормально. Заявка, ускоренное рассмотрение, релиз.
Черт.
Сессии без сбоев перестали уменьшаться, но стабилизировались на 60%. Что же я делал не так?
У меня ушла неделя на то, чтобы выяснить. Я забыл о несчастных пользователях, у которых сбоило в предыдущей версии: данные застряли где-то посередине, в неопределенном состоянии.
И вот, снова. Заявка, но никакого ускоренного рассмотрения в этот раз — после двух предыдущих случаев за такой короткий период времени.
Ожидание было ужасным, потому что я не только ждал подтверждения обновления, но и видел, как пользователи разносят приложение в своих отзывах.
Обновление приложения было рассмотрено в течение 10 мучительных дней и, в конце концов, вышло.
Сейчас Nice Weather 2 вернулось к хорошему показателю сбоев около 1%. Я получил два хороших урока:
- Никогда не отправляйте обновление в спешке, что бы ни случилось, выспитесь хорошенько перед этим.
- Используйте хороший инструмент для сбора отчетов об ошибках. Не нужно и говорить, что история могла кончиться куда хуже, если бы Fabric не позволял мне управлять всем.
Пусть это будет уроком для всех разработчиков на iOS!
-
Новости1 месяц назад
Видео и подкасты о мобильной разработке 2024.39
-
Видео и подкасты для разработчиков1 месяц назад
Lua – идеальный встраиваемый язык
-
Новости1 месяц назад
Poolside, занимающийся ИИ-программированием, привлек $500 млн
-
Новости1 месяц назад
Видео и подкасты о мобильной разработке 2024.40