fa
Feedback
Купер.тех

Купер.тех

رفتن به کانال در 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 روز
آرشیو پست ها
🎉 Хабру исполняется 20 лет! А значит, самое время вспомнить, как всё начиналось! Собрали ретро-карточки, в которых вспоминае
+5
🎉 Хабру исполняется 20 лет! А значит, самое время вспомнить, как всё начиналось! Собрали ретро-карточки, в которых вспоминаем ранний Хабр и рассказываем, когда там появился Купер.тех. И раз уж сегодня говорим про Хабр, есть ещё один приятный повод. Сразу три наших статьи попали в шорт-лист премии «Технотекст»: «Как запускать проекты без команды? Главное о кросс-командном проджект-менеджменте» — Марина Гончарова ✨«LLM‑разметка в поиске: от эксперимента к инструменту» — Александр Баранов ✨«Три мушкетера из мира DevSecOps. Внедряем инструменты для развития AppSec-процессов» — Максим Коровенков Гордимся ребятами! ❤️

⚡️Новосибирск, мы едем! 30–31 мая будем со стендом на конференции CodeFest, где можно будет пообщаться с нашими экспертами, з
⚡️Новосибирск, мы едем! 30–31 мая будем со стендом на конференции CodeFest, где можно будет пообщаться с нашими экспертами, задать вопросы, поучаствовать в активностях и просто провести время по-соседски, как мы любим. Если планируете быть на CodeFest, заглядывайте к нам. Будем рады познакомиться или увидеться снова.❤️

🌍Тестировать нельзя надеяться В Купер.тех много микросервисов, интеграций и сценариев, которые завязаны друг на друга. Поэто
🌍Тестировать нельзя надеяться В Купер.тех много микросервисов, интеграций и сценариев, которые завязаны друг на друга. Поэтому тестирование здесь редко ограничивается проверкой одной фичи: важно понимать, как изменение поведёт себя в системе целиком и что будет под нагрузкой. В мини-интервью Арсений Лагутин, руководитель обеспечения качества тестирования, рассказал, как в большом e-commerce-продукте подходят к QA: 👉 Проверяете ли вы отдельные сервисы изолированно или чаще тестируете пользовательский путь целиком?
Основной объем нашей системы представляют собой микросервисы. Подход и уровни тестов зависят от задачи, модулей системы, которые она затрагивает или влиянию на пользовательский путь. Новую реализованную фичу в ветке стараемся проверять на изолированном окружении для сохранения гигиены master. Здесь же запускаем изолированные функциональные и интеграционные автотесты. Далее, при необходимости, проводится ручное интеграционное тестирование и Е2Е, а также приемочное на production или stage окружениях.
👉 Какие инструменты и подходы используете для автоматизации тестирования?
Тут у нас «сборная солянка». Для автоматизации используем Golang, Python, JS (Detox) и TS (Playwright). Определяем уровни автоматизации под потребности системы и команды, а зону ответственности делим между QA и разработчиком. Автоматизируем в рамках своей предметной области и стараемся запускать прогоны на каждое новое изменение сервиса. Автоматизацией занимается QA в продуктовой команде, а не отдельный департамент. За счет глубокого знания тестируемой области повышаем эффективность автотестов и стараемся привлекать разработку для разбора упавших автотестов в рамках создаваемых ими изменений.
👉 Как вы понимаете, что система готова к высоким нагрузкам и «переживёт» сезонный пик?
Ориентируемся на цели бизнеса прежде всего. Основным фактором для нас является ожидаемое число заказов. В компании имеется инструменты для проведения нагрузочного тестирования как на stage, так и на production окружениях изолированно для сервисов и Е2Е (в связке) на отдельных тестовых сущностях. Нагрузочное тестирование проводим на регулярной основе и в рамках валидации крупных изменений. Успехом является соответствие ожидаемой выдерживаемой нагрузки относительно бизнес-целей и реальной, полученной на production-окружении. В случае отклонений анализируем, проводим оптимизации и повторяем, пока всё не будет хорошо работать.
👉 Насколько QA вовлечён в продуктовые решения?
QA подключаем к ранним этапам SDLC. Для нас это окончание Discovery, когда продукт сформировал свое видение задачи и оформил по нему ожидания. Из-за отсутствия формализации требований не проводим классического анализа, а вместе с командой разбираемся, как задача должна работать технически, какие есть риски и какой подход выбрать. Так удаётся заранее заметить, где ожидания продукта могут расходиться с техническими ограничениями или логикой системы. В итоге часть ошибок мы ловим ещё до разработки, а значит быстрее и дешевле доводим задачу до релиза.

🌍Тестировать нельзя надеяться В Купер.тех много микросервисов, интеграций и сценариев, которые завязаны друг на друга. Поэто
🌍Тестировать нельзя надеяться В Купер.тех много микросервисов, интеграций и сценариев, которые завязаны друг на друга. Поэтому тестирование здесь редко ограничивается проверкой одной фичи: важно понимать, как изменение поведёт себя в системе целиком и что будет под нагрузкой. В мини-интервью Арсений Лагутин, руководитель обеспечения качества тестирования, рассказал, как в большом e-commerce-продукте подходят к QA: 👉 Проверяете ли вы отдельные сервисы изолированно или чаще тестируете пользовательский путь целиком?
Основной объем нашей системы представляют собой микросервисы. Подход и уровни тестов зависят от задачи, модулей системы, которые она затрагивает или влиянию на пользовательский путь. Новую реализованную фичу в ветке стараемся проверять на изолированном окружении для сохранения гигиены master. Здесь же запускаем изолированные функциональные и интеграционные автотесты. Далее, при необходимости, проводится ручное интеграционное тестирование и Е2Е, а также приемочное на production или stage окружениях.
👉👉Какие инструменты и подходы используете для автоматизации тестирования?
Тут у нас «сборная солянка». Для автоматизации используем Golang, Python, JS (Detox) и TS (Playwright). Определяем уровни автоматизации под потребности системы и команды, а зону ответственности делим между QA и разработчиком. Автоматизируем в рамках своей предметной области и стараемся запускать прогоны на каждое новое изменение сервиса. Автоматизацией занимается QA в продуктовой команде, а не отдельный департамент. За счет глубокого знания тестируемой области повышаем эффективность автотестов и стараемся привлекать разработку для разбора упавших автотестов в рамках создаваемых ими изменений.
👉👉Как вы понимаете, что система готова к высоким нагрузкам и «переживёт» сезонный пик?
Ориентируемся на цели бизнеса прежде всего. Основным фактором для нас является ожидаемое число заказов. В компании имеется инструменты для проведения нагрузочного тестирования как на stage, так и на production окружениях изолированно для сервисов и Е2Е (в связке) на отдельных тестовых сущностях. Нагрузочное тестирование проводим на регулярной основе и в рамках валидации крупных изменений. Успехом является соответствие ожидаемой выдерживаемой нагрузки относительно бизнес-целей и реальной, полученной на production-окружении. В случае отклонений анализируем, проводим оптимизации и повторяем, пока всё не будет хорошо работать.
👉 👉Насколько QA вовлечён в продуктовые решения?
QA подключаем к ранним этапам SDLC. Для нас это окончание Discovery, когда продукт сформировал свое видение задачи и оформил по нему ожидания. Из-за отсутствия формализации требований не проводим классического анализа, а вместе с командой разбираемся, как задача должна работать технически, какие есть риски и какой подход выбрать. Так удаётся заранее заметить, где ожидания продукта могут расходиться с техническими ограничениями или логикой системы. В итоге часть ошибок мы ловим ещё до разработки, а значит быстрее и дешевле доводим задачу до релиза.

photo content

👀 Иногда случайно узнаёшь прошлую специализацию коллеги — и потом уже невозможно смотреть на него как раньше. Собрали истори
+5
👀 Иногда случайно узнаёшь прошлую специализацию коллеги — и потом уже невозможно смотреть на него как раньше. Собрали истории ребят из нашей команды о том, как они меняли профессии, учились с нуля, писали OpenSource-проекты, строили дороги, переводили с японского и в какой-то момент поняли, что хотят заниматься технологиями. Сейчас все они работают в Купер.тех и развивают наши продукты. 🏃Если у вас тоже есть такая история — делитесь в комментариях!

🪑Садитесь в удобное кресло. 🎧 Надевайте наушники. ☕️ Заваривайте горячий чай 🍫 с чем-нибудь вкусным. И включайте новый вып
🪑Садитесь в удобное кресло. 🎧 Надевайте наушники. ☕️ Заваривайте горячий чай 🍫 с чем-нибудь вкусным. И включайте новый выпуск ProductCamp Podcast с нашим директором по продукту Еленой Тихоновой. В выпуске обсудили: 🟢какие навыки помогают быть директором по продукту 🟢какие есть мифы о роли CPO 🟢зачем самостоятельным продактам нужен CPO 🟢что нужно, чтобы расти в этой роли Слушать тут 🏃 Mave Яндекс.Музыка Apple Podcast YouTube Аудио

👀Когда я работаю, на меня смотрит Меладзе Если бы офисы изучали как культурный феномен, то основными артефактами были бы не
+8
👀Когда я работаю, на меня смотрит Меладзе Если бы офисы изучали как культурный феномен, то основными артефактами были бы не ноутбуки и переговорки, а довольно неожиданные вещи. Предлагаем погрузиться в атмосферу нашего Московского офиса и оценить, что нашим сотрудникам потребовалось для создания рабочего вайба✨

🥳 Подводим итоги розыгрыша книги «Эффективный Node.js» ✨Победителем становится @alt_swan✨ Надеемся, что после чтения найдетс
🥳 Подводим итоги розыгрыша книги «Эффективный Node.js» ✨Победителем становится @alt_swan✨ Надеемся, что после чтения найдется пара инсайтов, которые будут вам полезны и останутся надолго. Может она и вас вдохновит стать техническим редактором. На счет отправки книги напишем вам в личные сообщения.  И спасибо всем, кто поучаствовал — было приятно видеть вашу активность!

🔥Как пройти путь от мобильного разработчика до CTO? Наш CTO Андрей Хышов поделился своим опытом и карьерным треком в новом в
🔥Как пройти путь от мобильного разработчика до CTO? Наш CTO Андрей Хышов поделился своим опытом и карьерным треком в новом выпуске подкаста «Быть CTO». Обсудили: 🟢как быстро адаптироваться в новой роли и разобраться в неизвестном 🟢культуру ownership и то, как она устроена в Купере 🟢как меняется мышление с ростом ответственности 🟢зачем CTO выходить «в поля» и лично развозить заказы Смотрите выпуск: YouTube VK Видео

🎨🎨🎨🎨🎨🎨 Мы хотим поделиться результатом работы Кати и Ивана с вами и поэтому разыгрываем один экземпляр книги «Эффективный Node.js». Условия простые: 🟢Проверить подписку на канал 🟢Нажать кнопку «Участвовать» Победителей определим 23 апреля в 15:00 по московскому времени. Бот случайным образом выберет победителей, с которыми свяжемся в личных сообщениях в Телеграме. Проверьте настройки конфиденциальности, чтобы мы могли написать вам. Удачи! ✌️

🔥 Когда инженеры берутся за технический перевод Два наших инженера Иван Щyкин и Екатерина Рязанова стали научными редакторам
+5
🔥 Когда инженеры берутся за технический перевод Два наших инженера Иван Щyкин и Екатерина Рязанова стали научными редакторами книги по Node.js. О том, с какими сложностями они сталкивались и какие решения находили рассказываем в карточках выше.

Герой скидок или убийца маржи? Динамическое ценообразование поможет понять 🏃 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 👉 Всё началось вполне невинно. Маркетологи пришли в чат и сказали: «Давайте просто сделаем скидку 20%. Ну что может пойти не так?». 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 👉 Продажи взлетели. Покупатели в восторге, ты герой скидок, а руководитель доволен. Но... 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 👉 О нет! Ты разбудил древнюю хтонь по имени Большая Скидка. И уже не ты не управляешь ценой. Это цена уже давно управляет тобой! 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 🎨🎨🎨🎨🎨 👉 Скидка начала требовать жертв. Жертв в виде маржи. Много маржи. А если хотите узнать, что было дальше... Читайте новую статью на Хабре «Динамическое ценообразование в E-grocery. Раскладываем по полочкам». В ней Лиза Петяева, старший специалист по анализу данных, рассказывает, как мы в Купер.тех пытаемся договориться с этой древней силой: из каких шагов состоит настоящий динцен в E-grocery, почему нельзя просто взять прогноз спроса и «прикрутить» к нему скидку, как правильно работать с эластичностью и при этом не жертвовать маржой.

photo content

👉Доставка полезных материалов для Go-разработчиков! В Купер.тех мы в основном пишем на Go, и многие инженерные решения так и
👉Доставка полезных материалов для 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 и архитектуре помогли именно тебе? Пиши в комментариях!

😏 Соскучились по офлайну? Встречаемся на DevOpsConf! 2 и 3 апреля приходите послушать доклады наших экспертов и пообщаться п
😏 Соскучились по офлайну? Встречаемся на DevOpsConf! 2 и 3 апреля приходите послушать доклады наших экспертов и пообщаться после выступлений: 🟢Автоматизируй это немедленно! Инциденты, когда на кону большие деньги. Дарья Попова, руководитель группы мониторинга и Алексей Глотов, руководитель группы разработки. 🟢SLO as a code — нельзя верить людям. Вячеслав Литкович, руководитель группы инженеров ИТ-инфраструктуры. 🟢Воркшоп «Observability: system design». Максим Бурцев, руководитель отдела мониторинга, и Кирилл Гриднев, инженер разработки автоматизаций внутренних процессов, будут консультировать команды и разбирать их решения в составе жюри. Ставьте 🔥, если идёте на конференцию или будете смотреть её онлайн!

🤪От трендов к продуктовым идеям Новые тренды появляются каждый день. Открываешь приложение и думаешь: «о, интересная механик
+5
🤪От трендов к продуктовым идеям Новые тренды появляются каждый день. Открываешь приложение и думаешь: «о, интересная механика». А через пару дней находишь еще одну в другом сервисе, а потом ещё несколько. В итоге из большой коллекции «прикольных фич» бывает сложно выделить что-то полезное и приоритетное для продукта. В карточках наши исследователи Юлия Васильева и Ксения Зимина показывают, как в Купере устроен трендвотчинг сервисов доставки: как мы превращаем поток находок из разных продуктов в системное исследование и источник релевантных идей для приложения.

Весна, солнце и новые вакансии С потеплением хочется больше движения и перемен — кажется, весна для этого идеальное время. По
Весна, солнце и новые вакансии С потеплением хочется больше движения и перемен — кажется, весна для этого идеальное время. Поэтому делимся свежим дайджестом вакансий: 🟢 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-решений.
Откликайтесь на нашем сайте, где можно не только узнать больше про вакансии, но и найти полезные материалы для подготовки к интервью!

👉 Разделяй и властвуй. Но аккуратно Продолжаем рассказывать про микросервисную трансформацию! В Купере вынос функциональност
👉 Разделяй и властвуй. Но аккуратно Продолжаем рассказывать про микросервисную трансформацию! В Купере вынос функциональности оказался не только технической задачей, но и культурной. Когда за одной бизнес-фичей стоят несколько команд, старый стек не совпадает с новым, а каждая секунда влияет на деньги — этот процесс превращается в материал для отдельной статьи. Во второй части цикла Фёдор Засечкин, руководитель группы разработки операционной платформы, поделился, что происходит после решения «выносим в сервис»: как не собрать распределённый монолит 2.0, зачем пересматривать ответственность команд и почему иногда сложнее договориться, чем переписать код. 🏃 Часть 2 — уже на Хабре.

🌍 Kafka и искусство отпускать прошлое Мы часто рассчитываем, что Kafka «как-нибудь сама разберётся» с хранением данных, а по
🌍 Kafka и искусство отпускать прошлое Мы часто рассчитываем, что Kafka «как-нибудь сама разберётся» с хранением данных, а потом внезапно обнаруживаем, что она разобралась, но не совсем так, как мы планировали. В этом лонгриде Павел Иванов, администратор баз данных, разбирает, как Kafka на самом деле решает, что хранить, что сжимать, а что удалять, и почему политики очистки часто ведут себя не так, как мы ожидаем, когда просто ставим retention и идём дальше писать код. 🏃 Зачем это нужно? Без понимания очистки люди начинают: хранить лишнее в базе, угрожать жизни брокеров или делать сложную логику на стороне consumer. 🏃 Читайте и наводите порядок в своих данных