Дата публикации: 6.07.2022
Это материал о втором дне IT-конференции «Сибирь.JS», организованной Purrweb. Вы можете прочитать текст о первом дне по этой ссылке.
Второй день начался так же, как и первый: участников направлял мудрый охранник и встречали организаторы. И пироги от «Шато», печенюшки с кофе от Domka и классный мерч никуда не делись.
Fronted тимлид Toloka Алексей Попков рассказал, как они ускорили разработку.
— Вот у нас появился новичок в команде, который написал код. Тестеры его проверили, он намёржил, но всё равно потом где-нибудь рвануло. Всё из-за огромного кода, который увеличивался годами.
Чтобы это исправить, мы добавили в поиск энтерпрайз и начали резать фичи между страницами и компонентами.
Feature-Sliced — архитектура, которую разработали наши коллеги. Мы попробовали разложить нашу текущую структуру по этому образцу, но всё равно ломали мозг, ведь погружаться в уже готовую идеологию довольно трудно.
Но вот что мы получили после этих нововведений:
- прозрачную файловую структуру;
- возможность точно определять сроки;
- более лёгкое обучение новичков;
- улучшение контроля процессов.
В целом стало неплохо, и мы решили разрезать это дело общими инструментами.
Мы нашли dependency-cruiser, разбили на фичи, продумали структуру и поняли, что страдать было необязательно.
В какой-то момент закрались подозрения, что что-то ломается, но где – непонятно . Мы выявили большие тайминги и странные зависимости. После структуризации получилось найти более 5 000 зависимостей.
Тайминги сократились до трёх минут без кэша и размер репозитория сократился с 20-ти до четырёх гигабайт.
В итоге разработка, регресс и тестирование идут быстрее.
Технический директор Skillbox Holding Глеб Михеев рассказал о Contract First принципе в работе с API
— Фронтендер пишет бекендеру: «как авторизоваться, куда писать, ответь пожалуйста». Бекендер говорит: «я занят, давай вечером». И так по кругу.
Почему такое происходит? Мы сильно завязаны на доступности бекендера.
А что, если бы мы договорились, как работает API, чтобы не донимать друг друга? Тогда этот договор должен выглядеть так:
1. Он должен содержать доступы для программного анализа;
2. Он должен полностью описывать методы;
3. Он должен храниться как код.
Теперь у нас есть единый источник истины, полный с точки зрения описания. Так мы изобрели swagger. Не нужно думать, куда и как что-то отправить, ведь есть только объект API.
Но вот что нам нужно, чтобы достичь момента единовременного старта с бекендером:
1. Сделать мокирование;
2. Найти способ не писать тестовые данные в бизнес-код.
По макированию есть много библиотек, например, новомодный nheat. С ним просто берём токен из автогенного и пишем функцию, которая его возвращает.
Руководитель веб-разработки «Самоката» Олег Коровин рассказал, как защитить разработку в эпоху кризиса.
— Мы пользовались облачными инструментами для распространения кода, а потом в феврале-марте прилетел черный лебедь. Появился шанс, что нас отключат от системы распространения приложения, из-за чего не сможем проводить оплаты и забудем о новых версиях библиотек. Но что же делать?
Первое, что приходит в голову, это скачать весь интернет. Мы сохранили всё у себя, организовали почтовые сервера, бекали google-таблицы, сохраняли часть данных на физических носителях.
Мы настроили все проекты на наш нексус. На этом можно было бы и разойтись, но начали появляться библиотеки, которые могут завести вредоносное ПО.
Что делать, если прокси-репозиторий не работает без интернета? Если у вас есть библиотека, которая в грейв-репозитории, разработчик идёт по всем репозиториям и ищет библиотеку. Когда вы отключили интернет, сборщик идет в первый репозиторий, потом выдает пятисотый и далее она никуда не идёт.
Через нашу CI начали заливать новые библиотеки. Мы получаем из нового репозитория список новых библиотек, скачиваем и пушим в новый репозиторий. Чтобы ускорить копирование, сделали процесс на node.js, потому что язык работает быстро.
JavaScript — один из самых популярных языков программирования в мире. Он используется для создания веб-, мобильных, десктопных и серверных приложений. Поэтому важно аккумулировать локальное сообщество, члены которого будут делиться идеями и опытом, чтобы повышать качество продуктов на JS. И организаторы «Сибирь.JS» прекрасно справились с этой задачей.
Автор: Ярослав Загородников
Фотографии предоставили организаторы