Меня зовут Илья Куликов, я руковожу разработкой веб-терминалов в компании «Столото». Сегодня хочу рассказать, как мы превратили ручные релизы и вечные конфликты в почти автономный CI/CD. За почти 10 лет в компании я прошёл путь от бэкенд-разработчика до руководителя направления, в «Столото» же за это время родился и вырос целый продукт — веб-терминал для агентов розничной сети. Изначально у нас был парк дорогих аппаратных терминалов, установленных у агентов. Но как расширить сеть и снизить входной порог? Возникла идея: а что, если сделать аналогичное приложение в браузере? Тогда любой желающий мог бы стать агентом — достаточно старого ноутбука и договора с нами. Так появился полноценный веб-аналог аппаратного терминала со всеми необходимыми функциями для продажи лотерей.
Но вместе с ростом продукта росла и боль: релизы занимали часы, всё постоянно ломалось на проде, а после каждого деплоя команда судорожно грепала логи в поисках причины падения. Мы поняли: без серьёзной перестройки процессов дальше — только хуже. И тогда решили кардинально пересмотреть наш подход к CI/CD. Отказались от классического GitFlow в пользу trunk-based development, полностью перестроили пайплайны в GitLab и внедрили автоматизацию на всех этапах — от сборки и тестирования до деплоя и мониторинга.
В этой статье я делюсь реальным опытом:
- как мы ушли от ручных релизов к автоматическому деплою в прод;
- какие практики и инструменты позволили нам перестать бояться каждого коммита;
- как повысить качество кода и ускорить вывод фич на рынок без ущерба для стабильности.
Этот материал будет особенно полезен техлидам, инженерам DevOps, разработчикам и командам, которые всё ещё живут в мире ручных деплоев, боятся нажимать «мердж» в пятницу вечером. Если вы задумываетесь, как перейти от хаоса к предсказуемости в релизах — вы по адресу.
А как мы этого добились — читайте под катом!
Читать далееПривет! Меня зовут Марина Павлова, я технический писатель в отделе документации 1С-Битрикс. В этой статье я расскажу, как мы полностью переделали документацию по Bitrix Framework и как команде из двух человек удалось выпустить доку за 9 месяцев с помощью ИИ.
Читать далееЗабудьте о ручном склеивании строк: с pathlib пути элегантно конструируются с помощью оператора /. Проверка существования, чтение, получение родительской директории — всё это становится методами и атрибутами самого объекта. В результате код получается не просто чище и читабельнее, он становится более надежным и по-настоящему "питоничным" (Pythonic).
Читать далееС 1 октября у нас проходит открытое бета-тестирование нативного КОМПАС-3D для ОС на ядре Linux. Мы подумали, а что если провести здесь обзорную экскурсию для нового пользователя ОС Linux, который не имеет отношения к IT-сопровождению и не должен заниматься администрированием систем? Такой сотрудник работает, используя не операционную систему, а доступные в ней программы и инструменты. Цель этой статьи — показать эти инструменты.
Читать далееПривет! Я Никита Хромушкин, технический руководитель кластера в Авито, и я буду сейчас отговаривать вас становиться тимлидами.
Звучит провокационно? Так и задумано. Я хочу честно рассказать о роли лидера, а не рисовать радужную картинку. Многие разработчики видят в позиции тимлида единственный путь роста, но это опасное заблуждение, которое может привести к выгоранию и разочарованию.
Давайте сразу расставим точки над i: универсального рецепта «тимлидства» не существует. В одной компании тимлид — это человек, который 80% времени пишет код, а в другой — полностью погружен в процессы и менеджмент. В Райффайзене, например, техлид мог руководить несколькими командами и заниматься people-менеджментом. В Qiwi была своя специфика. Я буду рассказывать в основном про то, как это устроено в Авито, т.к. многие боли универсальны.
Читать далееВы уже научились отслеживать среднюю скорость запросов на проекте, и это большой шаг. Без преувеличений и какой либо иронии.
И теперь, когда вы перешли от "не измеряем ничего" до "измеряем среднее" — вы попали в ловушку.
Пока вы с удовольствием наблюдаете в отчетах красивые 200ms — ваши пользователи стучат в службу поддержки со словами "у меня все висит".
И они не врут, у них действительно TTF порядка 6 секунд. Но и вы не врете, у вас действительно 200ms в отчете!
Врет метрика, а вы ей верите.
Давайте разбираться.
Читать далееЗа последние годы рынок IT сильно изменился. Сейчас найм Junior-разработчиков стал гораздо выгоднее для компаний: конкуренция среди молодых специалистов выросла, а текучка кадров снизилась. Разберём, почему именно сейчас лучшее время инвестировать в молодых разработчиков.
Читать далееЯ работаю в компании, которая занимается тестированием ПО, и одним из наших предложений для клиентов является внедрение автоматизированного тестирования как одного из самых эффективных способов ускорить выпуск релизов без ущерба для качества.
Сегодня доступно множество инструментов: Selenium, Playwright, Cypress и другие. Каждый имеет свои преимущества. Но в подавляющем большинстве наших проектов мы используем Selenium. Расскажу, почему мы сделали такой выбор.
Цель автоматизации — экономия
Главная задача автоматизации — снизить ручную нагрузку и минимизировать человеческий фактор. Рассмотрим на примере интернет-магазина. Если компания выпускает по 5 версий в месяц, перед каждым релизом необходимо проверять ключевые сценарии: добавление товара в корзину, оформление заказа, оплату. Регулярные ручные проверки требуют времени, увеличивают затраты и подвержены ошибкам.
Автотесты выполняют эти проверки быстрее и точнее. С экономической точки зрения, однократные инвестиции в разработку автотестов, как правило, окупаются за счет экономии на многократных ручных проверках.
Однако окупаемость инвестиций напрямую зависит от стабильности продукта и частоты тестирования. Если функциональность, покрытая автотестами, часто меняется, затраты на их поддержку могут превысить выгоду.
Точно так же автоматизация может окупаться долго, если релизы выходят редко или регрессионное тестирование проводится с большими интервалами.
Требования клиентов и гибкость технологий
Как IT-компания, мы сталкиваемся с разными требованиями заказчиков. Клиенты часто просят использовать определенный язык программирования, чтобы их команды могли поддерживать тесты. Например, если бекэнд написан на C#, то и автотесты предпочтительнее на нем.
Читать далееЧто важно фронтенд-разработчику при создании веб-приложений? Поддержка текущей кодовой базы, удобство внедрения новых фич и возможность повторно использовать компоненты. Создать такие условия помогает популярный подход к проектированию — FSD (Feature Sliced Design). Разбиваем интерфейс на независимые, переиспользуемые модули (виджеты, фичи и т. д.), получаем чёткие правила, единую структуру проекта и ускорение разработки за счёт переиспользования кода и изоляции ответственности.
Подход FSD во многом прекрасен, но всё же нам в нём не хватало некоторых важных аспектов: внятного разделения слоёв бизнес-логики, удобства работы с кастомными хуками (они быстро разрастаются, обрастают связями и становятся сложными для тестирования). Также было неясно, куда выносить сложные общие компоненты из разных частей проекта. И, например, как легко отделять один бизнес-модуль от другого, не ломая всю систему…
Меня зовут Иван Соснович, я тимлид фронтенд-разработки в СберТехе, тружусь в команде Platform V Kintsugi — это графический инструмент для сопровождения, мониторинга и диагностики Postgres-like СУБД. В этой статье я покажу, как мы доработали FSD под себя, и дам ссылку на пример со структурой приложения. Надеюсь, будет полезно фронтенд-разработчикам.
Читать далееУголовка руководителя за предоставленный сотрудником логин и пароль
Что учесть работодателю и сотрудникам компании?
Заместитель начальника ОАО «Р» Г. осужден по ч. 3 ст. 272 УК РФ – неправомерный доступ к компьютерной информации, повлекший ее копирование, совершенный с использованием своего служебного положения.
Читать далееНовость о том, что Qualcomm покупает Arduino сначала вызвала чувство тревоги. Примерно такое же, как когда Broadcom купил VMware. С чудесным миром микроконтроллеров я тесно познакомился именно благодаря Arduino. Оригинальная Uno базировалась на ATmega328P и стоила на момент выхода 30 $. Реальная себестоимость, по оценкам коммьюнити, была около 15 $, а все остальное пользователь платил за бренд и открытость дизайна.
Последнее, кстати, привело к тому, что спустя короткое время плата была скопирована китайцами. Они не просто нашли способ заменить дорогие компоненты более дешевыми аналогами, но и наладили крупносерийное производство. Это привело к тому, что купить ноунейм-клон аля Nduino Uno можно было на порядок дешевле.
Совсем недавно публике представили новую плату Arduino Uno Q, которая уже была создана с использованием разработок Qualcomm. Она мгновенно вызвала интерес, благодаря новому видению того, как должна выглядеть современная плата микроконтроллера. Мне уже удалось добраться до серийного образца Uno Q, так что спешу поделиться с вами впечатлениями!
Читать далееТревожная тенденция, о которой заговорил даже Дуров. О том, как работает цензура на Западе, В Китае и США, не касаясь России.
Читать далееСегодня мы разберемся, как создать легковесную утилиту, которая решает эту проблему элегантным и, что самое главное, безопасным с точки зрения античитов способом.
Читать далееПривет, Хабр!
Сегодня рассмотрим, как в .NET можно горячо подгружать, обновлять и выгружать сборки на лету. Речь пойдёт о AssemblyLoadContext, специальном механизме, благодаря которому мы можем создавать плагинные системы, изолировать зависимости и освобождать память, выгружая неиспользуемые сборки.
Осваиваем ALCВы когда-нибудь задумывались, как выглядит современная птицефабрика? Та самая, что поставляет яйца в наши магазины и на наши столы. Если у вас в голове всплывают картинки а-ля курочки мирно клюют зернышки на огороженной лужайке, то у меня для вас две новости.
Первая - прогресс шагнул далеко вперед.
Вторая - современные агротехнологии могут показаться жестокими. Но именно благодаря им мы можем купить яйца в ближайшей “Пятерочке” и не выложить за них ползарплаты. Итак, приступим.
Читать далееПривет хабр. Меня зовут Юрий, я уже почти как лет двадцать инженер. По меркам айтишечки - динозавр. И большую часть нашей айтишной работы, не всегда можно в реальном мире потыкать палочкой. Код, сервисы, бек, фронт, нейронки это все круто, но оно там, на экране.
А иногда, так хочется делать вещи, которые можно пощупать руками, понюхать, попробовать на вкус. В реальном мире, не в эфимерном коде. Так N лет назад я открыл для себя пивоварение, а в этом году погрузился в 3д печать. И это нормальная история, во многих коллективах я видел группы по интересам, привязанные к ручным, крафтовым занятиям. Все это выглядит как естественная потребность для инженера.
Сегодня я расскажу про 3д печать, не про всю, конечно. Это очень большое направление, с явными рисками свалиться в холивар. Рассмотрим только литофанию и “хуефорж”.
Печать далееСалют, Хабр!
А мы кота завели. Для детей. В интеллектуальных колонках Sber появился новый помощник СберКот, который ранее обитал внутри детского банковского приложения СберKids. Умный помощник знает ответы на детские «почему» и говорит с детьми на одном языке. Он появится, если сказать колонке:
— Салют, позови СберКота!
В этой статье рассказываем, как выстроили многоуровневую систему безопасности, синтезировали голос СберКота и обучили колонку понимать особенности детской речи.
Читать далееУ нас есть легковые машины, грузовые машины, битумовозы, спецтехника и много чего ещё интересного. Всё это управляется через диспетчерскую, и там были некоторые костыли, обусловленные системой учёта. Например, нельзя было отправить пескоразбрасыватель, мобильную систему пылеподавления либо грузовик навалочной погрузки куда-то по сложному маршруту. Или чтобы они отработали не полную смену, потому что всё квантовалось сменами.
Копились и другие проблемы.
Например, пользователи стали продвинутыми и жаловались на дружелюбность интерфейса. На самом деле тяжело представить в одном предложении слова «дружелюбность интерфейса» и нашу старую систему заявок на транспорт.
Всё это работало только под IE/Edge, не поддерживало Хромиум, конфликтовало с требованиями ИБ.
Бизнес регулярно генерировал новые фичи, но некоторые из них было проблематично реализовывать в действующей системе.
Мы давно задумывались о рефакторинге или миграции, суть споров сводилась к самопису или «коробке».
Мы всё проанализировали и решили, что надо взять готовую «коробку», которую потом нужно будет допилить процентов этак на 10.
В итоге оказалось, что сначала мы допилили процентов на 20, а потом от исходной «коробочной» версии осталось процентов 10, и вся разработка переехала к нам внутрь.
Сейчас я расскажу о дьявольском опыте использования чужой «коробочной» версии как фреймворка для своей разработки. Забегая вперёд — второй раз мы в это не полезли бы.
Читать далееВы когда-нибудь видели в консоли сообщение вроде: «Access to fetch at '…' from origin '…' has been blocked by CORS policy»? Это как в том фильме: «Суслика видишь? — А он есть». CORS не бросается в глаза, пока все работает, но в нужный момент пресекает недопустимые действия. Например, чтение ответа на кросс-запрос без разрешения сервера.
Меня зовут Баир, я разработчик в команде fuse8. В этой статье я отвечу на вопросы о том, зачем была создана CORS политика, как она устроена под капотом, почему простого действия типа «поставить заголовок на бэке» может быть мало, и какие безопасные паттерны стоит выбирать во фронтенде.
Читать далееИли о том, как я до сих пор пытаюсь закрыть гештальт 20-летней давности и почему иногда важнее поставить точку, чем дописывать очередную главу.
Я уже писал достаточно откровенную статью о том, как почти 20 лет назад решил во что бы то ни стало придумать и реализовать проект, который обязан был быть глобальным, при этом уникальным, и конечно же успешным. Почему обязан? Хороший вопрос. Наверное, потому что в двадцать с небольшим лет кажется, что иначе и быть не может.
Моя прошлая статья «Нечто большее, чем лайк» — горьковатый коктейль из боли, личных инсайтов, странной псевдофилософии, ослепленности идеей и 15-летнего бега по кругу в попытке реализовать странную (и никому не нужную) социальную сеть с еще более странной «эмоциональной системой рейтинга».
Той статьей я пытался раз и навсегда закрыть вопрос с этой изрядно затянувшейся попыткой оставить свой след в истории интернета (ха!). Некоторое время после ее публикации я действительно верил, что меня отпустило.
Пока снова не началась фаза обострения. И дело не в том, что я вдруг перестал принимать медикаменты…
Войти в выйти: приключение на 20 минут