Как не проSPAть миграцию на клиенте?

Миша Башкиров, AT Consulting

Как не проSPAть миграцию на клиенте?

Миша Башкиров, AT Consulting

О чем доклад?

  1. Что я понимаю под миграцией
  2. Есть ли в SPA место миграциям?
  3. Проблемы и их решения

Часть 1. Что я понимаю под миграцией

Миграция - это процесс изменения схемы данных или непосредственно данных в рамках одного хранилища, либо перенос данных из одного хранилища в другое.

Пример 1. Справочник товаров: до

id name
1 Диван
2 Кресло
3 Стол
... ...

Пример 1. Справочник товаров: после

id name
1 диван
2 кресло
3 стол
... ...

Пример 2. JSON-объект: до

      {
        "site": "bashmish.com",
        "email": "bashmish@gmail.com",
        "name": "Миша Башкиров"
      }
    

Пример 2. JSON-объект: после

      {
        "site": "bashmish.com",
        "email": "bashmish@gmail.com",
        "firstName": "Миша",
        "lastName": "Башкиров"
      }
    

Часть 2. Есть ли в SPA место миграциям?

Серверная
миграция

Очевидно...

Клиентская
миграция

Зачем?

Зачем?

Несколько примеров:

Клиентские миграции нужны, когда:

Часть 3. Проблемы и их решения

Инструменты для серверных миграций:

Причем
тут
SPA?

Идеи можно и нужно переиспользовать:

Но есть специфические проблемы:

Проблема 1. Клиентские данные могут быть изменены без вашего ведома

Keeping secrets with JavaScript - An Introduction to the WebCrypto API

Проблема 2. Старые инструменты заточены под SQL

Проблема 3. Сервер не может в любой момент обратиться к клиенту

Здесь очень важно понимать процесс от начала и до конца:

Итак

Заключение:

Скучно!

На самом деле, это все про удобный DSL для JSON:

Мощный ЭПиАй :)

      add('path.to.*.some.key', value/valueFunc());
      change('path.to.*.some.key', value/valueFunc(oldValue));
      rename('path.to.*.some.key', key/keyFunc(oldKey));
      remove('path.to.*.some.key');
      ...
    

* - любой элемент массива или любой ключ объекта.

Похожие инструменты:

Спасибо слушателям за наводки!

Как не проSPAть миграцию на клиенте?

Миша Башкиров, AT Consulting

Презентация: bashmish.com/pres/spa-migrations/

Powered by Shower