Технологии

Постоянно челленджим выбор технологий.

1. Весь код соответствует минимальным требованиям InnerSource.

  • Код доступен для каждого сотрудника и хранится в GitHub.
  • Несоответствие требованиям InnerSource объявляется техническим долгом и устраняется.
  • Код-ревью обязателен.

Практики и ритуалы:

Правило 30%
Каждый инженер может использовать часть своего рабочего времени на исследовательские задачи, на работу над тех. долгом или обучение. Количество процентов примерное и должно определяться техническим лидером совместно с продуктовой командой.
Правило Бойскаута

У настоящих бойскаутов есть правило о поляне, которую они должны оставить чище, чем оно было до их прихода.

Наша версия: оставь код в лучшем состоянии, чем то, каким он был до тебя. Как говорил Дядюшка Боб, не причёсывание беспорядка в коде должно быть так же плохо и социально неодобримо, как если бы человек мусорил на улице.

[source]
Правила контрибьюции
В каждом репозитории описаны соглашения о том, как они обрабатывают изменения в коде. Например, работа с пулл-реквестами, процесс код-ревью и настройки защищенных веток в гите. [source]


2. Мы автоматизируем по возможности всё.

  • Мы предпочитаем автотесты ручному тестированию.
  • Билд и деплой осуществляется с помощью CI инструментов.

Практики и ритуалы:

DevOps

Дружба между разработчиками и опсами :) Если серьёзно, то хочу порекомендовать книгу для полного понимание этого термина.

Мы практикуем религию DevOps как основной подход к построению продукта.

IaC
Infrastructure as Code — Инфраструктура как Код. Мы предпочитаем автоматические конфигурационные файлы простому накликиванию через веб-интерфейс. Эти файлы содержат сценарий подготовки инфраструктуры, билда и деплоя приложения.


3. Выбор технологии согласован с Таблицей Технологий.

  • Таблица поддерживается обновлённой Технологическим Комитетом.
  • Все движения в основной таблице зарегистрированы в таблице движений.
  • Мы поддерживаем инициативу попробовать новую технологию или подход с оповещением Комитета.

Практики и ритуалы:

Технологический Комитет

Комитет представляет собой сообщество корпоративных архитекторов, технических архитекторов и технических лидеров разработки и ИТ-инфраструктуры. Цель — выбор и рекомендации по использованию технологий в Леруа Мерлен для повышения эффективности использования ресурсов компании. Технологии включают в себя языки программирования, платформы и библиотеки, инструменты и подходы в контексте конкретных сценариев использования.

Встречи проводятся по меньшей мере раз в месяц. Лидер движения — СТО.


4. Фронтовые приложения следуют Дизайн Системе.

Дизайн система доступна пока только из внутренней сети

  • Все бизнес настройки конфигурируемы через веб-интерфейс.
Дизайн Система
Дизайн-система — это набор правил и инструментов для визуального и технического исполнения, который отражает философию продукта и постоянно развивается. [source]

5. Мы строим надежные приложения и инфраструктуру.

  • Мы узнаём о проблемах в проде быстрее пользователей.
  • Мы предпочитаем stateless приложения и запускем их в контейнерах используя оркестратор контейнеров.
  • Приложения корректно переносят частичные отказы.
  • Приложения и базы данных реплицированы и поддердивают шардинг.
  • Приложения корректно обрабатывают некорректные входящие запросы и отдают только корректные ответы.
  • Сервисы предоставляют и контролируют SLO.
  • Инфраструктура ключевых систем построена по принципу мастер-мастер репликации.

Практики и ритуалы:

VALET

Гугловский способ измерения SLO.

  • Volume (traffic) — Объём трафика — какой объём бизнес транзакций сервис может обработать?
  • Availability — Доступность — насколько сервис готов бесперебойно обслуживать посетителей?
  • Latency — Задержка — насколько быстро отвечает сервис?
  • Errors — Ошибки — правильно ли ведется учет и «расходование» бюджета ошибок?
  • Tickets — Тикеты — насколько часто необходимо обслуживать сервис в ручном режиме?
[source]
Фича флаги
Ещё называют feature toggling. Подход, при котором новая функциональность добавляется как подключаемый модуль, который можно отключить в любой момент.
Распределённый Трейсинг
Каждый запрос на входе получает уникальный трейс ID и этот идентификатор передаётся в каждом последующем вызове.
Телеметрия
Приложения выставляют наружу эндпоинт с показателями жизни (метриками) для анализа и мониторинга.


6. Тестирование так же важно, как и разработка.

  • Тестирование начинается на этапе формирования требований.
  • В каждой продуктовой команде есть как минимум один QA-инженер.
  • Код покрывается тестами сразу. Тесты пишутся сразу, а не откладываются в бэклог.

Практики и ритуалы:

Динамические тестовые окружения
Тестирование системы проводится на динамически поднятом тестовом окружении. Такое окружение включает в себя все зависимости, необходимые для тестирования (внешние зависимости рекомендуется заменять моками). Доступ к таким окружениям ограничен для предотвращения влияния на процесс тестирования. По окончании тестирования окружение удаляется.
Мокирование
Во избежание зависимости от внешних систем (нестабильное поведение, ограниченный или отсутствующий контроль над тестовыми данными), для тестирования используется мокирование таких систем. Мок — это эмулятор системы, который повторяет ее поведение в необходимом объеме, но не воспроизводит внутреннюю логику.
Тестирование производительности

Вид тестирования, при котором тестируется не логика системы, а ее быстродействие.

В качестве критериев производительности бэкэнда используются следующие метрики:

  • Количество запросов в секунду
  • Время отклика, мс
  • Процент ошибок, %
  • Утилизация ресурсов системы, %

Для тестирования производительности фронтэнда используется Google Lighthouse и его метрики. Бекэнд рекомендуется тестировать при помощи Gatling.

Канареечное развертывание
Канареечное развертывание помогает снизить негативное воздействие релизов, в которых пропущены баги. Эта стратегия заключается в том, что сначала изменение развертывается на небольшом подмножестве серверов, тестируется, а затем развертывается на остальных серверах. Читать больше

Последнее изменение 31.03.2021: Cosmetics changes (#37) (fb72cc4)