Как стать автором
Обновить
1
0
Igor K. @rev42

Пользователь

Отправить сообщение

Мониторинг Celery

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров5.3K

Существует популярный подход к покрытию метриками Celery: он заключается в запуске некоторого процесса, который слушает события из специальной очереди, на основе этих событий обновляются объекты метрик, а фоновый поток сервера отдаёт собранные метрики скраперу. В этой статье подробно разберём события, их жизненный цикл, откуда и как их принимать. Также поговорим про механизм удалённого управления (remote control), какие у него есть возможности и как им пользоваться. Обсудим существующие решения, чем они отличаются, и почему вам, возможно, будет выгодно сделать своё.

Читать далее
Всего голосов 35: ↑35 и ↓0+39
Комментарии1

Оценка в Scrum: Story Points, Velocity и … 38 попугаев

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров8K

Думаю, ни для кого не секрет, что Scrum сегодня – одна из самых популярных Agile-методологий. В сети можно найти много позитивных отзывов от людей, которые его попробовали. Но очевидно, что положительных результатов удается добиться не всем, поэтому есть и немалое количество критических статей. Вот, например, недавно тут же – на Хабре – был опубликован перевод подобной статьи  «Почему оценка задач сломала Agile».

У меня есть хороший опыт использования этого самого Scrum`а и оценки задач в нем, поэтому возникла мысль написать разбор приведенных тезисов и ответить на критику (что-то  в стиле «Антипаттерны Scrum»). Но в итоге, я решил, что будет честнее (по крайней мере для моей первой публикации), если я начну с позитива, и сначала попытаюсь сам разъяснить главное на мой взгляд заблуждение в статье – что же такое Story Points, и что такое оценка в Scrum.

При этом я не хочу писать новую инструкцию. Если вам нужны формальное описание и детали, то можете обратиться к первоисточникам, например к книге Джеффа Сазерленда «Scrum. Революционный метод управления проектами» (МИФ, 2015) – там все подробно описано с обоснованиями и прочим. Я же, в свою очередь, хочу предложить более короткий путь: «с использованием местных идиоматических выражений».

Читать далее
Всего голосов 11: ↑5 и ↓60
Комментарии13

Исторические исходные коды, с которыми должен быть знаком каждый разработчик

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров26K

Как и любая другая индустрия, сфера компьютерных технологий прошла внушительный путь развития. Благодаря упорной работе программистов прошлого сегодня мы пользуемся высококлассными компьютерами, высококачественными современными графическими интерфейсами, дружелюбными языками программирования и футуристическими веб‑приложениями в реальном времени. Изучение истории приносит удовольствие — весьма интересно наблюдать за поступательным развитием технологий с течением времени. Только подумайте, скольких трудов стоило создать современный самолет — люди прошли огромный путь от одной лишь идеи полета до настоящих летательных аппаратов. Точно так же компьютеры прошли путь от дорогостоящих машин размером с целую комнату до современных и (относительно) недорогих устройств общего назначения.

Читать далее
Всего голосов 42: ↑32 и ↓10+30
Комментарии14

Работа с микросервисами через API-gateway

Время на прочтение18 мин
Количество просмотров25K

Однажды один тимлид поставил передо мной задачу реализовать механизм взаимодействия пользователя через веб-интерфейс с микросервисами через единую точку входа с использованием FastAPI и RabbitMQ. Спешу поделиться с тобой, мой читатель, тем, что у меня получилось.

Читать
Всего голосов 9: ↑2 и ↓7-5
Комментарии22

Создаем свой собственный язык программирования с использованием LLVM. Часть 2: Семантический анализ

Время на прочтение32 мин
Количество просмотров7.1K

В предыдущей статье мы закончили на том, что мы написали лексический и синтаксический анализаторы для нашего учебного языка. В данной статье мы продолжим начатое и рассмотрим следующую стадию анализа исходного кода программы — семантический анализ.

Читать далее
Всего голосов 13: ↑12 и ↓1+15
Комментарии21

Карьера в ИТ: техники личной продуктивности по итогам 20 лет экспериментов

Время на прочтение3 мин
Количество просмотров13K

Вам знакома ситуация, когда вы погреблены под валом задач? Едва закрываете одну — на её место сваливается еще две. И, главное, все задачи действительно важные и срочные. Гора дел растет, вы впадаете в отчаяние и тихо выгораете. Никто, разумеется, этого не замечает и не ценит. Вот необходимый и достаточной набор практик, которые спасают в таких ситуациях.

Читать далее
Всего голосов 16: ↑11 и ↓5+10
Комментарии9

База по шардированию базы

Время на прочтение10 мин
Количество просмотров36K

Возможность горизонтального масштабирования это одно из важнейших нефункциональных требований индустрии в последнее время. Рост бизнеса со стороны IT выглядит чаще всего как рост нагрузки и цены отказа системы. Нам всем хочется создавать такие приложения, которые будут одинаково быстро и стабильно работать как с сотней, так и с сотней тысяч клиентов. Для этого необходимо еще на стадии проектирования закладывать потенциал для масштабирования, одним из способов которого является шардирование.

Мы на пальцах рассмотрим что такое шардирование, как оно помогает в масштабировании и даже рассмотрим тот самый этап «роста».

Читать далее
Всего голосов 25: ↑24 и ↓1+25
Комментарии19

Изучаем PostgreSQL. Часть 1. Знакомимся с архитектурой

Время на прочтение8 мин
Количество просмотров110K

 На сегодняшний день существует большое количество различных систем управления базами данных - СУБД, от коммерческих до открытых, от реляционных до новомодных NoSQL и аналогичных.

Одним из лидеров направления СУБД является PostgreSQL и ее различные ответвления, о некоторых из которых мы рассмотрим подробнее.

В этой статье мы начнем говорить о СУБД PostgreSQL, рассмотрим отличия редакций и некоторые особенности архитектуры, а также процесс установки. Но начнем мы с небольшого ликбеза для того, чтобы читатели плохо знакомые с терминологией баз данных могли быстро войти в курс дела.

Итак, схемой мы будем называть логическое объединение таблиц в базе данных, а сама БД это физическое объединение таблиц. Индекс - отношение, которое содержит данные, полученные из таблицы или материализованного представления. Его внутренняя структура поддерживает быстрое извлечение и доступ к исходным данным.

Еще один важный термин, это первичный ключ - частный случай ограничения уникальности, определенной для таблицы или другого отношения, которое также гарантирует, что все атрибуты в первичном ключе не имеют нулевых значений. Как следует из названия, для каждой таблицы может быть только один первичный ключ, хотя возможно иметь несколько уникальных ограничений, которые также не имеют атрибутов, поддерживающих значение null.

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

Читать далее
Всего голосов 20: ↑13 и ↓7+8
Комментарии8

Что делать если команда не хочет проводить Ретро? (Часть 1)

Время на прочтение3 мин
Количество просмотров6.2K

❓Что делать если команда не хочет проводить Ретро?

Это один из самых частых вопросов Скрам-Мастеров.

Понятно, что команда не хочет это делать не со зла. По большому счёту есть две основных причины.

Читать далее
Всего голосов 9: ↑1 и ↓8-5
Комментарии28

Чем занимается ClickHouse пока мы спим или неожиданный OOM

Время на прочтение4 мин
Количество просмотров5.7K

Не смотря на все свое дружелюбие и конструкторную гибкость - ClickHouse временами выглядит, как весьма капризная технология. Одной из таких особенностей, с которой мне довелось столкнуться - стала борьба с внезапным OOM.

Конечно, довольно часто причина кроется в неоптимальной схеме самой таблицы, неэффективном запросе или настройках самого ClickHouse. Однако, в этой статье мы шагнем чуть дальше и поговорим о бэкграундных процессах в ClickHouse, необходимых для его работы и при этом потребляющих драгоценную оперативную память.

Об этом далее и пойдет текст
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Мой диплом, или Как собрать вещи и переехать на YDB

Время на прочтение13 мин
Количество просмотров14K
Меня зовут Арслан, в этом году я делал сервис для построения циклов заказа (например, заказа такси). Возможно, вы видели пост от другого разработчика в команде, Ильи Lol4t0. Всего сервис обрабатывает примерно 5000 RPS с задержкой 100 мс в 99 перцентиле. Раньше для хранения данных использовалась связка PostgreSQL с YT — MapReduce-системой Яндекса.

Обычно информация по заказу нужна в быстром доступе в течение пары часов. На эту парадигму хорошо ложилась архитектура с горячим и холодным хранилищем. Событие создавалось в PostgreSQL, асинхронно реплицировалось в YT, а спустя два часа удалялось из PostgreSQL, никаких проблем. Но со временем начали напрягать несколько вещей: сложность архитектуры, низкая доступность во время проведения работ на PostgreSQL и ограниченная возможность горизонтально масштабировать систему. Мы решили перейти на новую архитектуру с базой данных YDB. Хотели на примере тестового сервиса разобраться, как работать с базой, проверить всё под нагрузкой и реализовать хранение данных исходного сервиса.



Вообще, изначально я написал про это диплом. Но потом подумал, что читателям здесь тоже будет интересно, и всё переделал под Хабр. Если тоже переезжаете на YDB (после выхода в опенсорс это стало проще) или адаптируете систему с базой — заглядывайте. Поговорим о большинстве возможных трудностей при переезде.
Читать дальше →
Всего голосов 26: ↑23 и ↓3+28
Комментарии3

Обзор топ-5 полезных утилит для Docker

Время на прочтение5 мин
Количество просмотров35K

Проект Docker, запущенный в 2013 году, стал одним из самых популярных инструментов в области контейнеризации. Спустя почти 10 лет Docker активно развивается, однако, не только сама компания Docker Inc привносит улучшения в свой продукт – обычные пользователи тоже вносят свой вклад, создавая различные инструменты, которые совершенствуют взаимодействие с системой Docker.

В статье мы рассмотрим топ-5 полезных утилит, которые упростят работу с Docker.

Читать далее
Всего голосов 20: ↑17 и ↓3+17
Комментарии11

RabbitMQ: терминология и базовые сущности

Время на прочтение8 мин
Количество просмотров78K

При работе с инструментом важно знать теоретические основы. Во-первых, вам будет значительно проще искать ответы на вопросы в Google и понимать официальную документацию. Во-вторых, при обращении в профильные чаты вы будете называть вещи своими именами, что позволит быстрее получить ответ (или вообще получить его: если ваши слова и термины будут непонятны другим, вряд ли они смогут ответить вопрос). 

Алексей Барабанов, IT-директор «Хлебница» и спикер курса «RabbitMQ для админов и разработчиков», подготовил конспект, который поможет понять терминологию и базовые сущности RabbitMQ.

Читать далее
Всего голосов 39: ↑37 и ↓2+37
Комментарии5

Выбросьте блокноты, или почему заниматься Data Science нужно так, будто вы разработчик

Время на прочтение7 мин
Количество просмотров13K


Большинство дата-сайентистов использовали или до сих пор используют notebooks. В чем-то это здорово, но кажется, что дата-сайентисты должны действовать как разработчики. И поэтому с notebooks надо переходить на скрипты, разрабатываемые в IDE.
Читать дальше →
Всего голосов 14: ↑11 и ↓3+15
Комментарии23

Как переехать из Slack в Mattermost — личный опыт

Время на прочтение7 мин
Количество просмотров12K

Как переехать из Slack в Mattermost — личный опыт

Приветствую, уважаемые читатели Хабра. Меня зовут Иван, я руковожу направлением омниканальных решений в Лиге Цифровой Экономики. На старте одного из проектов около шести лет назад мы с заказчиком решили, что будем вести все проектные коммуникации в Slack. На тот момент для нашей небольшой команды стоил он не так дорого, да еще и был удобнее, чем альтернативные мессенджеры.

Summary: Из-за проблем со Slack нам нужно было искать альтернативу, а терять накопленные наработки не хотелось. Мы нашли способ переехать относительно безболезненно и с сохранением данных — рассказываем, как это сделали.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии24

Как сделать программу на Go быстрее на 42%, изменив один символ

Время на прочтение5 мин
Количество просмотров30K

Если вы прочитали заголовок и подумали «ну, ты, наверно, сделал сначала что-то глупое», то вы правы! Но что такое программирование, как не упражнения в глупых ошибках? Поиск глупых ошибок — это и есть самое большое удовольствие!

Также стоит заранее сделать оговорку о бенчмаркинге: ускорение на 42% было замерено при выполнении программы с моими данными и на моём компьютере, поэтому относитесь к этому результату с долей скепсиса.

Что делает программа?


codeowners — это программа на Go, выводящая владельцев каждого из файлов в репозитории согласно набору правил, указанному в файле GitHub CODEOWNERS. Правило может гласить, что всеми файлами с расширением .go владеет команда @gophers, или что всеми файлами в папке docs/ владеет команда @docs.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+60
Комментарии46

Что будет, если от разработчиков не отстать: умирающая команда

Время на прочтение11 мин
Количество просмотров60K
Мне досталась команда, которая болела. Все понимали, что происходит, никому не нравилось, что творится в команде, и традиционно менеджеры такие команды сильно режут. Но здесь были шансы вылечить и без ампутаций.


Источник

15 человек, из них — один руководитель проекта, три фронта, два бэка, три аналитика, девопс. Симптомы обычные: процессы всем не нравятся, соседи — козлы, потому что не то и не так делают, а как нужно — не знают, ответственности ни на ком толком нет ни за что.

Вроде бы когда-то это был настроенный конвейер, но теперь его куски — как будто в разных зданиях. Особо не заботятся о том, что было «до» и что будет «после». А если всё падает, то люди поднимают руки: «Я не виноват. Я не знаю, как поднять».

Проект — внутренний банка, он нужен для улучшения работы внутри компании. Традиционных решений в кровавом энерпрайзе — два: нанять новую команду (но вгружать мидла на проект такой сложности — три-четыре месяца) или же оставить проект на поддержке, через два года найти ему замену, а команду тихо похоронить в подвале. Точнее, не так: те, кто плывет по течению и не заботится о карьере, остаются тихо сидеть «на пенсии», то есть в бесконечной поддержке проекта. А самые проактивные тут же перейдут в другие команды или другие компании.

Почему процессы разваливались? На первый взгляд, потому, что была куча ненужных совещаний и встреч с теми, кого разработчики вообще не должны были видеть. Плюс местами странноватые KPI. Как это ни странно, но если психологически давить на разработчика пару лет, то ничем хорошим это не закончится. Руководство подразделения дало мне карт-бланш на исправления, и я начал разбираться, что же случилось.
Читать дальше →
Всего голосов 171: ↑167 и ↓4+205
Комментарии74

Принципы проектирования SOLID

Время на прочтение8 мин
Количество просмотров23K

Группа принципов проектирования, связанных с разработкой программного обеспечения, предложенные Робертом Мартином. Характеризуют принципы, которые рекомендуется соблюдать при написании программного кода. Эти правила помогают писать код, который легко масштабировать и поддерживать.

Основная цель статьи - познакомить Вас с общими принципами SOLID и показать примеры на языке Python.

Читать далее
Всего голосов 10: ↑7 и ↓3+5
Комментарии19

IT для неайтишников: Технический долг или почему теперь всё так долго?

Время на прочтение15 мин
Количество просмотров24K

Срыв сроков и выход за оценки в IT — большая и многогранная тема. На что-то бизнес-заказчик может повлиять напрямую, на что-то лишь косвенно. При работе с IT очень желательно понимать и знать такие понятия, как технический долг и «технический дефолт» (имеет иное значение, нежели в экономике). Что это такое, какие последствия имеет и как с эти бороться сейчас разберём.

Читать далее
Всего голосов 28: ↑26 и ↓2+29
Комментарии10

Учим Алису здороваться

Время на прочтение5 мин
Количество просмотров38K

Хочу поделиться опытом добавления некоторой вольности Алисе (внутри колонок поддерживающих локальный API).

Идея заключается в том, чтобы Алиса реагировала на присутствующих людей. Для этого их необходимо идентифицировать, например, с помощью распознавания лиц. В статье будет использован самый простой (на мой взгляд) вариант создания модели для распознавания лиц – тренировка модели в Google Teachable Machine, так как он не требует знаний и хорошего железа.

Читать далее
Всего голосов 23: ↑21 и ↓2+21
Комментарии21
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, Chief Technology Officer (CTO)
Lead
От 350 000 ₽
Project management
Development management
Linux
Golang
JavaScript
Agile
IT service management
Python
Git
Database