Купер.тех
رفتن به کانال در Telegram
Мы tech-команда, которая создает сервис доставки из магазинов и ресторанов (ex СберМаркет) и делает это с любовью. Хабр: https://bit.ly/3xOhSYw Видео: https://bit.ly/3SW9MCw VK: https://bit.ly/45NudZC Вакансии: https://team.kuper.ru/tech
نمایش بیشتر8 065
مشترکین
-724 ساعت
-167 روز
-2830 روز
آرشیو پست ها
8 065
+5
🎉 Хабру исполняется 20 лет!
А значит, самое время вспомнить, как всё начиналось!
Собрали ретро-карточки, в которых вспоминаем ранний Хабр и рассказываем, когда там появился Купер.тех.
И раз уж сегодня говорим про Хабр, есть ещё один приятный повод.
Сразу три наших статьи попали в шорт-лист премии «Технотекст»:
✨«Как запускать проекты без команды? Главное о кросс-командном проджект-менеджменте» — Марина Гончарова
✨«LLM‑разметка в поиске: от эксперимента к инструменту» — Александр Баранов
✨«Три мушкетера из мира DevSecOps. Внедряем инструменты для развития AppSec-процессов» — Максим Коровенков
Гордимся ребятами! ❤️
8 065
⚡️Новосибирск, мы едем!
30–31 мая будем со стендом на конференции CodeFest, где можно будет пообщаться с нашими экспертами, задать вопросы, поучаствовать в активностях и просто провести время по-соседски, как мы любим.
Если планируете быть на CodeFest, заглядывайте к нам. Будем рады познакомиться или увидеться снова.❤️
8 065
🌍Тестировать нельзя надеяться
В Купер.тех много микросервисов, интеграций и сценариев, которые завязаны друг на друга. Поэтому тестирование здесь редко ограничивается проверкой одной фичи: важно понимать, как изменение поведёт себя в системе целиком и что будет под нагрузкой.
В мини-интервью Арсений Лагутин, руководитель обеспечения качества тестирования, рассказал, как в большом e-commerce-продукте подходят к QA:
👉 Проверяете ли вы отдельные сервисы изолированно или чаще тестируете пользовательский путь целиком?
Основной объем нашей системы представляют собой микросервисы. Подход и уровни тестов зависят от задачи, модулей системы, которые она затрагивает или влиянию на пользовательский путь. Новую реализованную фичу в ветке стараемся проверять на изолированном окружении для сохранения гигиены master. Здесь же запускаем изолированные функциональные и интеграционные автотесты. Далее, при необходимости, проводится ручное интеграционное тестирование и Е2Е, а также приемочное на production или stage окружениях.👉 Какие инструменты и подходы используете для автоматизации тестирования?
Тут у нас «сборная солянка». Для автоматизации используем Golang, Python, JS (Detox) и TS (Playwright). Определяем уровни автоматизации под потребности системы и команды, а зону ответственности делим между QA и разработчиком. Автоматизируем в рамках своей предметной области и стараемся запускать прогоны на каждое новое изменение сервиса. Автоматизацией занимается QA в продуктовой команде, а не отдельный департамент. За счет глубокого знания тестируемой области повышаем эффективность автотестов и стараемся привлекать разработку для разбора упавших автотестов в рамках создаваемых ими изменений.👉 Как вы понимаете, что система готова к высоким нагрузкам и «переживёт» сезонный пик?
Ориентируемся на цели бизнеса прежде всего. Основным фактором для нас является ожидаемое число заказов. В компании имеется инструменты для проведения нагрузочного тестирования как на stage, так и на production окружениях изолированно для сервисов и Е2Е (в связке) на отдельных тестовых сущностях. Нагрузочное тестирование проводим на регулярной основе и в рамках валидации крупных изменений. Успехом является соответствие ожидаемой выдерживаемой нагрузки относительно бизнес-целей и реальной, полученной на production-окружении. В случае отклонений анализируем, проводим оптимизации и повторяем, пока всё не будет хорошо работать.👉 Насколько QA вовлечён в продуктовые решения?
QA подключаем к ранним этапам SDLC. Для нас это окончание Discovery, когда продукт сформировал свое видение задачи и оформил по нему ожидания. Из-за отсутствия формализации требований не проводим классического анализа, а вместе с командой разбираемся, как задача должна работать технически, какие есть риски и какой подход выбрать. Так удаётся заранее заметить, где ожидания продукта могут расходиться с техническими ограничениями или логикой системы. В итоге часть ошибок мы ловим ещё до разработки, а значит быстрее и дешевле доводим задачу до релиза.
8 065
🌍Тестировать нельзя надеяться
В Купер.тех много микросервисов, интеграций и сценариев, которые завязаны друг на друга. Поэтому тестирование здесь редко ограничивается проверкой одной фичи: важно понимать, как изменение поведёт себя в системе целиком и что будет под нагрузкой.
В мини-интервью Арсений Лагутин, руководитель обеспечения качества тестирования, рассказал, как в большом e-commerce-продукте подходят к QA:
👉 Проверяете ли вы отдельные сервисы изолированно или чаще тестируете пользовательский путь целиком?
Основной объем нашей системы представляют собой микросервисы. Подход и уровни тестов зависят от задачи, модулей системы, которые она затрагивает или влиянию на пользовательский путь. Новую реализованную фичу в ветке стараемся проверять на изолированном окружении для сохранения гигиены master. Здесь же запускаем изолированные функциональные и интеграционные автотесты. Далее, при необходимости, проводится ручное интеграционное тестирование и Е2Е, а также приемочное на production или stage окружениях.👉👉Какие инструменты и подходы используете для автоматизации тестирования?
Тут у нас «сборная солянка». Для автоматизации используем Golang, Python, JS (Detox) и TS (Playwright). Определяем уровни автоматизации под потребности системы и команды, а зону ответственности делим между QA и разработчиком. Автоматизируем в рамках своей предметной области и стараемся запускать прогоны на каждое новое изменение сервиса. Автоматизацией занимается QA в продуктовой команде, а не отдельный департамент. За счет глубокого знания тестируемой области повышаем эффективность автотестов и стараемся привлекать разработку для разбора упавших автотестов в рамках создаваемых ими изменений.👉👉Как вы понимаете, что система готова к высоким нагрузкам и «переживёт» сезонный пик?
Ориентируемся на цели бизнеса прежде всего. Основным фактором для нас является ожидаемое число заказов. В компании имеется инструменты для проведения нагрузочного тестирования как на stage, так и на production окружениях изолированно для сервисов и Е2Е (в связке) на отдельных тестовых сущностях. Нагрузочное тестирование проводим на регулярной основе и в рамках валидации крупных изменений. Успехом является соответствие ожидаемой выдерживаемой нагрузки относительно бизнес-целей и реальной, полученной на production-окружении. В случае отклонений анализируем, проводим оптимизации и повторяем, пока всё не будет хорошо работать.👉 👉Насколько QA вовлечён в продуктовые решения?
QA подключаем к ранним этапам SDLC. Для нас это окончание Discovery, когда продукт сформировал свое видение задачи и оформил по нему ожидания. Из-за отсутствия формализации требований не проводим классического анализа, а вместе с командой разбираемся, как задача должна работать технически, какие есть риски и какой подход выбрать. Так удаётся заранее заметить, где ожидания продукта могут расходиться с техническими ограничениями или логикой системы. В итоге часть ошибок мы ловим ещё до разработки, а значит быстрее и дешевле доводим задачу до релиза.
8 065
+5
👀 Иногда случайно узнаёшь прошлую специализацию коллеги —
и потом уже невозможно смотреть на него как раньше.
Собрали истории ребят из нашей команды о том, как они меняли профессии, учились с нуля, писали OpenSource-проекты, строили дороги, переводили с японского и в какой-то момент поняли, что хотят заниматься технологиями. Сейчас все они работают в Купер.тех и развивают наши продукты.
🏃Если у вас тоже есть такая история — делитесь в комментариях!
8 065
🪑Садитесь в удобное кресло.
🎧 Надевайте наушники.
☕️ Заваривайте горячий чай 🍫 с чем-нибудь вкусным.
И включайте новый выпуск ProductCamp Podcast с нашим директором по продукту Еленой Тихоновой.
В выпуске обсудили:
🟢какие навыки помогают быть директором по продукту
🟢какие есть мифы о роли CPO
🟢зачем самостоятельным продактам нужен CPO
🟢что нужно, чтобы расти в этой роли
Слушать тут 🏃
Mave
Яндекс.Музыка
Apple Podcast
YouTube Аудио
8 065
+8
👀Когда я работаю, на меня смотрит Меладзе
Если бы офисы изучали как культурный феномен, то основными артефактами были бы не ноутбуки и переговорки, а довольно неожиданные вещи.
Предлагаем погрузиться в атмосферу нашего Московского офиса и оценить, что нашим сотрудникам потребовалось для создания рабочего вайба✨
8 065
🥳 Подводим итоги розыгрыша книги «Эффективный Node.js»
✨Победителем становится @alt_swan✨
Надеемся, что после чтения найдется пара инсайтов, которые будут вам полезны и останутся надолго. Может она и вас вдохновит стать техническим редактором. На счет отправки книги напишем вам в личные сообщения.
И спасибо всем, кто поучаствовал — было приятно видеть вашу активность!
8 065
🔥Как пройти путь от мобильного разработчика до CTO?
Наш CTO Андрей Хышов поделился своим опытом и карьерным треком в новом выпуске подкаста «Быть CTO».
Обсудили:
🟢как быстро адаптироваться в новой роли и разобраться в неизвестном
🟢культуру ownership и то, как она устроена в Купере
🟢как меняется мышление с ростом ответственности
🟢зачем CTO выходить «в поля» и лично развозить заказы
Смотрите выпуск:
YouTube
VK Видео
8 065
🎨🎨🎨🎨🎨🎨
Мы хотим поделиться результатом работы Кати и Ивана с вами и поэтому разыгрываем один экземпляр книги «Эффективный Node.js».
Условия простые:
🟢Проверить подписку на канал
🟢Нажать кнопку «Участвовать»
Победителей определим 23 апреля в 15:00 по московскому времени.
Бот случайным образом выберет победителей, с которыми свяжемся в личных сообщениях в Телеграме. Проверьте настройки конфиденциальности, чтобы мы могли написать вам.
Удачи! ✌️
8 065
+5
🔥 Когда инженеры берутся за технический перевод
Два наших инженера Иван Щyкин и Екатерина Рязанова стали научными редакторами книги по Node.js. О том, с какими сложностями они сталкивались и какие решения находили рассказываем в карточках выше.
8 065
Герой скидок или убийца маржи? Динамическое ценообразование поможет понять 🏃
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
👉 Всё началось вполне невинно. Маркетологи пришли в чат и сказали: «Давайте просто сделаем скидку 20%. Ну что может пойти не так?».
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
👉 Продажи взлетели. Покупатели в восторге, ты герой скидок, а руководитель доволен. Но...
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
👉 О нет! Ты разбудил древнюю хтонь по имени Большая Скидка. И уже не ты не управляешь ценой. Это цена уже давно управляет тобой!
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
🎨🎨🎨🎨🎨
👉 Скидка начала требовать жертв. Жертв в виде маржи.
Много маржи.
А если хотите узнать, что было дальше...
Читайте новую статью на Хабре «Динамическое ценообразование в E-grocery. Раскладываем по полочкам». В ней Лиза Петяева, старший специалист по анализу данных, рассказывает, как мы в Купер.тех пытаемся договориться с этой древней силой: из каких шагов состоит настоящий динцен в E-grocery, почему нельзя просто взять прогноз спроса и «прикрутить» к нему скидку, как правильно работать с эластичностью и при этом не жертвовать маржой.
8 065
👉Доставка полезных материалов для Go-разработчиков!
В Купер.тех мы в основном пишем на Go, и многие инженерные решения так или иначе упираются в производительность, архитектуру и умение работать с нагрузкой. Дмитрий Петухов, инженер команды прайсинга и мотивации курьеров, поделился материалами, которые помогают ему с этим в работе:
🌍Язык, перфоманс и инженерные компромиссы Efficient Go — Бартоломей Платка (соавтор Thanos и контрибьютор Prometheus) Если возникает задача снизить потребление ресурсов и при этом оставаться готовыми к высоким нагрузкам, она может казаться противоречивой. Благодаря прагматичным подходам из книги становится понятно, что это вполне достижимо. Автор поможет сформировать правильное мышление в подходах к оптимизации, залезет под капот Go, расскажет много интересного о процессоре и использовании памяти, а также разберет, как эффективнее всего использовать pprof, и поделится, так ли хорош sync.Pool. 🌍Архитектура Чистая архитектура Golang проекта — Олег Козырев 📱смотреть В гайде автор начинает с простой задачи, реализует её в main-файле, и по мере появления новых требований архитектура сервиса постепенно усложняется. Рассматриваются в том числе такие концепции, как Value Objects, Entity, Aggregate, Anti-Corruption Layer. Осторожно: видео на 3 часа, но, как известно, вечно можно смотреть на огонь, воду и на то, как новые бизнес-требования встраиваются в сервис с неподготовленной к ним архитектурой. Считаю этот ролик отличным стартом для знакомства с DDD. В продолжение гайда, полезно будет почитать книги и материалы по предметно-ориентированному проектированию (DDD), среди них я бы выделил: Learning Domain-Driven Design — Влад Хононов Доступная книга по DDD. Плавный вход в тему: объясняет базовые концепции и, что важно, помогает понять, когда DDD действительно нужен, а когда это избыточно. По сравнению с Эвансом более сжато и четко структурировано. Если не осилили DDD от Эванса, советую начать с нее. Domain-Driven Design — Эрик Эванс Классика, которая не стареет. Если «Learning Domain-Driven Design» от Хононова — это быстрый вход в мир DDD с фокусом на тактические паттерны (сущности, агрегаты, value objects), то «синяя книга» Эванса — про стратегию и мышление. Автор подробно объясняет фундаментальные принципы DDD, подкрепляя их своим опытом применения. Implementing Domain-Driven Design — Вон Вернон Практическое продолжение «синей книги». Фокус на практике применения DDD. Автор детально разбирает агрегаты (их размер, границы, правила проектирования), репозитории, доменные сервисы и, что особенно ценно, показывает, как работать с ограниченными контекстами в реальных системах. Что особенно удобно, книга подходит как справочник, его можно открывать отдельные главы под конкретные задачи (например, агрегаты). Go: идиомы и паттерны проектирования — Джон Боднер Наверное не найти лучше источника, где в одном месте, настолько полно, структурированно, четко и доходчиво разбираются базовые концепции Go. Я бы посоветовал эту книгу тем, кто перешел в Go из других языков.Будем рады, если эти материалы окажутся полезными. А какие книги или доклады по Go и архитектуре помогли именно тебе? Пиши в комментариях!
8 065
😏 Соскучились по офлайну? Встречаемся на DevOpsConf!
2 и 3 апреля приходите послушать доклады наших экспертов и пообщаться после выступлений:
🟢Автоматизируй это немедленно! Инциденты, когда на кону большие деньги. Дарья Попова, руководитель группы мониторинга и Алексей Глотов, руководитель группы разработки.
🟢SLO as a code — нельзя верить людям. Вячеслав Литкович, руководитель группы инженеров ИТ-инфраструктуры.
🟢Воркшоп «Observability: system design». Максим Бурцев, руководитель отдела мониторинга, и Кирилл Гриднев, инженер разработки автоматизаций внутренних процессов, будут консультировать команды и разбирать их решения в составе жюри.
Ставьте 🔥, если идёте на конференцию или будете смотреть её онлайн!
8 065
+5
🤪От трендов к продуктовым идеям
Новые тренды появляются каждый день. Открываешь приложение и думаешь: «о, интересная механика». А через пару дней находишь еще одну в другом сервисе, а потом ещё несколько.
В итоге из большой коллекции «прикольных фич» бывает сложно выделить что-то полезное и приоритетное для продукта.
В карточках наши исследователи Юлия Васильева и Ксения Зимина показывают, как в Купере устроен трендвотчинг сервисов доставки: как мы превращаем поток находок из разных продуктов в системное исследование и источник релевантных идей для приложения.
8 065
Весна, солнце и новые вакансии
С потеплением хочется больше движения и перемен — кажется, весна для этого идеальное время. Поэтому делимся свежим дайджестом вакансий:
🟢 Technical manager / Data Scientist (Middle)
Ищем Data Scientist’а, который поможет нам развивать динамическое ценообразование в Купере. Нужно будет разрабатывать и запускать ML-модели, исследовать данные, находить новые гипотезы и проверять их вместе с командой. Важно уметь быстро прототипировать решения, работать с Python и SQL, делать EDA и понимать, как ML влияет на бизнес-метрики продукта.🟢 Менеджер продукта в команду Мерчантов (Middle)
В команду Мерчантов ищем продуктового менеджера, которому интересно развивать механики каталога — скидки, бейджи, категории, отзывы и другие элементы витрины. Нужно будет искать точки роста, запускать новые фичи вместе с клиентским продуктом и технической командой, а также вести задачи от идеи до релиза и дальнейшего развития. Важен опыт продуктовой работы, data-driven подход и умение вести кросс-командные фичи.🟢 Менеджер продукта в команду Мотивации (Middle)
Если тебе нравится работать с продуктовой стратегией и развитием фич — присоединяйся к команде Мотивации. Здесь предстоит формировать цели и роадмапы, исследовать рынок и пользователей, анализировать данные и запускать продуктовые решения вместе с бэкенд и мобильными командами. Важно уметь работать с аналитикой, писать базовые SQL-запросы и вести продукт от идеи до развития.🟢 UX-исследователь в команду Операции (Middle)
В нашу команду Операций ищем UX-исследователя, который поможет глубже понимать пользователей и приносить продукту полезные инсайты. Нужно будет проводить качественные и количественные исследования, общаться с респондентами, продумывать дизайн исследований и делиться результатами со стейкхолдерами. Важно уметь вовлекать команду в исследования и помогать применять их результаты в продукте.🟢 MLOps-инженер (Senior)
Ищем инженера, который будет развивать ML-платформу Купера: строить систему автоматизации жизненного цикла моделей, внедрять новые технологии в ML-стек и участвовать в проектировании ML-архитектуры. Важно иметь опыт разработки ML-пайплайнов, понимать CI/CD и инфраструктуру данных, работать с Python, SQL, Kafka, Docker и Kubernetes. Будет плюсом опыт с инструментами MLOps-экосистемы и развёртыванием LLM-решений.✨Откликайтесь на нашем сайте, где можно не только узнать больше про вакансии, но и найти полезные материалы для подготовки к интервью!
8 065
👉 Разделяй и властвуй. Но аккуратно
Продолжаем рассказывать про микросервисную трансформацию!
В Купере вынос функциональности оказался не только технической задачей, но и культурной. Когда за одной бизнес-фичей стоят несколько команд, старый стек не совпадает с новым, а каждая секунда влияет на деньги — этот процесс превращается в материал для отдельной статьи.
Во второй части цикла Фёдор Засечкин, руководитель группы разработки операционной платформы, поделился, что происходит после решения «выносим в сервис»: как не собрать распределённый монолит 2.0, зачем пересматривать ответственность команд и почему иногда сложнее договориться, чем переписать код.
🏃 Часть 2 — уже на Хабре.
8 065
🌍 Kafka и искусство отпускать прошлое
Мы часто рассчитываем, что Kafka «как-нибудь сама разберётся» с хранением данных, а потом внезапно обнаруживаем, что она разобралась, но не совсем так, как мы планировали.
В этом лонгриде Павел Иванов, администратор баз данных, разбирает, как Kafka на самом деле решает, что хранить, что сжимать, а что удалять, и почему политики очистки часто ведут себя не так, как мы ожидаем, когда просто ставим retention и идём дальше писать код.
🏃 Зачем это нужно?
Без понимания очистки люди начинают: хранить лишнее в базе, угрожать жизни брокеров или делать сложную логику на стороне consumer.
🏃 Читайте и наводите порядок в своих данных
