Меняем стул под пользователем

Меняем стул под пользователем

Александр Коротаев

  • VK.com Санкт-Петербург
  • 11 лет в веб-разработке
  • помогаю в SPB-Frontend
  • делаю BeerJS


Меня попросили сделать доклад, чтобы всем было весело…

Смотрите как мы страдаем

Итого

Поезд идет с остановками

ЖД вайб это круто но

Что делают с теми кто останавливает поезда?

Привет @lekzd
Как дела?
Что делаешь?

Статика: раскидывается

Всмысле?
Куда раскидывается

Если кратко, то по всем серверам статики в инфраструктуре ВК

Чат деплоя (овер 9000 участников)
Evening freeze is comming…
Чат деплоя (овер 9000 участников)
Master Build failed: error…
Закрываю мастер, разбираемся
Чат деплоя (овер 9000 участников)
Поезд на Staging
Эй, а что у вас там с фоном?

Статика: кешируется

В браузере…

На CDN…

Даже если часть статики обновилось

где-то в пещерах кеша живет…

ServiceWorker

Однажды я поймал комбинаторный взрыв

  1. Бекенд добавил префикс
  2. JS файл добавил префикс
  3. ServiceWorker добавил префикс

Че, как вам код?

            function handleRequest(response) {
              if (typeof response === 'string') {
                  response = JSON.parse(response);
              }
              return response.payload;
            }
        

Это миграционный код

Но лучше, конечно так

            function handleRequest(response) {
              if (switcherEnabled('backend_json')) {
                  response = JSON.parse(response);
              } else if (switcherEnabled('backend_html')) {
                  // OMG;
              }
            }
        

Это важно

А иногда статика меняется

Вот мы сбилдили…

  1. Новый пользователь
  2. Активный пользователь

Новый пользователь

сервер
common.111.js
player.222.js
new.111.js
—>
—>
—>
клиент

Активный пользователь

сервер
common.111.js
player.222.js
new.111.js
—>
—>
—>
клиент
common.111.js
player.111.js

VK это SPA

При смене роута

  • inline-скрипты
  • новые бандлы
—>

А как заменять синглтоны?

Но это плохо

Но жить можно, в целом

У нас все просто



Большинство разработчиков и не знает, что менять статику на самом деле сложно



И это правильно, ведь есть команда инфраструктуры, которая делает сложные вещи простыми

Но есть проблема…

Команда инфраструктуры это последний рубеж, за которым уже никто не знает как это работает

Привет @lekzd

Однажды я решил переложить статику из одной папки в другую…

mv -r static/old static/new не?

Вроде все предусмотрели

Далее…

Пока я читал доклад…


Они пытались откатить

Но сделали только хуже, делали location.reload(), но ошибки валились и валились

Комбинаторный взрыв кеша

Просто нужно соблюдать правила

Как я потом деплоился?

В понедельник пришли они

Итак, правила

А то будешь месяц деплоиться

Спасибо 0.1% пользователей

Которые молчаливо попадают в тест группы

Можно опробовать решение на них

Увидеть графики, ужаснуться, откатить назад

Кеши пользователя это проблема

Но больше всего удивили они…

Коллеги, которые использовали ВК через iframe и прокси

Выводы: весело у нас

Твой провал это новость

Новости появляются когда


Короче, любой деплой это повод для новости в СМИ, в обход отдела PR

Чат c другом в ВК
Привет



Быстро ломается, быстро чинится 😇 😇 😇

Но никто никого не ругает



Пока вы слушали этот доклад, статика ВК обновилась еще раз…

 Спасибо!