Pull to refresh
0
0
Алексей Нурмухаметов @anurm

Программист Java/Kotlin

Send message

Как мы внедрили CockroachDB на DBaaS в компанию классических СУБД

Level of difficultyMedium
Reading time11 min
Views6.5K

Привет! Меня зовут Полина Кудрявцева, я инженер DBA в Авито. В этой статье я расскажу о том, как мы внедрили CockroachDB на DBaaS в компанию классических СУБД, а также опишу его плюсы, минусы и особенности работы.

Читать далее
Total votes 25: ↑25 and ↓0+27
Comments3

Структурированное логирование в Go с помощью Slog

Reading time22 min
Views19K

Более 10 лет разработчики на Go жаловались на отсутствие структурированного логирования в ядре Golang. Участники сообщества Golang даже создали несколько собственных пакетов, таких как Logrus, Zap и Zerolog. В 2023 году, команда разработчиков Google Go наконец-то представила Slog — высокопроизводительный пакет для структурированного ведения логов в стандартной библиотеке Go. Мы перевели гайд о возможностях slog.

Читать далее
Total votes 15: ↑14 and ↓1+13
Comments5

Шпаргалка по работе с Tmux (терминальный мультиплексор)

Reading time2 min
Views496K

На Хабрахабре Tmux (ти-макс) упоминался неоднократно, тем не менее, решил написать еще одну шпаргалку, т.к. в других некоторые важные моменты не показаны.

Tmux (терминальный мультиплексор) позволяет работать с несколькими сессиями в 1 окне. Вместо нескольких окон терминала к серверу — вы можете использовать одно. Позволяет подключаться/отключаться к текущему состоянию сессии. Запущенные программы и процессы продолжают работать. (Можно использовать вместо nohup, dtach).

Например, на работе правим файлы в Vim. Окно терминала с открытыми файлами, процессами. Отключаемся от сессии. Далее подключаемся к этой сессии из дома и получаем те же окна с открытыми файлами в Vim, процессами и т.д. Можно продолжить работу с того же момента, на котором остановились. Также удобно при разрыве связи. Дополнительно можно работать совместно с другими в терминале, если подключены к одной сессии. Каждый видит, что делает другой.
Читать дальше →
Total votes 28: ↑17 and ↓11+6
Comments20

Укрощаем одноглазого змея. Разбираемся с WireGuard и делаем свой умный VPN

Reading time29 min
Views292K

Забавная ситуация: сайтов и сервисов, доступных только через VPN, все больше, но при этом многие российские компании закрывают доступ из-за границы. В результате приходится целыми днями теребить ползунки «вкл-выкл», что утомительно. Я расскажу, как с помощью магии маршрутов и WireGuard, решить эту проблему и сделать «умный» VPN, который не надо отключать.


Если ты пользуешься VPN, то и сам наверняка сталкиваешься с блокировками зарубежного трафика. К примеру, могут не открываться pochta.ru, leroymerlin.ru, rt.ru, avito.ru.


Получается мем.



Каждый с этим борется как может. Например, на устройствах Apple родными средствами можно настроить автоматизацию, которая будет запускать VPN, когда открываешь определенные приложения (например, Twitter), а когда выходишь из них — выключать обратно. Но это костыль, а хочется все сделать красиво, да еще и прокачать навык работы с сетью.


Поэтому мы сейчас попробуем «включать VPN чуть-чуть».

Читать дальше →
Total votes 43: ↑42 and ↓1+51
Comments73

Как мы делали абразив для головы, чтобы не лысеть

Reading time9 min
Views31K
image

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

Мужчины терпят дольше женщин, поэтому обращаются обычно с анамнезом «что-то я лысею, нельзя чем-то намазать?». В целом можно. Но лучше было чем-то намазать, а потом это что-то смыть, когда голова только начинала адски чесаться.

На примере разработки нашей уютной лабораторией абразива для зачистки кожи головы удобно будет разобраться, как растут волосы и что им вообще от вас нужно. Давайте поговорим про важность расчёски, прорастающие внутрь кожи волосы, чёртовых маркетологов шампуней и разных идиотов. Как обычно, как только дело касается хоть какого-то лечения, идиоты будут. Обещаю.
Читать дальше →
Total votes 61: ↑46 and ↓15+45
Comments79

Практическое руководство по HashiCorp Consul — Часть 1

Reading time25 min
Views89K


Это часть 1 из серии 2 частей практического руководства по HashiCorp Consul. Эта часть в первую очередь ориентирована на понимание проблем, которые решает Consul и как он их решает. Вторая часть больше ориентирована на практическое применение Consul в реальном примере и будет опубликована на следующей неделе. Давайте начнем.

Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments2

Паттерны и антипаттерны корутин в Kotlin

Reading time5 min
Views28K

Паттерны и антипаттерны корутин в Kotlin


Решил написать о некоторых вещах, которых, по моему мнению, стоит и не стоит избегать при использовании корутин Kotlin.

Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments1

Как я перестал волноваться и полюбил ошибки в Kotlin корутинах: Мифы обработки ошибок в корутинах

Level of difficultyHard
Reading time6 min
Views11K

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

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments20

Lock-free структуры данных. 1 — Начало

Reading time12 min
Views149K

Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с хабрасообществом своим опытом, наблюдениям и размышлениями о том, что такое lock-free структуры данных, как их реализовывать, подходят ли концепции контейнеров стандартной библиотеки STL к lock-free контейнерам, и когда стоит (и стоит ли вообще) применять lock-free структуры данных.

Читать дальше →
Total votes 165: ↑161 and ↓4+157
Comments39

Apache Kafka: основы технологии

Reading time9 min
Views438K

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


Статья подготовлена на основе открытого занятия из видеокурса по Apache Kafka. Авторы — Анатолий Солдатов, Lead Engineer в Авито, и Александр Миронов, Infrastructure Engineer в Stripe. Базовые темы курса доступны на Youtube.

Total votes 29: ↑29 and ↓0+29
Comments10

Отлаживаем ядро из командной строки с bpftrace

Reading time23 min
Views10K

Это очередная статья из цикла «BPF для самых маленьких» (0, 1, 2) и первая из серии практических статей про трассировку Linux современными средствами.


Из нее вы узнаете о программе и языке bpftrace — самом простом способе погрузиться в мир BPF с практической точки зрения, даже если вы не знаете про BPF ровным счетом ничего. Утилита bpftrace позволяет при помощи простого языка прямо из командной строки создавать программы-обработчики и подсоединять их к огромному количеству событий ядра и пространства пользователя. Посмотрите на КПДВ ниже… поздравляю, вы уже умеете трейсить системные вызовы при помощи bpftrace!


В отличие от предыдущих статей серии, эта относительно короткая и ее основная часть написана в формате туториала, так что уже после пяти минут чтения вы сможете создавать обработчики и собирать статистику о любом событии в ядре Linux прямо из командной строки. В конце статьи рассказывается об альтернативах — ply и BCC. Минуты во фразе «после пяти минут чтения» подразумеваются меркурианские. Появление уникальных навыков после пяти минут чтения не гарантируется.


Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments11

Лишние элементы или как мы балансируем между серверами

Reading time8 min
Views42K
Привет, Хабр! Какое-то время назад люди осознали, что увеличивать мощность сервера в соответствии с ростом нагрузки просто невозможно. Тогда-то мы и узнали слово «кластер». Но как бы красиво это слово не звучало, всё равно приходится технически объединять разрозненные серверы в единое целое – тот самый кластер. По городам и весям мы добрались до наших узлов в моём предыдущем опусе. А сегодня мой рассказ пойдёт о том, как делят нагрузку между членами кластера системные интеграторы, и как это сделали мы.



Внутри публикации вас также ждёт бонус в виде трёх сертификатов на месячную подписку ivi+.
Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments89

Сети для самых матёрых. Часть пятнадцатая. QoS

Reading time66 min
Views183K
СДСМ-15. Про QoS. Теперь с возможностью Pull Request'ов.

И вот мы дошли до темы QoS.

Знаете почему только сейчас и почему это будет закрывающая статья всего курса СДСМ? Потому что QoS необычайно сложен. Сложнее всего, что было прежде в цикле.

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

QoS настолько опутан аурой шаманизма и недоступности, что все молодые (и не только) инженеры стараются тщательно игнорировать его существование, считая, что достаточно закидать проблемы деньгами, и бесконечно расширяя линки. Правда пока они не осознают, что при таком подходе их неизбежно ждёт провал. Или бизнес начнёт задавать неудобные вопросы, или возникнет масса проблем, почти не связанных с шириной канала, зато прямо зависящих от эффективности его использования. Ага, VoIP активно машет ручкой из-за кулис, а мультикастовый трафик ехидно поглаживает вас по спинке.

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

Читать дальше →
Total votes 72: ↑72 and ↓0+72
Comments24

Преимущества и недостатки HugePages

Reading time7 min
Views37K


Перевод статьи подготовлен для студентов курса «Администратор Linux».




Ранее я рассказал о том, как проверить и включить использование Hugepages в Linux.
Эта статья будет полезна, только если у вас действительно есть, где использовать Hugepages. Я встречал множество людей, которые обманываются перспективой того, что Hugepages волшебным образом повысят производительность. Тем не менее hugepaging является сложной темой, и при неправильном использовании он способен понизить производительность.

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments13

Быстрее, выше, сильнее: оптимизируем Spring-контекст для тестов

Level of difficultyMedium
Reading time22 min
Views6.1K

Всем привет! Я Юнес, SDET в Тинькофф. Помогаю автоматизаторам создавать более эффективные и надежные тесты, готовить тестовые данные и настраивать CI/CD-пайплайны. 

Расскажу о доступных способах оптимизации Spring-контекста для тестов. Будет здорово, если у вас есть знания о Spring Framework и опыт написания тестов: тогда мы будем на одной волне. Давайте разберемся в хитросплетениях аннотаций и конфигураций вместе под катом!

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments4

Работа Apache Kafka на примерах. Поднимаем Kafka Cluster используя docker-compose

Level of difficultyMedium
Reading time11 min
Views68K

В этой статье продемонстрирую и объясню работу Kafka, используя как можно меньше определений и больше практики. Мы рассмотрим 3 сценария работы с Kafka. Для последнего сценария мы поднимем Kafka Cluster в Docker и с помощью UI увидим, как происходит общение между сервисами.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments8

Паттерн Outbox: как не растерять сообщения в микросервисной архитектуре

Reading time8 min
Views83K

Привет! Меня зовут Михаил Боровиков, я тимлид команды, которая отвечает за систему процессинга заказов Lamoda — Orders Management. Эта система, словно «сердце» Lamoda, через которое проходит самый важный для бизнеса шаг — оформление заказа.

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

Для решения этой проблемы мы выбрали паттерн Outbox. И в этой статье я расскажу, что он из себя представляет, как мы его применили, почему пошли по пути at-least-once и не положились на работу одного брокера сообщений.

Читать далее
Total votes 28: ↑26 and ↓2+27
Comments27

Kafka за 20 минут. Ментальная модель и как с ней работать

Level of difficultyMedium
Reading time19 min
Views128K

Привет! Меня зовут Глеб Гончаров, и я руковожу подгруппой ИТ-инфраструктуры в СберМаркете. В работе мы широко используем Kafka как шину данных для микросервисов и не раз убедились на практике, что к инструменту важно подобрать правильный подход. Об этом сегодня и поговорим в двух частях — сначала обсудим основы, а в конце статьи будет ссылка на практические задания.

Читать далее
Total votes 41: ↑41 and ↓0+41
Comments15

Зеркалирование топиков Kafka по-бруклински

Level of difficultyHard
Reading time22 min
Views6.4K

Буквально на секунду представьте, что у вас есть парочка здоровенных кластеров Apache Kafka, каждый из которых держит по нескольку миллионов rps. И тут вас попросили зеркалировать топик из одного кластера в другой. Максимально близко к реалтайму, да ещё и с некоторыми специфическими условиями. Если стало страшно, интересно или страшно интересно, то это статья для вас.

Под катом я расскажу, что такое зеркалирование и зачем оно нужно. Как нам перестало хватать Mirror Maker’а. Поговорим о возможных решениях и выборе между ними. И дам подробную инструкцию, как вам развернуть такое решение у себя.

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments6

Information

Rating
Does not participate
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Web Developer
Senior
From 5,000 $
Git
SQL
Linux
Docker
Java
Kotlin
Spring Boot
RabbitMQ
Apache Kafka
Prometheus