49. Switching
Replaying
new old
Topic Index Version
42 42_1 2
101 101_1 3
345 345_2 3
1.apply(e)
3.query()
Projector
Point Of
No Return!
2.apply(e)
X … Tag
Added
Mention
Created
2 1
59. Non-Destructive Transformation
text : "Lorem ipsum
http://bit.ly/17f42"
V1
links : ["http://bit.ly/17f42"]
text : "Lorem ipsum
http://bit.ly/17f42"
V2
60. Convert On Write/Copy
if (version == IndexVersion.Next)
doc.Links = ExtractLinks(doc);
copy.Links = ExtractLinks(src);
Projector:
Copying:
62. Progressive Destruction
region : "Киев",
city : "Киев"
V1
V3
region : "Киев",
city : "Киев"
V2
region : "Киев",
city : "Киев"
regionId : 38044
cityId : 546232
63. Backward Compatibility
var result = es.Execute(topic, (index, client) =>
{
var city = index.Version == IndexVersion.Current
? criteria.City
: LookupId(criteria.City);
query = query.Term(“city”).Equals(city);
return client.Search(query).Path(index));
}
Международные бренды
Большие банки
Медиа агенства
Как это работает ...
Ключевые слова
Краулинг
Текстовый фильтр
Обогащение
Тональность
Классификация
Объекты Картинки
Попадают в тему
ПУП ...
Поиск
Разметка
Чистка
Другие действия
Конечная цель ...
Аналитика
100 разрезов
Фильтры
Аггрегации
Под капотом ...
Маленький Эластик
Клиентские Данные
Источник правды
Мгновеннная Аналитика
Основная БД
Репликация
Архитектура данных ...
Тема = Индекс
Изоляция
Вариативность размера
Схема данных ...
1 тип
120 полей
Индексированные
Снежинка
Realtime OLAP
Хватит контекста
Цель
4 года
Бурное Развитие
Несмотря на Возраст
Экстремальная Итеративность
Чистота Схемы
Цель Рассказать
Уникальном Способе
Расширять Функциональность
Чистоте и Порядок
Применить у Себя
Вернемся Назад
Ситуация
Расширение схемы
Смена Анализатора
Что есть Анализатор
= Изменить Тип
Какой фикс?
Разработчики Эластика
Ре-индексация ...
Новый Термин
Давайте Разберемся ...
Новая Схема
(Клик)
Копирование
Синхронизация
Переключаем клиентов
Встроенная Фича
2.3
Сделай Сам ...
С Чего Начать?
С Конца
Переключение Клиентов ...
Встроенные Псевдонимы
Облом ...
Topic ID = Index ID
Подумаешь ...
Осталось Заюзать ...
Найти Вызовы
Обернуть
Боже Храни JetBrains
Умеем Переключать
V1 – V2
Тривиально …
Сортировка Порядок
Уникальный Номер
Батчи
Чекпоинты Прогресс
Партишен Диапазона
Макс Параллелизм ...
Есть Проблема
Пока Копируем
Краулеры
Пользователи
Конец Копирования
Потеря Изменений
УПС
Что делать?
Кстати, Reindex API
1-й вариант ...
По-быстренькому
Зал: Кто так делает?
3 Вещи Инцидентов
Контроллер Рейда
Предугадывать
Сколько Даунатйма? ...
Контракты
Размер Индекса
Нехитрая Математика
Короче Не Вариант
Лучше Не Придумали ..
Вопрос: Event Sourcing?
Продается с CQRS
Видео Грега Янга
Если Вкратце ...
Упрощенно
Изменение = Ивент
Проектор
Журнал
Возврат Управления
Запрос
Неклассический ..
С Начала Времен
Нормальный Режим
На Лету
Коротко Остановиться на ...
Откуда Берутся
Что Представляют
Волюнтарный Доступ
Первое Что Сделали ...
Прикрыли Лавочку
АПИ
Команды
Обработчики
Ивент
Доступ На Чтение
Через Обертку
С Ивентами Разобрались ...
Журнал
Сторедж Ивентов
Конфликт Параллельного Доступа
Любой Сторедж
Кафка
Стримстоун
Последний Ингридиент ...
Требования
Удаленное Управление
Автовосстановление
Высокая Доступность
Многопоточность
Идеальный Кандидат
Модель Актеров
Фреймворк Распределенных Систем
Спасибо Orleans
Есть Все Ингридиенты
Осталось Реализовать Протокол ...
Упростить Жизнь
Машина Состояний
Нет в Орлинс
Орлянка
Итак Протокол ...
Переходим к Копированию ...
Дошли до Конца
Переходим к Проигрыванию ...
Пороговое Значение
Идем на Переключение ...
Сам Себе
Донакатка
Важность Пороговое Значение
Дальше ...
100% Синхронизация
Обновление Алиаса
И Наконец ...
Переход В
Обычный Режим
Читатели Новый Индекс
Запись Остановлена
Точка Не Возвращения
Круто но ...
Как-то Управлять
Мониторить Прогресс
Перезапускать и Прочее
Лоу-Фай Решение ...
Консоль Оператора
Селективный Запуск
Управление
Статус и т.п.
Один из Коллег
2-й Монитор
Ностальгирует По Временам ...
Ок.
Повеселились.
Едем Дальше ...
Стейджинг
FAST = FIRE
Кластер Бедненький
Экономия Ресурсов
SLOW = WEEK
Печаль ...
Scale OUT
Scale IN
Можно Ночью Скейлить
Все Хотят Cпать
Чего Паримся ...
Мы Же в Облаке
10х Быстрее
Нагрузка на Исходный
Завршение Миграции
Удалить Старый
1 Команда
Остается Добавить...
Всего 1 Столбик
Код Синглтона
0 Изменений
Дело в Шляпе
Ой Как Удачно ...
Уже Догадались
Я на Хакатоне
Мое Лицо
Звезды Сошлись
Встроенные Псевдонимы Никак
Реиндекс АПИ Никак
Бог ЕСТЬ!
Остались 2 Вопроса
Безопасная
Миграция
Начнем с Миграции
Миграция
Трансформация Каждого Документа
Значение По Умолчанию
Сплит Полное Имя
В Первом Случае ...
Вчера Не Индексировали
Пришел Яндекс
Контракт
Завели Миграцию
Выцарапали
Бизнес-Кейс
Обогащение
Реализация Очень Простая ...
Проецирование
Версия Индекса
Используем при Копировании
2-й Тип Трансформации ...
Локализация Гео
Сегодня Интернейшенл
Бизнес-кейс
2 Подхода к Реализации
Первый ...
Прогрессивное Изменение
Бэклог
2x Текст
Второй Подход ...
Ветвление Кода
Наш Способ
Знание о Версии
Какой Подход
Выбирать По Ситуации
В Любом Случае
Придется
Менять Код Клиента
Окей
С Трансформациями Разобрались ...
Последний, Вопрос
Безопасная Миграция!
Для Меня
Безопасная
Факап Откат
Никто Не Заметит
Вернемся к Финалу ...
Переключили
Работают с Новым
Факап
Невозможно Откат
(Клик)
Нет Синхронизации
Беда
Почему Так
Вернемся к Протоколу ...
После Переключения
Нормальный Режим
Журнал Отключен
Точка не Возвращения
Так Вот ...
Не Весь Протокол
Оставил На Десерт
ВНИМАНИЕ
Жырная Инженерная Тема
Расширяем Протокол ...
Дополнительная Ветка
После Переключения
Продолжаем Журнал
Но Теперь
Накатываем
Все 100% Ок
Как и Раньше
Если Факап
Логи
Звонки От Клиентов
Делаем Обратное Переключение ..
Пауза Записи
Опять Догоняем
Но Теперь
Старый Индекс
И Как Только ..
100% Синхронизация
Обновяем Алиас
На Старый Индекс
И Переключаемся ..
Обычный Режим
Работаем со Старым
Что в Результате ...
Параллельная Реальность
1 БД
2 Разные Схемы
Переключится
В Любое Время
Без Потери Изменений
Абсолютно Незаметно ...
Тада
Не Знаю
Ни Одного Способа
Возможность Отката
Едем Дальше ...
Технический Протокол Для Индекса
Воркфлоу Миграции
Как Реализован У Нас
Новый Индекс
Новая Версия
Канарейки 735
Время Проба
Фейл Откат
Иначе Все Оставшиеся
Уудаляем Старый Кластер
Пьем Пиво
Красота!
Теперь Самое Время
Ложка Дегтя ...
Сложности
И Другие Приключения
Естественно Все Проблемы ...
Распределеных Систем
Майк Амундсен Микросервисы
Таймауты
Задержки
Пропускная Способность
Другие Прелести
CAP Теорема
Не Обмануть
Начнем с Простого
Несогласованнось Курсора
Отсутствие Распределенных Транзакций
Лечится ...
Простите за Каламбур
Пат Хелланд
Идемпотентность Состояние Здоровья
Повторное Выполнение
2-я Основная Проблема ...
Восстановление Сбой
Рестарты
Обработка Ошибок
Ретраи
Предохранители
Ложись Спать
Вали Миграцию
Обычный Режим
Ну и Последнее ...
Доступность Системы
Продукт Доступности Компонентов
Каждый Компонент
Потенциально
Точка Отказа
Тейбл Сторедж
Приложение
Без Миграции Ляжет
Хватит про Трудности …
Пора Закругляться
Выводы
Итак
Что Получилось
У Нас
В Результате ...
Решали Проблему Реиндексации
Внедрили Неизменяемая БД
Маскимальная Эффективность
Расширили Вся Инфраструктруа
Голубая Мечту ДевОпс
Сервера Без Состояния
Применив к БД
Подытоживая
С технический Стороны ...
Хранилищам Любого РазмераВ
Все или Ничего
Сбой Инфраструктуры
Контрольная Точка
Ошибки Разработчиков
Легкий Откат
Увеличение Эффективности
Новая Инфраструктура
Со стороны приложения ...
Использование Принципа Дает
Ничего Более Стабильного
Протестировать Изменения
Откат в Любой Момент
Без Остановки Обслуживания
Нон-Стоп, Онлайн
Итеративный Процесс
Рефакторинг БД
Инструмент Рефакторинга
Возможность Эволюции
Содзание Модификация Функциональности
Необходимое Условие
Развития ПО
Это Реально Круто!
Конференция Инжерных Практик ...
В Первую Очередь
Практика CD
Постоянный Деплой
Полноценная Реализация Канарейка
Вся Вертикаль
Не Только Траффик
Новомодной SRE
Гибкость Изменения Схемы
Итеративные Процессы
Вывод ...
Рабочий Способ
Проверенный в Боях
9 Раз
Общий MongoDb/SQL
Не Ракетостроение
Применить в Своих Проектах