Как стать автором
Обновить
-13
0.6
Sergei Monakhov @D1abloRUS

System Engineer

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

Поиск по произвольным параметрам

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

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

Давайте
Всего голосов 9: ↑3 и ↓6-3
Комментарии12

Полезные ресурсы для погружения в Go: выбор сотрудников Selectel

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

Попросили коллег порекомендовать ресурсы — подкасты, ютуб-каналы, книги, блоги и GitHub-репозитории — для изучения языка программирования Go. Сохраняйте подборку в закладки: пригодится и начинающим, и опытным специалистам. А также делитесь своими вариантами в комментариях.
Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии4

Как мы перешли с Elastic на Grafana stack и сократили расходы в несколько раз

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

Привет! Хочу поделиться историей миграции сервисов логирования и трейсинга с компонентов Elastic Stack на Grafana Stack и тем, что из этого вышло. До миграции у нас в М2 использовались достаточно классические схемы:

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

Выгорание. Неочевидные преимущества

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

Здравствуйте, уважаемые друзья!

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

Это длительный процесс работы (и по сути жизни) под давлением, в условиях перерасхода энергии, постоянных перегрузок и периодического эмоционального кризиса, в ходе которого человек испытывается на прочность (и в плане стойкости, и в плане способности меняться – исправлять ошибки своего подхода к распределению энергии).

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

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

Но такой опыт нельзя воспринимать только как негативный. Это ошибка. Любое значительное событие в жизни или период с высокой отдачей энергии меняет человека.
И выгорание не исключение. Насколько сильно меняет, и в хорошую или плохую сторону – человек выбирает сам, и иногда этот выбор человек совершает значительно позже (после выгорания), анализируя личный опыт и проводя работу над ошибками.

Читать далее
Всего голосов 18: ↑15 и ↓3+12
Комментарии22

Экстремальная настройка производительности HTTP: 1,2M API RPS на инстансе EC2 с 4 виртуальными процессорами (vCPU)

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

Прим. перев.: автор данного исследования — Marc Richards, Solutions Architect и DevOps-инженер — продемонстрировал потрясающую настойчивость и тщательность в тотальной оптимизации производительности веб-приложения. Получившийся материал — кладезь полезных знаний для расширения своего кругозора в области оптимизации, особенностей сетевого стека в Linux и не только, даже вне зависимости от практической заинтересованности в конечном результате автора. Приготовьтесь к по-настоящему длинному техническому путешествию с обилием терминологии, увлекательных графиков и полезных ссылок.

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

Почему GPU обманывают о своей нагрузке и как с этим бороться

Время на прочтение10 мин
Количество просмотров19K
В предыдущем посте я рассказывал о том, как мы строили свои суперкомпьютеры. В этом — поделюсь опытом, который мы накопили, эксплуатируя наши кластеры. Этот опыт будет полезен не только тем, кто обучает огромные ML-модели. На грабли, о которых пойдёт речь, легко наступить, даже если вы специалист с парой GPU.



Почему в распределённом обучении нельзя доверять утилизации GPU? Почему переход в эру распределённого обучения — фундаментальный сдвиг парадигмы мышления, к которому должен быть готов каждый ML-разработчик? Ещё больше «Почему» и ответов на них — под катом.
Читать дальше →
Всего голосов 75: ↑74 и ↓1+73
Комментарии8

MLOps Principles

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

В данной статье мы переводим статью от Google, разбираем их опыт внедрения и видения MLOps практик в Machine Learning.

Читать далее
Рейтинг0
Комментарии0

Подборка бесплатных курсов для тех, кто делает первые шаги в Data Science

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

Курсы упорядочены по степени необходимости, начиная с базовых знаний, без которых будет тяжело даваться дальнейшее изучение (линейная алгебра, статистика, базовое знание python и т.д.), переходя к более сложным. Старался избавиться от избыточности, оставляя только самые ценные, на мой взгляд, курсы. Эти бесплатные курсы легко заменят вам платные.

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

Приседания по программе Пола Уэйда

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

image


Техника / как выполнять


Правило первое: правильная постановка ног


Перед началом приседаний надо посмотреть на позицию ног. Также как ладони продолжают руки, так и от положения ступней зависит позиция ног. Начинайте, расположив ступни симметрично с носками развёрнутыми наружу под углом 30-40 градусов. Однако, продолжайте экспериментировать, чтобы добиться удобного положения под себя. Колени смотрят в ту же сторону, что и носки. Они не должны быть параллельны друг другу.


image


Это может показаться неправильным, но так задумано природой, и так мы устроены. Слегка развернутые наружу носки помогут занять устойчивое положение. Однако, это не сработает, разверни вы только одну ногу. В общем, просто займите удобное естественное положение.


Во время приседаний на одной или двух ногах, держите бёдра естественно и не скручивайте их. Выпрямляя ноги, не надо держать их в напряжении в верхней позиции. Колени рассчитаны на удержание тела в течение всего дня, поэтому обязательно выпрямляйте их так, как будто просто стоите.

Читать дальше →
Всего голосов 44: ↑32 и ↓12+20
Комментарии32

Обзор операторов PostgreSQL для Kubernetes. Часть 1: наш выбор и опыт

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


Всё чаще от клиентов поступают такие запросы: «Хотим как Amazon RDS, но дешевле»; «Хотим как RDS, но везде, в любой инфраструктуре». Чтобы реализовать подобное managed-решение на Kubernetes, мы посмотрели на текущее состояние наиболее популярных операторов для PostgreSQL (Stolon, операторы от Crunchy Data и Zalando) и сделали свой выбор.

Эта статья — полученный нами опыт и с теоретической точки зрения (обзор решений), и с практической стороны (что было выбрано и что из этого получилось). Но для начала давайте определимся, какие вообще требования предъявляются к потенциальной замене RDS…
Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии27

Подключаем новый Xiaomi Gateway 3 к Home Assistant без паяльника и смс

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

Новый хаб от Xiaomi с поддержкой технологий Zigbee 3, Bluetooth Mesh, HomeKit и его подключение к достаточно популярной системе умного дома — Home Assistant, интересует?


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

От Threat Modeling до безопасности AWS: 50+ open-source инструментов для выстраивания безопасности DevOps

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

Привет, Хабр! Я консультант по информационной безопасности в Swordfish Security по части выстраивания безопасного DevOps для наших заказчиков. Я слежу за тем, как развивается тенденция развития компаний в сторону DevSecOps в мире, пытаюсь транслировать самые интересные практики в русскоговорящее сообщество и помогаю выстраивать этот процесс с нашей командой у заказчиков. За последние 2 года тема DevSecOps стала привлекать все больше внимания. Новые инструменты не успевают стать частью быстро растущего набора практик, из-за чего у меня появилось желание поставить некоторую контрольную точку в виде списка инструментов. Отправной точкой стал выход статьи коллег из Mail.ru, где отдельно был выделен раздел по безопасности Kubernetes. Я решил расширить этот список, охватив другие этапы жизненного цикла SDLC и приведя пару новых инструментов.

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

Создание дополнительного kube-scheduler’a с кастомным набором правил планирования

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


Kube-scheduler является неотъемлемым компонентом Kubernetes, который отвечает за планирование подов по нодам в соответствии с заданными политиками. Зачастую, в процессе эксплуатации Kubernetes-кластера нам не приходится задумываться о том, по каким именно политикам происходит планирование подов, так как набор политик дефолтного kube-scheduler’a подходит для большинства повседневных задач. Однако встречаются ситуации, когда нам важно тонко управлять процессом распределения подов, и для выполнения этой задачи есть два пути:

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Серия постов по Istio Service Mesh

Время на прочтение9 мин
Количество просмотров18K
Мы начинаем серию постов, в которой продемонстрируем некоторые из множества возможностей сервисной сетки Istio Service Mesh в сочетании с Red Hat OpenShift и Kubernetes.



Часть первая, сегодняшняя:

  • Объясним концепцию sidecar-контейнеров Kubernetes и сформулируем лейтмотив этой серии постов: «вам не надо ничего менять в своем коде».
  • Представим основополагающую вещь Istio – правила маршрутизации. На них строятся все остальные возможности Istio, поскольку именно правила позволяют направлять трафик к микросервисам, используя для этого внешние по отношению к коду сервисов файлы YAML. Также рассматриваем схему развертывания Canary Deployment. Новогодний бонус – 10 интерактивных занятий по Istio
Читать дальше: Серия постов по Istio Service Mesh
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

Как запускается сервер

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

Запуск сервера — длинная и сложная последовательность действий, зависящая от аппаратной составляющей, настроек и используемого программного обеспечения. Многие, даже опытные и квалифицированные системные администраторы, плохо себе представляют, что именно происходит в процессе запуска сервера, поэтому мы решили разобрать этот процесс детально.
Читать дальше →
Всего голосов 85: ↑74 и ↓11+63
Комментарии76

Разворачиваем среду для работы с микросервисами. Часть 1 установка Kubernetes HA на bare metal (Debian)

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


Здравствуйте уважаемые читатели Хабра!


Этой публикацией я хочу начать цикл статей про развертывание полноценной среды оркестрации контейнерами Kubernetes, которая будет готова к эксплуатации и запуску приложений.
Я хочу рассказать не просто про то, как развернуть кластер Kubernetes, но и про то, как настроить кластер после установки, как добавить в него удобных инструментов и дополнений для использования микросервисной архитектуры.


Данный цикл будет состоять минимум из четырех статей:


  1. В первой из них я расскажу, как на голое железо установить отказоустойчивый кластер kubernetes, как установить стандартный дашборд и настроить доступ к нему, как установить ingress контроллер.
  2. Во второй статье я расскажу, как развернуть отказоустойчивый кластер Ceph и как начать использовать RBD тома в нашем кластере Kubernetes. Также немного затрону остальные виды стораджей (storages) и более подробно рассмотрю local-storage. Дополнительно расскажу, как на базе созданного кластера CEPH организовать отказоустойчивое хранилище S3
  3. В третьей статье я расскажу, как в нашем кластере Kubernetes развернуть отказоустойчивый кластер MySql, а именно — Percona XtraDB Cluster on Kubernetes. И также опишу все проблемы с которыми мы столкнулись, когда решили перенести БД в kubernetes.
  4. В четвертой статье я постараюсь собрать все вместе и рассказать, как задеплоить и запустить приложение, которое будет использовать БД и тома ceph. Расскажу, как настроить ingress контроллер для доступа к нашему приложению извне и сервис автоматического заказа сертификатов от Let's Encrypt. Еще — как автоматически поддерживать данные сертификаты в актуальном состоянии. Также немного затронем тему RBAC в контексте доступа до панели управления. Расскажу в двух словах про Helm и его установку.
    Если Вам интересна информация данных публикаций, то — добро пожаловать!
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии4

Как работать с Postgres в Go: практики, особенности, нюансы

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


Неожиданное поведение приложения в отношении работы с базой приводит к войне между DBA и разработчиками: DBA кричат: «Ваше приложение роняет базу», разработчики — «Но ведь до этого всё работало!». Хуже всего, что DBA и разработчики не могут помочь друг другу: одни не знают про нюансы работы приложения и драйвера, другие не знают про особенности, связанные с инфраструктурой. Было бы неплохо такой ситуации избежать.


Надо понимать, часто недостаточно полистать go-database-sql.org. Лучше вооружиться чужим опытом. Еще лучше, если это будет опыт, полученный кровью и потерянными деньгами.

Всего голосов 76: ↑73 и ↓3+70
Комментарии29

Ubuntu 18.04 Root on ZFS

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

В прошлом году потребовалось мне создать инструкцию по установке операционной системы Ubuntu 18.04. К слову, ничего сложного в установке Ubuntu нет, но есть нюанс: я хотел использовать файловую систему ZFS как базовую. С одной стороны, Ubuntu поддерживает ZFS на уровне ядра, но инсталятора под неё еще нет, но есть инструкция, да:


https://github.com/zfsonlinux/zfs/wiki/Ubuntu-18.04-Root-on-ZFS


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


Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии41

Бесшовная (почти) миграция между мажорными релизами PostgreSQL с помощью логической репликации

Время на прочтение9 мин
Количество просмотров18K
У нас в True Engineering на одном проекте назрела необходимость в смене версии PostgreSQL с 9.6 на 11.1.

Зачем? База данных на проекте уже объемом 1,5 Tb и растет. Перформанс – одно из основных требований к системе. А сама структура данных эволюционирует: добавляются новые колонки, меняются существующие. Новая версия Postgres научилась эффективно работать с добавлением новых колонок с дефолтным значением, так что не нужно городить кастомных костылей на уровне приложения. Ещё в новой версии добавили несколько новых способов партиционирования таблиц, что тоже крайне полезно в условиях большого объема данных.

Итак, решено, мигрируем. Конечно, можно поднять параллельно со старой новую версию сервера PostgreSQL, остановить приложение, через dump/restore (или pg_upgrade) переместить базу и снова запустить приложение. Нам это решение не подошло из-за большого размера базы, к тому же, приложение работает в боевом режиме, и на даунтайм есть считанные минуты.

Поэтому мы решили попробовать миграцию с помощью логической репликации в PostgreSQL с использованием стороннего плагина под названием pglogical.

В процессе «проб» мы столкнулись с весьма обрывочной документацией по этому процессу (а на русском языке её вообще нет), а также некоторыми подводными камнями и неочевидными нюансами. В этой статье мы хотим изложить свой опыт в виде Tutorial.



TL;DR

  • Всё получилось (не без костылей, о них и статья).
  • Мигрировать можно в рамках PostgreSQL версии от 9.4 до 11.x, с любой версии на любую, вниз или вверх.
  • Даунтайм равен времени, которое требуется вашему приложению, чтобы переподключиться к новому серверу БД (в нашем случае это был перезапуск всего приложения, но в дикой природе, очевидно, «возможны варианты»).
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии30

Высокодоступный и масштабируемый Elasticsearch в Kubernetes

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

image
В предыдущем посте мы масштабировали набор реплик MongoDB и познакомились со StatefulSet. Сейчас мы займемся оркестрацией кластера высокой доступности Elasticsearch (с другими мастер-нодами, нодами данных и клиентскими нодами) и задействуем ES-HQ и Kibana.


Вам понадобятся:


  1. Базовое представление об Elasticsearch, его типах нод и их ролях.
  2. Работающий кластер Kubernetes как минимум с тремя нодами (не меньше четырех ядер, 4 ГБ).
  3. Умение работать с Kibana.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии2
1
23 ...

Информация

В рейтинге
1 531-й
Зарегистрирован
Активность