SlideShare une entreprise Scribd logo
1  sur  42
Что делать, когда
костыли уже не
помогают?
Грунтович Роман
Туту.ру
230сотрудников
13.5 млнпосетителей в месяц
2003год основания
600 тыспосетителей в день
О Туту.ру
Авиабилеты Ж/д билеты Туры Гостиницы Электрички
8 млнстрок кода
Предпосылки
• Постоянно меняющиеся внешние факторы
• Рост количества сотрудников
Проблемы
• Дорогая поддержка системы
• Снижение темпов развития
Летний поезд
Ожидания бизнеса Реальность
Наследие full-stack разработки
Метрика качества кода
Нужно что-то менять!
1. Переписываем последовательно модуль за модулем
2. …
3. Profit!
Первый подход
Проблемы этого подхода
• Нужно больше ресурсов, чем предполагалось
• Нет фокуса на конечной цели
Второй подход: реинжиниринг
1. Делаем новую систему с нуля
2. …
3. Profit!
Требования к новой системе
• Получить платформу для быстрого развития
• Выдавать результаты поэтапно
• Не навредить работающему продукту
• Не навредить позициям в поисковиках
• Сохранить прибыльность
Принципы новой платформы
• Используется компонентный подход
• Бэкенд отделен от фронтенда
ES6, модули, классы
Возможные решения:
• TypeScript
• babel
Архитектура приложений
Компонент
Архитектура приложений
Модель Компонент
Архитектура приложений
Модель
АдаптерКомпонент
Архитектура приложений
Модель
Адаптер
Компонент
Контроллер
На чем писать компоненты?
Варианты решений:
• Angular
• ReactJS
• Vue.js
• Ractive.js
• Mithril
Критерии выбора
• Порог входа
• Быстродействие
• Поддержка браузеров (IE8+)
У нас есть JSX, зачем шаблонизатор?!
• Отделение верстки от логики компонентов
• Низкий порог входа для верстальщиков
React-templates
Что делать с legacy?
Переписать нельзя оставить
Как не навредить seo
• Не делать индексируемых страниц
• Научиться рендерить индексируемые на сервере
Варианты для SSR
• twig + twigJS
• NodeJS
• php V8Js
Этапы разработки
Цикл разработки
Аналитика
Цикл разработки
Аналитика Разработка
Цикл разработки
Аналитика
РазработкаТестирование
Цикл разработки Аналитика
Разработка
Тестирование
А/Б
тестирование
Команда
• 1 ПО
• 2 бэкендера
• 2 фронтендера
• 1 тестировщик
• 1 ПО
• 3 бэкендера
• 4 фронтендера
• 3 тестировщика
Итоги
Получили платформу для быстрого развития
Результаты получаем поэтапно
Не навредили работающему продукту
Не навредили позициям в поисковиках
Сохранили прибыльность
Схемы вагонов
СталоБыло
дизайнер верстальщик разработчик дизайнер
Человеко-неделя 4 человеко-часа
25 схем 56 схем
Нам помогли:
• Компонентный подход
• Итеративность
• Прагматичность
• Стремление к цели
У нас была тактика и мы ее придерживались 
Грунтович Роман
gruntovich@tutu.ru

Contenu connexe

En vedette

Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...Ontico
 
Жизнь HTML в 2ГИС под iOS / Роман Янке (2гис)
Жизнь HTML в 2ГИС под iOS / Роман Янке (2гис)Жизнь HTML в 2ГИС под iOS / Роман Янке (2гис)
Жизнь HTML в 2ГИС под iOS / Роман Янке (2гис)Ontico
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Ontico
 
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)Ontico
 
Ждут ли нас ВУЗы. И если ждут, то что мы им можем дать и что получить / Дмитр...
Ждут ли нас ВУЗы. И если ждут, то что мы им можем дать и что получить / Дмитр...Ждут ли нас ВУЗы. И если ждут, то что мы им можем дать и что получить / Дмитр...
Ждут ли нас ВУЗы. И если ждут, то что мы им можем дать и что получить / Дмитр...Ontico
 
Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...
Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...
Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...Ontico
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)Ontico
 
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)Ontico
 
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Ontico
 
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)Ontico
 
Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)
Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)
Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)Ontico
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Ontico
 
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...Ontico
 
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)Ontico
 
Как стать супергероем презентаций: дизайн
Как стать супергероем презентаций: дизайнКак стать супергероем презентаций: дизайн
Как стать супергероем презентаций: дизайнAlexey Ivanov
 

En vedette (16)

Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
 
Жизнь HTML в 2ГИС под iOS / Роман Янке (2гис)
Жизнь HTML в 2ГИС под iOS / Роман Янке (2гис)Жизнь HTML в 2ГИС под iOS / Роман Янке (2гис)
Жизнь HTML в 2ГИС под iOS / Роман Янке (2гис)
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
 
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
 
Ждут ли нас ВУЗы. И если ждут, то что мы им можем дать и что получить / Дмитр...
Ждут ли нас ВУЗы. И если ждут, то что мы им можем дать и что получить / Дмитр...Ждут ли нас ВУЗы. И если ждут, то что мы им можем дать и что получить / Дмитр...
Ждут ли нас ВУЗы. И если ждут, то что мы им можем дать и что получить / Дмитр...
 
Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...
Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...
Организация конвейера автоматизации тестирования / Алексей Петров (Mail.ru Gr...
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
 
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
 
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
 
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
 
Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)
Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)
Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
 
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
В погоне за производительностью. Психология пользователя / Денис Мишунов (Dig...
 
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
 
Death By PowerPoint Rus
Death By PowerPoint RusDeath By PowerPoint Rus
Death By PowerPoint Rus
 
Как стать супергероем презентаций: дизайн
Как стать супергероем презентаций: дизайнКак стать супергероем презентаций: дизайн
Как стать супергероем презентаций: дизайн
 

Similaire à Что делать, когда костыли уже не помогают. Опыт tutu.ru / Роман Грунтович (tutu.ru)

Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...Ontico
 
AbsolutSoft: Производство mid-core проектов для соцсетей (на примере Contract...
AbsolutSoft: Производство mid-core проектов для соцсетей (на примере Contract...AbsolutSoft: Производство mid-core проектов для соцсетей (на примере Contract...
AbsolutSoft: Производство mid-core проектов для соцсетей (на примере Contract...DevGAMM Conference
 
Иван Константинов
Иван КонстантиновИван Константинов
Иван КонстантиновCodeFest
 
Panda - вебинар про Opencart для Myopencart
Panda - вебинар про Opencart для MyopencartPanda - вебинар про Opencart для Myopencart
Panda - вебинар про Opencart для Myopencartpanda-code
 
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...CodeFest
 
О чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных системО чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных системArtem Volftrub
 
Система аналитики из подручных материалов
Система аналитики из подручных материаловСистема аналитики из подручных материалов
Система аналитики из подручных материаловArtem Kiselev
 
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиКак перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиAlexander Byndyu
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Seocrm (2)
Seocrm (2)Seocrm (2)
Seocrm (2)lifeout
 
А.Иванов -- Системная инженерия SmartGrid
А.Иванов -- Системная инженерия SmartGridА.Иванов -- Системная инженерия SmartGrid
А.Иванов -- Системная инженерия SmartGridAnatoly Levenchuk
 
Compassembly финальная презентация
Compassembly финальная презентацияCompassembly финальная презентация
Compassembly финальная презентацияДина Ильчубаева
 
Проектный офис и аналитик
Проектный офис и аналитикПроектный офис и аналитик
Проектный офис и аналитикCEE-SEC(R)
 
2016 Cee-Secr. Аналитик и проектный офис
2016 Cee-Secr. Аналитик и проектный офис2016 Cee-Secr. Аналитик и проектный офис
2016 Cee-Secr. Аналитик и проектный офисOlga Samarina
 
Основы Seo
Основы SeoОсновы Seo
Основы SeoVEKA Rus
 
Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Alexei Lupan
 
раубичи ронд
раубичи рондраубичи ронд
раубичи рондzolik
 
О общих подходах к отображению данных на сайте
О общих подходах к отображению данных на сайтеО общих подходах к отображению данных на сайте
О общих подходах к отображению данных на сайтеAnton Kovalenko
 

Similaire à Что делать, когда костыли уже не помогают. Опыт tutu.ru / Роман Грунтович (tutu.ru) (20)

Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
 
AbsolutSoft: Производство mid-core проектов для соцсетей (на примере Contract...
AbsolutSoft: Производство mid-core проектов для соцсетей (на примере Contract...AbsolutSoft: Производство mid-core проектов для соцсетей (на примере Contract...
AbsolutSoft: Производство mid-core проектов для соцсетей (на примере Contract...
 
Иван Константинов
Иван КонстантиновИван Константинов
Иван Константинов
 
Panda - вебинар про Opencart для Myopencart
Panda - вебинар про Opencart для MyopencartPanda - вебинар про Opencart для Myopencart
Panda - вебинар про Opencart для Myopencart
 
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
 
О чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных системО чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных систем
 
Система аналитики из подручных материалов
Система аналитики из подручных материаловСистема аналитики из подручных материалов
Система аналитики из подручных материалов
 
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиКак перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Seocrm (2)
Seocrm (2)Seocrm (2)
Seocrm (2)
 
А.Иванов -- Системная инженерия SmartGrid
А.Иванов -- Системная инженерия SmartGridА.Иванов -- Системная инженерия SmartGrid
А.Иванов -- Системная инженерия SmartGrid
 
Compassembly финальная презентация
Compassembly финальная презентацияCompassembly финальная презентация
Compassembly финальная презентация
 
Проектный офис и аналитик
Проектный офис и аналитикПроектный офис и аналитик
Проектный офис и аналитик
 
2016 Cee-Secr. Аналитик и проектный офис
2016 Cee-Secr. Аналитик и проектный офис2016 Cee-Secr. Аналитик и проектный офис
2016 Cee-Secr. Аналитик и проектный офис
 
Основы Seo
Основы SeoОсновы Seo
Основы Seo
 
Лекция 8
Лекция 8Лекция 8
Лекция 8
 
Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)
 
раубичи ронд
раубичи рондраубичи ронд
раубичи ронд
 
О общих подходах к отображению данных на сайте
О общих подходах к отображению данных на сайтеО общих подходах к отображению данных на сайте
О общих подходах к отображению данных на сайте
 
Scrum Wars
Scrum WarsScrum Wars
Scrum Wars
 

Plus de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Plus de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Что делать, когда костыли уже не помогают. Опыт tutu.ru / Роман Грунтович (tutu.ru)

Notes de l'éditeur

  1. Постоянное изменение внешних факторов нужно адаптироваться, чтобы выжить Делать быстро, переделывать часто быстро меняться, пробовать новые фичи Применяются «быстрые», а не «правильные» решения Обрастаем костылями Рост количества сотрудников Рост объема кода
  2. Весна 2013 Эксклюзивный летний поезд Ожидания: подключим быстро и начнем продавать Реальность: по оценкам подключились бы к концу лета
  3. Тяжелое наследие full stack разработки
  4. Появились какие-то ресурсы
  5. Обнаружилась сильная связанность модулей Из-за этого изменения в одном тянули изменения в другом Нужно было тратить больше ресурсов, чем предполагалось при оценке Не было выделенной команды, разработчики переключались на продуктовые задачи, которые были важнее Нет фокуса на конечной цели процесса Все это привело к низкой скорости, толку было мало, Изменения происходили медленно
  6. Есть опыт, знаем актуальные требования, недостатки текущего решения, экспертиза в предметной области Можно спроектировать более гибкую систему «с нуля» Такую, чтобы не пришлось опять переписывать Выделим специальную команду Будет фокус на конкретных целях
  7. Платформа для быстрого развития Выход на новые рынки Мобильная версия Поэтапное получение результатов Не можем ждать год первые результаты – мир меняется быстро Не навредить работающему продукту Живем на то, что заработали Не навредить позициям в поисковиках SEO продвижение играет значимую роль в успехе компании
  8. Разрубили клубок мухи отдельно, котлеты отдельно Можно модифицировать независимо, чтобы в будущем не пришлось еще раз проводить реинжиниринг В итоге, реинжиниринг затронул и бэкенд, но я буду рассказывать об изменениях во фронтенде
  9. TypeScript - вот это все, а еще и… Статическая типизация Legacy-friendly!!! Не все смогли начать с ним работать, но нам удалось преодолеть проблемы. Для легаси модулей пишем d.ts файлы M$ babel Еще не родился + модульная система RequireJS
  10. Переиспользуемые Компоненты! Шина событий flux понравился и подошел
  11. П - прагматичность
  12. Но верстальщики выросли и стали полноценными фронтенд-разработчиками
  13. Хочется переписать совсем все, но Это потребует больше ресурсов на разработку, чем нужно Больше ресурсов на тестирование, чем нужно А лучше делать что-то нужное, чем что-то ненужное
  14. Как понять, что надо переписать? Цель – переписать код, чтобы развиваться Смотрим, где скорее всего будут доработки В дальнейшем – перепишем все И - итеративная разработка Переписываем только критические вещи, оставляя то, с чем можно жить в legacy
  15. Standalone вариант – nodeJS Интегрированный в backend среду – php v8js Мы выбрали phpV8, т.к. имеем php инфраструктуру он решает задачу и не требует развертывания дополнительной инфраструктуры Есть ограничение – нет доступа к npm пакетам, но мы в данный момент ими не пользуемся в приложении Возможно, со временем мы придем к nodeJS, но прямо сейчас нас устраивает и phpV8 Собираем самодостаточный бандл, к нему подкладываем эмулятор загрузчика модулей (они уже есть в бандле) и данные с бэкенда бандл каждый раз выполняется на сервере, отдает строку
  16. Выбор элементов стека происходил потапно Но мы не старались отслеживать новинки и переезжать сразу Версия реакта 12->13, потом долго жили на 13. сейчас 14 и пока не торопимся обновляться Главный вопрос – зачем? В чем польза? Если можем аргументировать, делаем. Иначе делаем что то полезное Уходим от ReactTemplates (новые на jsx, не бросаемся переписывать) Мигрируем на webpack В перспективе отказываемся от jquery
  17. И - Итеративность
  18. Аналитика: обратный инжиниринг В процессе натыкаемся, что старая версия работает не так, как должно быть Никто не знает, как правильно, спросить уже не у кого Выделяем модули, оцениваем их вариативность Перерабатываем поведение системы – упрощаем и исправляем ошибки становится проще разрабатывать новые фичи
  19. Разработка – Выбираем миниммальное необходимое решение для текущей задачи, не фантазируем, что еще потом здесь может понадобиться иначе можем потратить время, а оно и не понадобится, или понадобится другое
  20. Аналитика: обратный инжиниринг В процессе натыкаемся, что старая версия работает не так, как должно быть Никто не знает, как правильно, спросить уже не у кого Выделяем модули, оцениваем их вариативность Перерабатываем поведение системы – упрощаем и исправляем ошибки становится проще разрабатывать новые фичи Разработка – Выбираем миниммальное необходимое решение для текущей задачи, не фантазируем, что еще потом здесь может понадобиться иначе можем потратить время, а оно и не понадобится, или понадобится другое Тестирование – не идеальный вариант, а приемлемый уровень качества, дающий нужный уровень конверсии
  21. Аналитика: обратный инжиниринг В процессе натыкаемся, что старая версия работает не так, как должно быть Никто не знает, как правильно, спросить уже не у кого Выделяем модули, оцениваем их вариативность Перерабатываем поведение системы – упрощаем и исправляем ошибки становится проще разрабатывать новые фичи Разработка – Выбираем миниммальное необходимое решение для текущей задачи, не фантазируем, что еще потом здесь может понадобиться иначе можем потратить время, а оно и не понадобится, или понадобится другое Тестирование – не идеальный вариант, а приемлемый уровень качества, дающий нужный уровень конверсии
  22. Платформа Запилили мобильную версию на основе десктопной, заменив вьюшки АПИ для мобильного приложения Как бонус, вычистили кучу краевых случаев и непонятностей Саксесс-страница: раньше боялись влезать, переделка занимала несколько месяцев – теперь постоянно проводятся улучшения и тд