В статье поделимся опытом создания и развития команды аналитики «Магнит Маркета», которая становится не только двигателем бизнеса, но и источником новых идей и проектов.
LLM и 1С: изучаем сервисы для автоматизации написания кода 1С
Мы решили пощупать рынок LLM в контексте 1С-разработки. Рассказываем, какие есть инструменты, как их можно использовать и к каким выводам мы пришли.
Разработка системы отчётности и BI: вопросы производительности
Мы в компании «Магнит» много лет строим и эксплуатируем корпоративное хранилище данных и занимаемся различными задачами, связанными с этим. В частности, разрабатываем инструмент для конечного пользователя — систему отчётности и BI.
В статье рассмотрим вопросы оптимизации производительности системы.
Безопасность на новом уровне: исследование Smallstep CA и его применение
Рассмотрим Smallstep CA — современное и инновационное решение для управления сертификатами. Оно может предложить несколько преимуществ по сравнению с OpenSSL.
Рецепты «приготовления» Hibernate, или решаем 5 проблем работы с фреймворком
Hibernate — очень мощный и функциональный ORM (Object-Relational Mapping) фреймворк. Он связывает базы данных с помощью объектно-ориентированных языков программирования. Однако многие, начиная с ним работать, натыкаются на проблемы производительности или отсутствия нужной функциональности. Многие из этих проблем появляются просто из-за того, что разработчики не умеют его «готовить».
В статье делимся рецептами работы с Hibernate и Spring Data JPA: они помогут решить многие проблемы, возникающими при использовании фреймворка.
Создаем свой диалект змеиного, или DSL на Python
Допустим, у нас есть некоторое исполнительное ядро и множество пользователей, владеющих Python на уровне «изучи его полностью за неделю», которые хотят решать задачи своей предметной области, с минимальными усилиями используя сервисы ядра. Мы, как разработчики ядра, хотим, с одной стороны, спрятать всё «грязное белье» за неким интерфейсом, с другой максимально упростить взаимодействие пользователей с ядром.
Как один из вариантов решения предлагаю посмотреть создание своего диалекта Python-скриптов, предназначенного для конкретной предметной области. Этакий DSL «для бедных», с синтаксисом Python, но со средой выполнения, заточенной под выполняемые задачи.
Как мы тестировали большие языковые модели для модерации отзывов
В приложении «Магнит: акции и доставка» можно оставлять отзывы на товары. Отзывы модерируются: мы публикуем те, которые считаем полезными для других покупателей, — они должны описывать потребительские свойства товара. Отклоняем все остальные: как правило, это жалобы на ценники, сервис в магазине, условия хранения либо просто нерелевантные тексты. Отзывы с жалобами обрабатывают службы поддержки и сервиса.
Рассказываем о том, как мы попробовали применять большие языковые модели, чтобы автоматизировать модерацию отзывов.
Как дисциплина управления мастер-данными влияет на продажи
Иногда это целая проблема — найти товар с редкими свойствами. Информация о товаре должна быть доступна для поиска, но в лучшем случае особые характеристики указываются в текстовом описании. Даже если для интересующего свойства сделали отдельное поле, то его заполняют левой задней пяткой без гарантий достоверности. В результате покупатель может плюнуть и уйти из магазина, так и не найдя то, что искал. А секрет прост: чтобы все получилось, нужно правильно приготовить мастер-данные.
Рассказываем, чем грамотно построенные процессы управления мастер-данными могут помочь продажам.
Кодогенерация токенов дизайн-системы для Android по Figma API
По мере развития проекта в целом и дизайн-системы в частности дизайн-токенов становится очень много. Для примера, у нас уже около четырёхсот иконок, больше двухсот цветов и перспектива внедрения нескольких тем в приложении. Что ещё, если не автоматизация, позволит держать в консистентности всю эту систему?
Рассказываю про наш тернистый путь к собственному генератору токенов дизайн-системы.
Что такое бизнес-требования и как с ними (не) бороться
Самые первые бизнес-требования были оставлены нашими предками в виде наскальной живописи, некоторые из которых добрались и до наших дней.
О том, как поменять подходы к написанию и пониманию бизнес-требований, чтобы результат от их реализации не был первобытным, расскажем в статье.
Наш путь в создании информационной системы проверок контрагентов || Laravel having no problems
Проверка потенциальных контрагентов на благонадёжность — неотъемлемая часть ведения бизнеса. Она нужна, чтобы эффективно управлять рисками, соблюдать должную осмотрительность, исключить репутационные риски и финансовые потери.
Мы создали систему, которая позволила оптимизировать работу по проверке контрагентов из открытых источников. Рассказываем, как она устроена.
Автоматическое обновление зависимостей в GitLab-проектах с помощью Renovate
Автоматическое обновление зависимостей становится все более важным аспектом в процессах непрерывной интеграции и непрерывной доставки (CI/CD) в сфере разработки программного обеспечения. В статье описана настройка автоматического обновления зависимостей в GitLab-проектах с помощью Renovate.
Путь исследователя цифровых продуктов в «Магните»: проблемы и решения
«Магнит» — это не только продукты съедобные, но и продукты цифровые: мобильные приложения, веб-сервисы. Команда пользовательского опыта старается делать их лучше: для этого есть исследователи, которые проводят исследования внутренних (для сотрудников) и внешних (для клиентов) продуктов, и CJE — эксперты по клиентскому опыту, которые строят карты клиентских путей на основе данных исследований и обратной связи.
Наша работа — находить и помогать решать проблемы пользователей. Но мы сами, в свою очередь, сталкиваемся с проблемами при выполнении этой задачи. Об этих проблемах и о том, как мы их решаем, расскажем в статье.
Эволюция BP-сервиса компании Магнит
Как на сервисе весом в 10 ТБайт ежедневно обрабатывать 1 Тбайт пользовательских данных и спать спокойно.
В статье описана эволюция системы управления процессами в компании «Магнит». Некоторые детали были упрощены для лаконичности и последовательности повествования, некоторые были изменены по соображениям безопасности. В любом случае, целью статьи является с одной стороны желание поделиться с сообществом техническим опытом, с другой — оставить ретроспективный взгляд на историю компании.
Как мы выстроили эффективный онбординг для команды системных аналитиков, чтобы вырасти в 10 раз
Пару лет назад в отделе, ответственном за развитие корпоративного хранилища данных «Магнита», работало 5 системных аналитиков: они полностью закрывали весь набор задач, которые перед ними стояли. Но в 2021 году случился резкий рост: данные стали использоваться не несколькими департаментами, как было до, а сразу всей компанией — для масштабных проектов.
Рассказываю, как мы перестроили процессы онбординга для команды, выросшей в 10 раз.
Как мы описываем требования к REST API для бэкенда в Confluence
У нас в команде два системных аналитика с разным бэкграундом и изначально разными подходами к оформлению требований, в том числе к API. Вначале каждый из нас писал требования по-своему, с разным уровнем проработки и детализации. Но быстро стало понятно, что так дальше не пойдет: это приводило к разночтению требований разработчиками и тормозило реализацию. Поэтому мы в команде решили унифицировать формат описания требований к API.
В статье расскажу, к какому формату описания в итоге мы пришли, и покажу заполнение шаблона на конкретных примерах.
Настройка алертингов из Opensearch в Telegram
В «Магните» только по 1С-системам суточный объем логов переваливает за 100 Гб. Их нужно обрабатывать, использовать, выделять ценные данные. Конечно, мы пользуемся Discover и различными дашбордами и визуализациями. Но иногда необходима оперативность. Тогда пригождается система алертингов: она позволяет создавать оповещения и уведомлять пользователей о различных событиях или изменениях в данных.
В рунете не так много материалов по настройке алертингов, поэтому мы решили поделиться своим мануалом в надежде, что это поможет кому-то сберечь драгоценное время. В статье познакомимся с основами работы с алертингами в OpenSearch и настроим один способ доставки оповещений — в Telegram.
Автоматическая генерация CI/CD пайплайна для развёртывания инфраструктуры
При нашей работе мы используем подход «Инфраструктура как код». Однако в процессе его использования мы столкнулись с проблемой написания пайплайнов для инфраструктуры.
Во всём «виноват» terragrunt: каждому модулю terragrunt нужна отдельная джоба в пайплайне на plan и apply, но для каждого модуля они во многом повторяют друг друга. Подобное постоянное написание одинаковых частей CI/CD пайплайна при добавлении новых баз и бакетов навевало тоску.
Рассказываем, как мы создали генератор джоб в Gitlab CI/CD и навсегда забыли о ручном написании пайплайнов для развёртывания элементов инфраструктуры.
От ручной сборки приложений к конвейеру: опыт бэк-офиса «Магнита»
Как мы ежа и ужа собирали. Сказ об автосборке разномастных технологий под одну крышу.
Если серьёзно: у нас было много разнообразной ручной работы на пути от разработчика до релиза приложения для сети магазинов.
Мы научились хранить наши приложения в git и собирать их «одним кликом», перешли от подхода «один репозиторий – одна технология» к «один репозиторий – одно приложение». Реализовали установку всех частей приложения «одной командой»; собрали грабли, разложенные в самых неожиданных местах, и создали несколько инструментов, помогающих на разных этапах сборки и установки приложений.
В этой статье рассказываю, с чего мы начали, где находимся сейчас и что было на этом пути.
Объектно-ориентированный подход к созданию REST-клиентов, или возможна ли жизнь без Open API
Как-то в общении с моим другом-разработчиком из одной крупной софтверной компании у нас зашёл разговор о взаимодействии распределённых команд. В его компании было множество достаточно изолированных команд, каждая из которых разрабатывала свой сервис. В ответ на мой вопрос, как команды расшаривают API, я получил ожидаемый ответ: Open API. Open API, безусловно, прекрасный инструмент, но у него есть ряд недостатков.
Меня зовут Андрей Зяблин, я главный разработчик в «Магните». Расскажу о том, как распространять API нативным для Java способом и пользоваться им в объектно-ориентированном стиле без использования генераторов кода.