Фронтопс? Серьёзно?

Анна Селезнёва

Фронтопс?Серьёзно?

Обо мне

Анна Селезнёва

Ведущий фронтенд-разработчик в Spiral Scout

Соорганизатор сообществ MinskCSS, MinskJS, BeerJS

#freehugs

Что делает фронтенд-разработчик?

Автоматизация

Контроль версий

Деплой

Новые технологии

Пакетный менеджер

Новые технологии

Локальный веб-сервер

Тесты

Линтеры

Сборка

Новые технологии

Производительность

Мониторинг

Актуальность

Причем здесь фронтопс?

Термин

Девопс —методология взаимодействия специалистов по разработке со специалистами по информационно-технологическому обслуживанию и интеграцию их рабочих процессов друг в друга для обеспечения качества продукта.

Википедия

Front End Development

+

Operations

=

Front End OpsDevOps

2013

Фронтопс — это мост между целью приложения
и его реальностью

Алекс Секстон @ Stripe / Smashing Magazine

Front End Ops Conference

2015

Фронтопс — это тот, кто поставляет в компанию лучшие инструменты и практики, помогая разработчикам эффективно сосредоточиться на своей работе и обеспечивая высокое качество кода и производительность

Стивен Кокс @ agile{collective}

Только код

Команда

Нет тестов

Нет линтеров

Некачественная сборка

Всё плохо

Проблемы приложения

Что такое фронтопс?

Опыт крупных компаний

Тимлид

Что делает фронтопс?

Инфраструктура

Настройка репозитория

Настройка репозитория

package.json:

      "husky": {
  "hooks": {
    "pre-commit": "yarn lint && yarn test",
  }
}
    

Настройка репозитория

      $ git config core.autocrlf false
    

Инфраструктура

package.json

      "devDependencies": {
  "typescript": "^3.7.2",
},
"dependencies": {
  "react": "^16.12.0",
},
      
    

Контроль версий пакетов

package-lock.json

yarn.lock

Использование:

      $ npm ci
      $ yarn

Инфраструктура

Локальный веб-сервер

      const express = require('express');
const app = express();
const middleware = require('./middleware');
middleware(app, config);
app.listen(port, host, async (err) => {
  ...
});
    

Качество кода

.editorconfig

      [*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
charset = 'utf-8'
trim_trailing_whitespace = true
    

Качество кода

.eslintrc.js

      module.exports =  {
  extends: ["airbnb-typescript"],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaVersion:  2018,
    ...
};
    

.stylelintrc.json

      {
  "extends": "stylelint-config-standard"
}
      
    

Сборка

webpack.config.js

      module.exports = {
  ...
  devtool: /* Карты кода */,
  plugins: /* Необходимые плагины */,
  optimization: /* Настройка оптимизации */,
  ...
};    
    

webpack-bundle-analyzer

webpack-bundle-analyzer

Сборка

Окружения

.env

      DB_HOST=127.0.0.1
DB_USER=root
DB_PASSWORD=password
STRIPE_SECRET_KEY=secret
GOOGLE_API_KEY=value
    

CI/CD

jest.config.js

      module.exports = {
  preset: 'ts-jest',
  ...
};
      
    

CI/CD

Инструкции

  1. Установить NodeJS
  2. Установить Yarn
  3. Выполнить yarn install
  4. Выполнить yarn build
  5. Скопировать папку dist

README

README

Мониторинг

Sentry.io

      import * as Sentry from '@sentry/browser';
Sentry.init({ dsn: `https://${key}@sentry.io/${project}` });

// Использование:
try { ... } catch (err) {
  Sentry.captureException(err);
}     
    

Мониторинг

Проверка пакетов

Актуальность:
yarn outdated

Проверка пакетов

Актуальность:
yarn outdated

Уязвимость:
yarn audit

Аудит

Chrome → DevTools → Audits

Lighthouse CI

      language: node_js
node_js:
  - 10 # use Node 10 LTS or later
before_install:
  - npm install -g @lhci/cli@0.3.x
script:
  - npm run build # build your site
  - lhci autorun # run lighthouse CI
addons:
  chrome: stable # make sure you have Chrome available
    

Нужен ли нам фронтопс?

Задачи фронтопса

Задачи фронтопса

+ запуск новых проектов:

Где взять фронтопса?

Вакансии

Вакансии

Вакансии

Где взять фронтопса?

Мы, как фронтендеры, заботимся о пользователях.
От того, насколько доволен пользователь, напрямую зависит успешность проекта.

Алексей Плуталов @ Evil Martians / Spb Frontend Drinkast

Я – тимлид. Что делать?

Я – разработчик. Что делать?

Действуй!

Спасибо!

asktwi


Слайды: askd.rocks/pres/frontops

#freehugs