SlideShare une entreprise Scribd logo
1  sur  76
Component Platform
Alexander Lobashev, @limarc
Тогда
4
2014
2014
• 6 разработчиков фронтенда
• Простой код ($ + $.fn)
• Небольшое количество компонентов
• Простые инструменты тестирования (Chai + Mocha)
• Свежий код
5
Создание продукта
6
Product Design Engineering
Дизайн-система
8
2016
2014
2016
• 26 разработчиков фронтенда
• Формальные процессы в разработке
• Сложные задачи (react, basis, no jquery)
• SPA приложения и много компонентов (HOC, Composition)
• Сложные инструменты тестирования (Chai + Mocha + Karma)
• Со временем код устаревает
9
Создание продукта
10
Product Design Engineering
Нет уникального стиля
Нет базовых элементов
Дизайнеры + Разработчики = ⚔️
Нет UI компонентов
Сложно найти компонент
Нет просмотра
компонентов
11
Много компонентов =
ниже ценность компонента
13
14
15
16
Open + In Progress
Invalid
In ReviewПроблема переиспользования компонентов
Проблемы
• Отсутствие синхронизации (дизайнера и разработчика)
• Поиск нужного компонента
• Много разных версий компонента (какую использовать?)
• Сложное тестирование компонентов
• Изменения связанных компонентов (могут сломать продукты)
• Страдание нового разработчика (обучение)
17
Покажите,
где выход?
18
Потребности
20
Разработчики
Знания о компонентах
21
Потребности
• Максимальное переиспользование
• UI компоненты
• Каталог компонентов
• Состав компонента
• История компонента
• Документация
22
23
Дизайнеры
Каталог компонентов
24
«… х■■ найдешь актуальный макет»
Потребности
• Унификация стилей (стандартные гайдлайны)
• Актуальный каталог компонентов
• Возможность поиграться с компонентами
• Экспорт во внешние системы (Sketch, Figma)
• Прототипирование интерфейсов
• Дизайнеры + Разработчики = 😍
25
26
Климат кода
React, Basis.js и нативный код
Сейчас
27
28
▲
Component Platform
29
Технологии и процессы
эффективного создания продуктов
30
◉
Прозрачные процессы
Процессы
• Манифест создания приложений
• Манифест хранения данных приложений
• Мониторинг ключевых метрик
• Оптимизация старых процессов
• Проект “Инициативы”
31
32
◉
Дизайн-система
33
Способ коммуникации между
дизайнером и разработчиком
Зачем?
• Индустриализация разработки интерфейсов
• Много “продуктовых” команд (дорого изобретать с нуля)
• Согласованность разработки
• Повышение качества разработки
• “Дизайн-система” звучит круто
• Набор стандартных шаблонов
• Технологическая платформа компонентов
34
35
Тренд
36
Готовые решения
Carte Blanche /Playground/
https://github.com/carteb/carte-blanche
https://github.com/meteor/chromatic/
Meteor Chromatic /Showcase/
https://github.com/airbnb/react-sketchapp
React Sketchapp /Sync to Sketch/
37
https://reactstudio.com
React Studio /Visual Editor/
React Cosmos /Redux/
https://github.com/react-cosmos/react-cosmos
https://github.com/electrode-io/electrode-explorer
Electrode Explorer /Versions with npm/
https://github.com/storybooks/react-storybook
React Storybook /Logger + addons/
38
https://github.com/storybooks/react-storybook
React Styleguidist /Redactor/
Vue Play /Vue.js/
https://github.com/vue-play/vue-play
https://github.com/bhauman/devcards
Devcards /ClojureScript/
https://sourcejs.com
Source.js /JavaScript/
39
https://github.com/yandex/dpt
Yandex Depo /BEM-based/
Protein /Tool/
http://theprotein.io
http://compositor.io/
Build components /Tool/
https://www.figma.com
Figma, Atomic /Prototype/
40
https://atomic.io
React или 🤷♀️
41
Phakt
42
Инструмент для визуального
отображения кода
43
Ценности
44
Язык
коммуникации
45
Унификация
визуального стиля
46
Скорость
создания продукта
47
Гибкость
изменения продукта
48
Демо
49
50
51
Playground
56
◉
Инструменты оценки качества
Видеть
изменения
Контролировать
изменения
Не бояться делать
изменения
1. Платформа тестирования
Требования к платформе —
простота, скорость и юзерфрендли
TDD, BDD или test()
— как нравится вам
Git, Watch, Cache, Parallelizes test
— умное использование окружения
Messages, Interactive mode, Zero
Configuration, Instant Feedback
— дружелюбность
Jest
2. Snapshot.js
Инструмент для
исследования компонента
Возможности
• Информация о структуре компонента
• Генерация дерева компонента (jest.snapshot)
• Генерация разных состояний компонента
• Поиск элементов в компоненте
• Поиск компонента в компоненте
• Эмуляция событий в компоненте
69
// Snapshot test
test('button', () => {
const snap = snapshot(<Button>Button</Button>);
expect(snap.snapshot).toMatchSnapshot();
});
Генерация структуры
События компонента
// Event test
test('button with onClick', () => {
const fn = jest.fn();
const snap = snapshot(<Button onClick={fn}>Button</Button>);
snap.find('button').simulate('click');
expect(snap.snapshot).toMatchSnapshot();
expect(fn).toHaveBeenCalled();
});
Поиск элемента
// Find test
test('alert with close', () => {
const snap = snapshot(<Alert hasClose={true}>Alert</Alert>);
const elementClose = snap.find(element => {
return element.props.className.includes('close');
});
expect(elementClose.type).toBe('button');
});
3. Debug.js
Инструмент для
проверки компонента
Возможности
• Позволяет писать правила, по которым будет проверяться
компонент
• Проверка свойств компонента
• Проверка сложных зависимостей в компоненте
• Возможность задания кастомных правил для проверки
75
Нашли ошибки
после первого релиза
Компонент платформа
• Прозрачные процессы
• Технологическая платформа для промышленной разработки
• Инструменты оценки качества изменений
77
78
Развивайте платформу
и делитесь опытом
Спасибо
@limarc
Image refs
• Fabricio Rosa Marques
https://dribbble.com/shots/2810191-Lego-Brick-Loader
• Kee Lee
https://dribbble.com/shots/3106656-10000-Layers-Of-Legos-2x
• Berin Catic
https://dribbble.com/shots/3274286-Microservices-illustration-for-magazine-4
• Clip Art Bunny Rabbits
http://olddesignshop.com/2017/02/free-vintage-clip-art-bunny-rabbits/
80

Contenu connexe

Similaire à Компонент-платформа / Александр Лобашев (Avito)

Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьScrumTrek
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьDenis Izmaylov
 
Компонентный веб. Проникновение в дизайн / Антон Виноградов (АО "Альфа-Банк",...
Компонентный веб. Проникновение в дизайн / Антон Виноградов (АО "Альфа-Банк",...Компонентный веб. Проникновение в дизайн / Антон Виноградов (АО "Альфа-Банк",...
Компонентный веб. Проникновение в дизайн / Антон Виноградов (АО "Альфа-Банк",...Ontico
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Компонентный веб. Проникновение в дизайн.
Компонентный веб. Проникновение в дизайн.Компонентный веб. Проникновение в дизайн.
Компонентный веб. Проникновение в дизайн.Anton Winogradov
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаUP2IT
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими рукамиRoman Dvornov
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
 
JavaScript завтра
JavaScript завтраJavaScript завтра
JavaScript завтраSergey Rubanov
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)Ontico
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)AvitoTech
 
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...JSC “Arcadia Inc”
 
Решения сообщества для SharePoint
Решения сообщества для SharePointРешения сообщества для SharePoint
Решения сообщества для SharePointVitaly Baum
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Ontico
 
Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковElena Grahovac
 
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...Ilya Slobodin
 
Денис Паясь
Денис ПаясьДенис Паясь
Денис ПаясьCodeFest
 

Similaire à Компонент-платформа / Александр Лобашев (Avito) (20)

Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
 
Компонентный веб. Проникновение в дизайн / Антон Виноградов (АО "Альфа-Банк",...
Компонентный веб. Проникновение в дизайн / Антон Виноградов (АО "Альфа-Банк",...Компонентный веб. Проникновение в дизайн / Антон Виноградов (АО "Альфа-Банк",...
Компонентный веб. Проникновение в дизайн / Антон Виноградов (АО "Альфа-Банк",...
 
Teatro
TeatroTeatro
Teatro
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Компонентный веб. Проникновение в дизайн.
Компонентный веб. Проникновение в дизайн.Компонентный веб. Проникновение в дизайн.
Компонентный веб. Проникновение в дизайн.
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчика
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
 
JavaScript завтра
JavaScript завтраJavaScript завтра
JavaScript завтра
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
 
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
 
Решения сообщества для SharePoint
Решения сообщества для SharePointРешения сообщества для SharePoint
Решения сообщества для SharePoint
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходников
 
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
 
Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
 

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...
 

Компонент-платформа / Александр Лобашев (Avito)

Notes de l'éditeur

  1. Всем привет. Спасибо, что нашли время и пришли на доклад. Сегодня хотелось бы рассказать историю компонентов, какие проблемы возникли и какие инструменты у нас получились в результате решения проблем.
  2. Я работаю разработчиком в компании Avito, и так получилось, что я начал заниматься платформой для компонентов.
  3. Но прежде продолжить рассказ про платформу, хотелось бы рассказать историю о том, с чего все начиналась
  4. В 2014 году вроде бы шло всё хорошо.
  5. * Мало разработчиков, все знали, кто что написал или какой компонент стоит использовать * Простой императивный код на jquery, небольшие базовые компоненты * Все было просто, условно один интерфейс - один большой компонент * Тестов было не много, в основном юнит-тесты, поэтому использовались простые инструменты Chai + Mocha * Код ещё пахнет свежей травкой
  6. Если схематически изобразить путь доставки продукта на рынок, всё было просто. Нужен новый продукт > проектируется дизайн > инженеры разрабатывают продукт > он уже на Авито. Компоненты создавались новые или активно переиспользовались простые компоненты, например, кнопка. Доставка продукта была быстрой.
  7. Даже была начальная версия дизайн-системы, но просуществовало недолго. Спустя некоторое время компоненты начали активно изменятся, система устаревала, так как нужно было добавлять и обновлять компоненты вручную.
  8. По мере того, как компания активно развивалась, старые процессы и подходы к разработке перестали справляться.
  9. * Уже больше 20 разработчиков, появилось много маленьких функциональных команд, состоящие из всех видов инженеров * Формализация процессов разработки — изменились процессы, много код-ревью, стандартизация кода и внешних зависимостей, уже не подключишь свой любимый плагин на jQuery :D. * Задачи становятся сложными, $ уже не справляется, часть разработчиков пишут на реакте или базисе * Наступила эра ренесанса, уже много SPA приложений для эко-системы Авито. Из компоненты на jQuery, компоненты плавно перетекли в react/basis компоненты, появилась интеграция с данными. Интерфейсы также становятся сложными, уже представляются собой живые организмы с данными, композициями и компонентами. * К существующим инструментам тестирования добавились новые, платформа для тестирования росла. Тратилось много времени на написания тестов. * С течением времени код устаревает, тяжело поддерживать в актуальном состоянии. Накапливается технический долг, так как любые рефакторинги болезненно влияют на продукт.
  10. Теперь процесс создания продукта можно изобразить примерно так. Я думаю выглядит знакомо, не правда ли? Как видно, компонентный подход несет в себе много опасностей и проблем без соответствующих решений. Давайте попробуем разобраться, почему так происходит?
  11. Представим страницу, на которой есть очень много разных компонентов и приложений. Если показать компоненты на странице, выглядит примерно так.
  12. Компонентов много. Например, ссылки, кнопки и другие базовые компоненты связаны между отдельными интерфейсами, потому что это один компонент. Без специальных инструментов очень сложно найти какой-то компонент на странице и понять где он используется ещё.
  13. Получается, что чем больше компонентов, чем труднее их переиспользовать. Проще взять и сделать свой компонент, чем найти компонент или разобраться как работает другой компонент. Ценность каждого компонента падает.
  14. Не так давно мы выгрузили данные из JIRA в систему аналитики и построили график. На графике видно, что если раньше до 2016 года накатывало волнами большие задачи, то после все задачи начали выполняться дольше. Скорее всего тут проблема не больших задач, а переиспользования существующего кода, то есть компонентов. Давайте ещё раз перечеслим основные проблемы с большим количеством компонентов.
  15. * Дизайнер и разработчик не могут найти общий язык * Приходит новый дизайн, разработчик пытается найти компонент и посмотреть, где используется * Дублирование компонентов, на проекте иногда появляются несколько похожих кнопок * Инструменты тестирования перестают справляться, тестов много и долго выполняются * Изменение инпута в одном проекте возможно могут сломать другие продукты, необходимо наглядно видеть как изменения одного компонента повлияют на другие компоненты * Самая большая боль — это интеграция нового разработчика в проект, для него много компонентов представляют собой новый мир
  16. Давайте попробуем найти выход.
  17. И так, мы определились с проблемами, пришло время определиться с потребностями.
  18. Зная потребности и страдания разработчиков и дизайнеров, мы создали технический продукт под названием “Компонент платформа”
  19. Что включает в себя компонент платформа или что такое компонент платформа? Постараюсь подробно рассказать что скрывается под этим громким названием и из чего состоит компонент-платформа.
  20. Если описывать кратко компонент-платформу, то это технологии и процессы для эффективного создания продуктов. Помните нашу цель? Доставлять продукты как можно быстрее на рынок. Компонент платформа состоит из трех важных составляющих — прозрачные процессы разработки, дизайн-система и инструменты оценки качества изменений.
  21. Отсутствие процессов отъедает много времени в разработке — сложно понять, как делать правильно, что лучше использовать x или y, можно ли использовать новый фреймворк x или y. Основная цель процессов — максимально эффективно использовать знания и опыт разработчика в разработке.
  22. * Описали, как эффективно разрабатывать приложения или компоненты * Описали процесс потока данных на странице и как эффективно хранить данные в приложение * Отслеживаем ключевые метрики кода и интерфейсов, которые показывают насколько оптимальный климат в коде и в компонентах * Выкинули всё не нужное в разработке :) * Разработчики всегда хотят привнести свой опыт в проект, нельзя этому мешать, для этого у нас есть инициативы
  23. * Когда вы распределяете дизайнеров и разработчиков небольшими группами в рамках организации из сотен или тысяч человек, то они вносят свой вклад в код с очень небольшой площадью покрытия. * Невероятно дорого, чтобы сотни хорошо оплачиваемых дизайнеров и разработчиков заново изобретали интерфейс и программировали его с нуля с каждой итерацией
  24. Прежде чем начинать делать свои технические решения, мы посмотрели готовые решения на рыке, наверное уже кто-то решал схожие проблемы?
  25. Давайте поговорим про ценности, которые он привнес
  26. Дизайнеры и разработчики начинают разговаривать на одном языке — компонентами, в большей степени готовыми компонентами.
  27. Из-за того, что все используют текущие компоненты, происходит унификация стилей.
  28. По той же причине возрастает скорость создания продукта и
  29. повышается гибкость изменения продукта
  30. Скучнооооо, упроситить или убрать. Убрать сервис слово Сделать мультяшно
  31. Нету демки на систему, очень плохо. Нужны очень демки. Добавить пример платформ.джс
  32. Инструменты оценки качества компонента — это платформа для тестирования компонентов. Для чего она нужна?
  33. При изменение компонента необходимо видеть, как изменения повлияли на структуру компонента, например, на верстку или стили.
  34. Когда компонент используется в других компонентах или приложениях, необходимо видеть как эти изменения повлияли на продукт в целом и контролировать их.
  35. Достаточно сложно вносить изменения в существующий компонент и при этом не сломать продукт или связанный компонент. Иногда это останавливает от внесения изменений в код компонента, проще сделать новый компонент. Необходимо уничтожить этот страх.
  36. Цель — достичь максимального качества и разбора компонента на маленькие кусочки. Давайте поговорим про инструменты, которые позволяют достичь этого.
  37. Сравнивали много платформ и библиотек, остановились на Jest. Jest подходил под эти требования.