Pull to refresh
11
0
Никита Хромушкин @nkh

Продуктовый Разработчик, Техлид

Send message

Спасибо за отзыв, Рад что откликается!

Изменить внутреннее восприятие в человеке очень трудно, и для этого он должен сам захотеть. Для этого ему нужна подходящая среда, инфополе. Статьи, посты, выступления. У нас внутри организации ценность продуктового подхода транслируется со всех уровней. И это самый важный мотиватор для команды, на мой взгляд.

Гораздо сложнее (но тоже возможно) построить такой бирюзовый островок внутри организации с сильными вертикальными связями. Для этого нужны энтузиасты внутри команды. А чтобы энтузиасты появились, нужно показать, как оно бывает. Говорят, хорошо помогают оффлайновые тренинги-симуляции. На таком тренинге вся команда один день в игровом формате работает по-другому, чтобы привнести в свою обычную работу что-то новое.

Спасибо за наводку, отличная статья! И дискуссия интересная в комментах)
Действительно, монтировать том в контейнер с базой удобно еще и тем, что это дает возможность иметь локально персистентную базу. Тут кому как удобнее, на самом деле. Я описал концепцию в ее самом простом виде.
Хороший пример с email) Проверку на уникальность в приложении мы тоже сделали бы через уникальный индекс на базе и поиск по нему. Есть еще вариант со вставкой и отловом исключения, но мы стараемся избегать exceptions as control flow. В любом случае, мы столкнулись бы с проблемой неуникальных данных еще в момент реализации такой проверки. Что бы мы делали с такими записями — вопрос бизнес логики приложения и продукта. Универсального ответа не могу дать.
Переливка данных из прода в тестинг всегда проходит через фазу деперсонализации, на которой чувствительная информация маскируется. Этот процесс у нас не включен в ci и проходит в полуручном режиме.
Статья по ссылке — про сравнение двух состояний схемы. Нам нужно было актуализировать в тесте содержимое (данные) справочных таблиц, которое нагенерили пользователи в проде. Стандартных легковесных инструментов сходу не нашли. Буду рад если подкинете такой.
Мы стараемся обеспечить максимальную изоморфность сред. Пока не было ситуации, когда в тестинге работает, а в проде — нет. Если такая ситуация возникнет, то в первую очередь будем искать дырку в процессе) А уже потом править ченджсет, если потребуется.
Когда столкнулись с такой задачей, напедалили на Node.JS свою нехитрую утилиту, которая соединяется в обе базы, сравнивает содержимое конкретных таблиц из конфига и генерирует DML SQL скрипты. github.com/qiwi/pg_comparator
Кстати, эту утилиту тогда сделал школьник-стажер под моим менторством. Об этом мы рассказывали в другой статье habr.com/ru/company/qiwi/blog/434636
Выглядит как запрос на отдельную статью о том, как мы решали аналогичную боль =)
Напишем статью, если это и правда востребовано. Ставьте upvote, если откликнулось.
Если коротко, то это процесс + техническое решение, основная цель которых — контроль и проверки на всех этапах.
image
Починето. Как вам такая скорость реакции для большой компании?
Спасибо за обратную связь. Вы были тем первым счастливчиком, кто это SDK использовал, и хочу заметить, что по результатам общения с вами, эти мелочи фиксились с реактивной для крупной компании скоростью, почти стартаперской =)
В тестах sdk есть одна проблема: они интеграционные и зависят от реального продового счёта при рефанде (частичная отмена транзакции). Сейчас как раз этот продовый счёт ушел в небытие.
api.travis-ci.org/v3/job/463300829/log.txt вот лог того падающего билда тестов, можете убедиться.

6 passing (3s)
  2 failing

  1) qiwi api v4
       requests: 
         gets refund info:
     StatusCodeError: 404 - {"serviceName":"invoicing-api","errorCode":"api.invoice.not.found","description":"Invoice not found","userMessage":"Invoice not found","dateTime":"2018-12-04T14:37:26.41+03:00","traceId":"5949800cc77647e0"}

  2) qiwi api v4
       requests: 
         makes refund:
     StatusCodeError: 404 - {"serviceName":"invoicing-api","errorCode":"api.invoice.not.found","description":"Invoice not found","userMessage":"Invoice not found","dateTime":"2018-12-04T14:37:26.89+03:00","traceId":"a5e914b227b4a9bc"}
      

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity