Ускорение разработки, swagger и решения в эпоху кризиса: второй день конференции «Сибирь.JS»

Дата публикации: 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» прекрасно справились с этой задачей.

Автор: Ярослав Загородников

Фотографии предоставили организаторы

Поделиться:
Появилась идея для новости? Поделись ею!

Нажимая кнопку "Отправить", Вы соглашаетесь с Политикой конфиденциальности сайта.