JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для...
-
Upload
geekslab-odessa -
Category
Technology
-
view
44 -
download
9
Transcript of JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для...
![Page 1: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/1.jpg)
Сбалансированное окружение для вашей продуктивностиАлексей Зеленюк, Application Architect
eleks.com
Big blue heading
![Page 2: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/2.jpg)
О чем доклад
● Почему в JS все так сложно?● Как выглядит современное JS окружение● Мой первый JS Энтерпрайз● Все это правда надо?● Мои менее продвинутые проекты● Начинаем новый проект
● Что с этим делать?● Что приводит к сложности?● Бройлерплейты против велосипедов● Рельсово-Сиэлайная магия● Гибридный подход
● Lean Environment● К чему нужно стремиться?● С чего нужно начать?● Что можно отложить?● Чего бояться?● Полезные мелочи
● О команде
Сбалансированное окружениедля вашей продуктивности,
Алексей Зеленюк
![Page 3: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/3.jpg)
Современное JS окружение
1. Package Management
2. Bundling
3. Transpiling
4. Minification
5. Sourcemaps
6. Mocked API
7. Dev Webserver
8. Component Libraries
9. Build automation
10.Production deploy
11.Code Style validation
12.Unit/E2E tests
![Page 4: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/4.jpg)
В придачу
1. Continuous Integration
2. Build automation
3. Production deployment
4. Code-review инструменты и конвенции
5. Tests coverage
6. SDLC специфика, и прочий Agile
![Page 5: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/5.jpg)
Мой первый JS ЭнтерпрайзPython (древней версии)
Ruby gems для компаса и еще какой-то фигни
Bash скрипты (много)
Backbone забытой версии, модифицированный
Юнит тесты
E2E тесты
Время сборки ~ 10 минут
Деплой – ~ 1 час
![Page 6: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/6.jpg)
Как-то так…
![Page 7: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/7.jpg)
Когда попадаешь в менее продвинутый проект
![Page 8: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/8.jpg)
Когда начинаешь проект с нуля
![Page 9: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/9.jpg)
Что в итоге?
● Программа обросла библиотеками
● Билд обрастает скриптами
● Проект новыми требованиями
● И новыми костылями
● Много тяжелых тестов
● Сложность растет
● Рефакторить нет времени
● Лепим сверху, сзади и по бокам
● Производительность упала
● А давайте перепишем с нуля?
![Page 10: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/10.jpg)
Начать с чистого листа нетрудно.Трудно изменить почерк.
П. Коэльо
![Page 11: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/11.jpg)
Избыточная сложность.Что к ней приводит?
1. Лень/нет времени разбираться
2. Лень/нет времени следить за прогрессом
3. Хайп, погоня за новым
4. Новые требования не вкладываются в архитектуру
5. Неправильные решения и лишние абстракции
6. Пренебрегание рефакторингом
![Page 12: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/12.jpg)
Бройлерплейты
• Экономит время (вначале)
• Фокусируемся на задаче
• Поддерживается
• Full-featured
• Стандартный стек
• Много лишнего
• Меньше понимания
• Трудно расширить
![Page 13: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/13.jpg)
Велосипеды
• Выбираем только нужное
• Больше понимания
• Меньше лишней сложности
• Проще изменить
• Долгий старт
• Нужно поддерживать
• Свое не всегда лучшее
![Page 14: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/14.jpg)
Теплый рельсовый CLI
• Стандартный подход
• Меньше рутины
• Ускоряет вход в проект
• Ускоряет разработку
• Само-документируемость
• Много лишнего кода
• Жесткие рамки
• Постоянная доработка
шаблонов
![Page 15: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/15.jpg)
Гибридный подход
1. Изучить лучшие решения
2. Выбрать наиболее подходящее
3. Пересобрать с оглядкой на него, с нуля
4. Создать шаблоны для CLI
5. Мотивировать коллег (и себя) их использовать
![Page 16: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/16.jpg)
Lean Environment
Less-is-Better
![Page 17: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/17.jpg)
К чему нужно стремиться?
1. Быстрый фидбек
2. Авто-конвенции
3. Масштабируемость
4. [TO BE CONTINUED]
![Page 18: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/18.jpg)
С чего начать?
1. Осмысление требований и 3-party интеграций
2. Понимание потоков данных и интерфейсов
3. Быстрый прототип на бойлерплейте и фидбек
4. EditorConfig и линтеры
5. Юнит-тесты
6. WIP Demo (localtunnel, Surge, etc)
7. Спецификация (Swagger, etc.)
8. Переосмысление и переписывание
![Page 19: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/19.jpg)
Что можно отложить?
1. Твердый выбор фреймворка и утилит
2. Выбор и настройка БД
3. Глубокую декомпозицию
4. Внедрение абстракций
5. DRY принцип
6. Все что можно отложить
YAGNIYou Ain’t Gonna Need It!
![Page 20: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/20.jpg)
Fake it until you make it!
1. [TO BE CONTINUED]
![Page 21: JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности](https://reader034.fdocuments.in/reader034/viewer/2022042611/58e65bc41a28ab8d758b48b9/html5/thumbnails/21.jpg)
О Команде
1. [TO BE CONTINUED]