Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности

66 views

Published on

JS Lab2017, 25 марта, Одесса
Алексей Зеленюк (Application Architect at Eleks Software)
Сбалансированное окружение для вашей продуктивности
Для построения больших веб-приложений необходим хороший фундамент: процесс сборки, тестирования и интеграции, анализа качества кода и отладки. Новые технологии и безнес-требования создают новые требования к окружению, усложняя его. Как построить надежное окружение, сохранив при этом его гибкость и простоту?

Published in: Technology
  • Be the first to comment

  • Be the first to like this

JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности

  1. 1. Сбалансированное окружение для вашей продуктивности Алексей Зеленюк, Application Architect eleks.com Big blue heading
  2. 2. О чем доклад ● Почему в JS все так сложно? ● Как выглядит современное JS окружение ● Мой первый JS Энтерпрайз ● Все это правда надо? ● Мои менее продвинутые проекты ● Начинаем новый проект ● Что с этим делать? ● Что приводит к сложности? ● Бройлерплейты против велосипедов ● Рельсово-Сиэлайная магия ● Гибридный подход ● Lean Environment ● К чему нужно стремиться? ● С чего нужно начать? ● Что можно отложить? ● Чего бояться? ● Полезные мелочи ● О команде Сбалансированное окружение для вашей продуктивности, Алексей Зеленюк
  3. 3. Современное 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
  4. 4. В придачу 1. Continuous Integration 2. Build automation 3. Production deployment 4. Code-review инструменты и конвенции 5. Tests coverage 6. SDLC специфика, и прочий Agile
  5. 5. Мой первый JS Энтерпрайз Python (древней версии) Ruby gems для компаса и еще какой-то фигни Bash скрипты (много) Backbone забытой версии, модифицированный Юнит тесты E2E тесты Время сборки ~ 10 минут Деплой – ~ 1 час
  6. 6. Как-то так…
  7. 7. Когда попадаешь в менее продвинутый проект
  8. 8. Когда начинаешь проект с нуля
  9. 9. Что в итоге? ● Программа обросла библиотеками ● Билд обрастает скриптами ● Проект новыми требованиями ● И новыми костылями ● Много тяжелых тестов ● Сложность растет ● Рефакторить нет времени ● Лепим сверху, сзади и по бокам ● Производительность упала ● А давайте перепишем с нуля?
  10. 10. Начать с чистого листа нетрудно. Трудно изменить почерк. П. Коэльо
  11. 11. Избыточная сложность. Что к ней приводит? 1. Лень/нет времени разбираться 2. Лень/нет времени следить за прогрессом 3. Хайп, погоня за новым 4. Новые требования не вкладываются в архитектуру 5. Неправильные решения и лишние абстракции 6. Пренебрегание рефакторингом
  12. 12. Бройлерплейты • Экономит время (вначале) • Фокусируемся на задаче • Поддерживается • Full-featured • Стандартный стек • Много лишнего • Меньше понимания • Трудно расширить
  13. 13. Велосипеды • Выбираем только нужное • Больше понимания • Меньше лишней сложности • Проще изменить • Долгий старт • Нужно поддерживать • Свое не всегда лучшее
  14. 14. Теплый рельсовый CLI • Стандартный подход • Меньше рутины • Ускоряет вход в проект • Ускоряет разработку • Само-документируемость • Много лишнего кода • Жесткие рамки • Постоянная доработка шаблонов
  15. 15. Гибридный подход 1. Изучить лучшие решения 2. Выбрать наиболее подходящее 3. Пересобрать с оглядкой на него, с нуля 4. Создать шаблоны для CLI 5. Мотивировать коллег (и себя) их использовать
  16. 16. Lean Environment Less-is-Better
  17. 17. К чему нужно стремиться? 1. Быстрый фидбек 2. Авто-конвенции 3. Масштабируемость 4. [TO BE CONTINUED]
  18. 18. С чего начать? 1. Осмысление требований и 3-party интеграций 2. Понимание потоков данных и интерфейсов 3. Быстрый прототип на бойлерплейте и фидбек 4. EditorConfig и линтеры 5. Юнит-тесты 6. WIP Demo (localtunnel, Surge, etc) 7. Спецификация (Swagger, etc.) 8. Переосмысление и переписывание
  19. 19. Что можно отложить? 1. Твердый выбор фреймворка и утилит 2. Выбор и настройка БД 3. Глубокую декомпозицию 4. Внедрение абстракций 5. DRY принцип 6. Все что можно отложить YAGNIYou Ain’t Gonna Need It!
  20. 20. Fake it until you make it! 1. [TO BE CONTINUED]
  21. 21. О Команде 1. [TO BE CONTINUED]

×