#производительность

8 постов
пост №1908Разработка и инженерия

Новая macOS 26 Tahoe, вышедшая на прошлой неделе, наконец-то получила индикатор громкости, который не перекрывает лицо собеседника в зуме. Раньше индикатор был большой по центру экрана, а теперь смотрите какой маленький аккуратный в углу. Если решите обновиться — учтите: есть есть два бага, которые серьезно мешают работать.

Безбожно тормозит ввод с клавиатуры в некоторых программах в некоторых ситуациях (и грузит CPU) и программы на базе электрона (и грузят GPU), всё это быстро съедает аккумулятор.

Первое чинится командой defaults write -g NSAutoFillHeuristicControllerEnabled -bool false (для эффекта необходимо перезапуститься), второе — командой launchctl setenv CHROME_HEADLESS 1 (эту, наоборот, выполнять каждый раз после перезапуска или настроить агента).

пост №1846Разработка и инженерия

Начали проект по перезапуску большого и важного медиа — миллионы читателей, миллионы страниц материалов.

Бизнес-задачи перед нами ставят стандартные: редизайн, улучшение пользовательского опыта и удобства редакции, без потери трафика.

Технически сейчас это программа на C#, которая в одну сторону торчит админкой для редакции, а в сторону читателей генерирует HTML-страницы сайта. Это популярный сетап из 2000-х. Техническую задачу я формулирую как облегчение процесса разработки без потери производительности сайта.

Дело в том, что в текущем сетапе фронтендер не может нормально верстать страницы без привлечения бэкенда — это мешает быстрому и предсказуемому развитию бизнеса.

Современный фронтенд ушёл далеко вперёд в удобстве разработки; собрать классический отдельный фронтенд для новостного сайта — не велика затея, мы делали это уже много раз.

Но будет ли современное веб-приложение (SPA) так же производительно, как HTML-страницы из 90-х? Речь и о скорости первого открытия — можно ли загрузить JS после полной отрисовки страницы? — и о скорости перехода между страницами — быстрее ли JavaScript-логика, чем отдать готовый HTML с сервера?

Можно ли получить лучшее из обоих миров? На какие компромиссы придётся пойти?

Пока что я не знаю ответов на эти вопросы. Кажется, что для успеха этого проекта придётся разобрать современную фронтенд-разработку по кирпичикам и пересобрать в новой, подходящей именно нам конфигурации.

Вдохновляюсь я вот этим видео, где инженер разбирает устройство фронтенда магазина строительных и промышленных инструментов McMaster. На первый взгляд может показаться, что это сайт из 90-х, на самом деле там под капотом почти все ускорения современного веба, которые только можно представить. Редкий случай хорошего видео для разработчиков, очень рекомендую.

P. S. Один из разработчиков McMaster пишет, что под капотом там VB.NET, хранимки и XSL-трансформации поверх XML для генерации веб-страниц. Хочется вот всё то же самое, только без VB, хранимок и XSLT. 🙈

пост №1836Разработка и инженерия

Тормозит приложение.

На днях написала топ-менеджер одной ритейл-сети. Тормозит мобильное приложение. Медленно работает поиск, добавление в корзину, оформление заказа. Нажимаешь на кнопку и ждешь…

В ритейле каждая доля секунды задержки — это люди, которые не купили товары, прямые потери. Мобильные разработчики не исправляют ситуацию. Переводят стрелки на бэкендеров, мол это бэкенд тормозит. Как разобраться, на чьей стороне сломалось и починить проблему?

Хорошие разработчики собирают аналитику по производительности своих приложений — какое время занимают ключевые действия типа «открытие главной», «поиск», «добавление в корзину», «оплата». Это называется Real User Monitoring.

Дальше мы кладем эту информацию на график: на оси Х — время, которое занимает действие, на оси Y — количество пользователей. Столбики слева — хорошо. Длинный хвост справа — это несчастные, у них, например, экран оплаты грузится минуту! Эти люди поменяют приложение, если у них будет выбор!

Но это средние значения. Что, если приложение хорошо работает 23 часа в сутки, а по вечерам, в час-пик, в самое важное время, начинает тормозить?

Тут поможет другой классический график: на оси Х — время (вчера, сегодня в течении дня, завтра), на оси Y — время ответа (задержка, latency). Три черты — среднее время, медиана и 95 персентиль. То есть за сколько миллисекунд происходит оплата в среднем, у медианы и за какое время происходит оплата у 95% быстрых пользователей? Он помогает отследить, нет ли тормозов в определенное время суток или в день недели.

Составляем эти два графика для ключевых функций и видим, тормозит наше приложение или нет. По числам оцениваем, стало оно быстрее или медленнее.

Итак, шаг первый — замерить экраны и действия.

Теперь можно переходить к поиску первопричины. Приложение может тормозить само по себе или из-за медленного бэкенда.

Тут мы опираемся на те же два графика, но уже смотрим скорость ответа бэкенда.

Качественно настроить сбор данных и дэшборды — это дополнительная работа, но она с лихвой окупается при расследовании проблем.

Хотите заказать классную разработку или аудит? Обращайтесь! @samatg https://fansdev.ru

пост №1272Разработка и инженерия

GTA V — финансово самый успешный продукт в истории развлечений. Эту игру купили больше 90 миллионов копий, она заработала 6 миллиардов долларов. Для сравнения: «Звездные войны» собрали 4 миллиарда, самый успешный фильм в истории «Аватар» — 2.8 миллиарда.

GTA Online — версия игры, в которую можно играть с друзьями онлайн. Эта игра очень долго грузится. Вполне возможно, что многие отказались от игры именно из-за медленной загрузки.

Чувак нашел ошибку в программе и смог уменьшить время загрузки с 6 минут до 2 минут. Причем сделал это не имея исходных кодов, то есть во многом «вслепую! Вот очень короткая и классная статья, где он рассказывает, как нашел проблему и как её починил.

Почему такая жесть пролезла в продакшен супер успешного проекта, мы вряд ли узнаем, но все технари с опытом представят легко: сжатые сроки, «вас не спрашивали, делайте что скажут» и прочие «прелести» промышленной разработки софта. 😢

пост №1036Управление и команды

Похвастаюсь: ко мне на работу в Pure пришел бэкендер Антон Шурашов и начал приводить бэкенд Pure в чувство.

На скриншоте график, сколько времени отрабатывал один из ключевых запросов к нашим серверам до изменений и после — разницу заметит даже не специалист.

Сейчас починим несколько важных продуктовых проблем, решим вопросы со скоростью и дальше будет много классных фич. Такое счастье, когда в проекте есть бэкендер, на которого можно положиться!

Спасибо всем, кто откликнулся на вакансию. Познакомились с несколькими интересными специалистами, надеюсь ещё поработаем вместе. 🍒

пост №472Гаджеты и наука

Эпл очень душевно извиняется и объясняет, почему айфоны тормозят, когда батареи стареют: чтобы не выключались внезапно, от недостатка энергии.

Обещают выпустить в начале 2018 апдейт, который покажет статус батареи (сейчас для этого нужны сторонние программы).

И ещё - весь 2018 год замена старых батарей будет стоить всего 29$, вместо обычных 79$.

Молодцы они https://www.apple.com/iphone-battery-and-performance/

пост №269Разработка и инженерия

Алексей Иванов из Dropbox (ex-Yandex) опубликовал просто титаническую статью про оптимизацию веб-сервера — текстовую версию своего вчерашнего доклада с NginxConf 2017 (видео пока нет).

Там и железо и софт, начиная с версий фирмвари флеш-дисков и заканчивая логированием; с советами, примерами кода и при этом не теряя большей картины из виду.

Во первых, это отличный чеклист по оптимизации.

Во вторых, в статье щедро проставлены ссылки на ключевые блоги и посты по разным областям технологий — это почти готовый учебный план.

Я легко могу себе представить, как выходит книга в серии животных O'Reilly, написанная на основе этой статьи.

https://blogs.dropbox.com/tech/2017/09/optimizing-web-servers-for-high-throughput-and-low-latency/

P.S. Обратите внимание на кнопку "We're hiring", ненавязчиво висящую в левом верхнем углу на протяжении всей статьи и последний абзац — вот это job marketing, который я уважаю.

пост №93Разработка и инженерия

Пятничное чтение: мы делаем слишком тяжелые сайты при том, что у многих людей медленный интернет.

Может показаться оторванным от реальности брюзжанием, если бы не пример с AirBnB (сайт ломается при медленном интернете, а ведь именно в путешествии он такой).

Интересная цитата:
When I was at Google, someone told me a story about a time that “they” completed a big optimization push only to find that measured page load times increased. When they dug into the data, they found that the reason load times had increased was that they got a lot more traffic from Africa after doing the optimizations. The team’s product went from being unusable for people with slow connections to usable, which caused so many users with slow connections to start using the product that load times actually increased.

https://danluu.com/web-bloat/