Pull to refresh
-1
0
Aleksandr Sytar @crazylh

DevOps

Send message

Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

Level of difficulty Medium
Reading time 14 min
Views 21K

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

Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.

Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.

Читать далее
Total votes 65: ↑63 and ↓2 +61
Comments 20

Как сделать инициирующую загрузку в NiFi

Reading time 11 min
Views 5.1K

Давайте поговорим про Apache NiFi. Этот ETL-инструмент все чаще используют при загрузке данных в хранилище, правда, не всегда по назначению. Об одном из таких сценариев я рассказывал на конференции SmartData. Видео можно посмотреть на Ютубе, но я все равно рекомендую вам прочитать этот текст: здесь я собрал новые мысли и идеи. Речь пойдет об инициирующей загрузке, или перегрузке данных из источника. 

Читать далее
Total votes 10: ↑9 and ↓1 +8
Comments 4

3 особенности чисел в Python, о которых вы, возможно, не знали

Reading time 15 min
Views 47K

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

Но числа в Python — это гораздо больше, чем, собственно, их числовые значения. Поговорим о трёх особенностях чисел в Python, с которыми вы, возможно, не знакомы.

Читать далее
Total votes 64: ↑61 and ↓3 +58
Comments 17

ElasticSearch — как мы делали свою речевую аналитику

Reading time 10 min
Views 10K

Привет! Меня зовут Аркадий. Последние пару лет я в основном занимаюсь развитием поиска по тексту в команде TQM (Tinkoff Quality Management) в банке Тинькофф. Наш продукт — это речевая аналитика по звонкам, чатам и другим активностям, контроль качества, анализ и прочее. Более подробно о продукте можно прочитать на странице бизнес-решений. Примерный объем нашего индекса в проде — 16 Тб, около 450 млрд сущностей.

Каждый раз, когда встает вопрос о полнотекстовом поиске, команда оказывается перед выбором: а надо ли? Уже есть полнотекстовый поиск в Postgres, а тут придется заказывать серверы, строить кластер. Но чем чаще пользователю требуется что-то найти, тем чаще приходится смотреть в сторону специализированных поисковых движков.

Как пишут сами разработчики Elasticsearch, он нужен именно «для поиска, вы же знаете» (you know, for search) и не сможет заменить полноценное хранилище данных. Зато достаточно быстрый, очень надежный и хорошо горизонтально масштабируется (при наших объемах). 

Мы в TQM используем Elastic потому, что он гибкий, широко известный, имеет удобный и простой синтаксис, множество библиотек для работы как на Python, так и на C# (NEST). Хорошо скейлится под наши объемы (1—30 Тб). Kibana также очень удобна, мы используем ее для мониторинга, консоль Kibana применяем для запросов. А еще по сравнению с тем же Sphinx, Elastic удобно масштабировать (просто добавляем шарды, ноды, и он сам распределяет данные по ним). В случае с тем же Sphinx нам пришлось бы писать этот распределенный поиск самим, и не факт, что у нас получилось бы хорошо с первого раза. 

Читать далее
Total votes 17: ↑17 and ↓0 +17
Comments 9

Готовим Json в Apache NiFi или снова Jolt Transform

Reading time 7 min
Views 10K

Пример использования процессора JoltTransformJson в Apache NiFi. Можно рассматривать как небольшой туториал по использованию Jolt-спецификаций.

Читать далее
Total votes 6: ↑6 and ↓0 +6
Comments 3

Что за зверь такой AIOps?

Reading time 8 min
Views 4.4K

Привет, Хабр! Сегодня мы хотим поговорить про управление инфраструктурой с использованием AIOps, то есть на базе искусственного интеллекта и уже отработанных практик автоматизации. В этом посте вы найдете определение AIOps с точки зрения Gartner, а также плюсы технологии, которые отмечают эксперты для разных сфер — управления сервисами, HR и киберзащиты 

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 0

NiFi по красоте: HTTPS/LDAP/NiFi Registry/NiFi Cli + CI/CD

Reading time 21 min
Views 12K

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

Есть мануалы о том, как настроить связку NiFi и NiFi Registry со включенной аутентификацией и авторизацией. Но... используются самоподписанные серты.

Есть отдельные мануалы, как прикрутить коммерческий серт для NiFi; соответственно для NiFi Registry "кагбэ так же". Но взаимная аутентификация и авторизация будет происходить с использованием Two way SSL... а у нас же LDAP... и обеспечить потом связность сладкой парочки с использованием только внешнего каталога у вас на голой интуиции не получится.

Есть мануалы по связке с LDAP и для NiFi, и для NiFi Registry. Нооо... как и в предыдущем "но", возникают вопросы, как обойтись потом только LDAP'ом, потому что у нас же еще NiFi Cli, а он в LDAP не умеет.

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

Читать далее
Total votes 4: ↑4 and ↓0 +4
Comments 5

Психбольница в руках пациентов, или Инфраструктура как продукт

Reading time 14 min
Views 7.5K

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

Сегодня он поделится с нами, как можно сделать инфраструктуру более удобной и близкой к пользователям (в его случае — к разработчикам). А также о том, почему на инфраструктуру сейчас надо смотреть как на продукт и какие вызовы это приносит команде, но и что это дает в конечном итоге компании.

Читать далее
Total votes 21: ↑19 and ↓2 +17
Comments 1

Приёмы неблокирующего программирования: атомарные операции и частичные барьеры памяти

Reading time 8 min
Views 11K

В первой статье цикла мы познакомились с простыми неблокирующими алгоритмами, а также рассмотрели отношение “happens before”, позволяющее их формализовать. Следующим шагом мы рассмотрим понятие «гонки данных» (data race), а также примитивы, которые позволяют избежать гонок данных. После этого познакомимся с атомарными примитивами, барьерами памяти, а также их использованием в механизме “seqcount”.


С барьерами памяти некоторые разработчики ядра Linux уже давно знакомы. Первый документ, содержащий что-то похожее на спецификацию гарантий, предоставляемых ядром при одновременном доступе к памяти — он так и называется: memory-barriers.txt. В этом файле описывается целый зоопарк барьеров вместе с ожидаемым поведением многопоточного кода в ядре. Также там описывается понятие «парных барьеров» (barrier pairing), что похоже на пары release-acquire операций и тоже помогает упорядочивать работу потоков.


В этой статье мы не будем закапываться так же глубоко, как memory-barriers.txt. Вместо этого мы сравним барьеры с моделью acquire и release-операций и рассмотрим, как они упрощают (или, можно сказать, делают возможной) реализацию примитива “seqcount”. К сожалению, даже если ограничиться лишь наиболее популярными применениями барьеров — это слишком обширная тема, поэтому о полных барьерах памяти мы поговорим в следующий раз.

Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 3

Ретроэлектричка «Яхрома» (ЭР2К-980) — перезапуск «Лыжной стрелы» 1972 года

Reading time 6 min
Views 30K


В Советском Союзе спорт был в почёте. В зимний день многие семьи предпочитали проводить время за городом, катаясь на беговых и горных лыжах. А добраться до мест катания им помогали специальные электрички – «Лыжные стрелы». В последние годы традиция стала возрождаться – появились похожие поезда для любителей прогулок по лесу в Ленинградской области, специальные электрички и поезда в Апатиты (Кировск), на Розу Хутор, в Чугунаш (Шерегеш), Губаху и другие горнолыжные курорты страны.

В Москве восстановили и направление, и сам поезд — ретроэлектричку. Да-да, именно «ретро» – взяли старый состав и попытались восстановить атмосферу, царившую в советских поездах. Тут почти всё как в 80-х, включая меню, сахар и форму машиниста. Поедет поезд в Яхрому — это час с четвертью от Москвы, место, где можно на «Икарусе» доехать до одного из четырёх местных лыжных курортов. «Икарусы» тоже восстановили. При наличии билета на ретроэлектричку проезд в «Икарусах» бесплатный.

Мы поучаствовали в технической обкатке этой ретроэлектрички из 8 вагонов (в боевой версии планируется уже 10) и поговорили с теми, кто этот поезд делал. А поговорить было о чём, потому что это на самом деле совсем даже не чудом сохранившийся «круглоголовый» поезд 1972 года, который ждал своего часа в Петербурге. Это реконструкция из нескольких поездов (часть вагонов доставали аж в Сибири) и элементов интерьера со всей страны.

Читать дальше →
Total votes 61: ↑61 and ↓0 +61
Comments 68

Автоматизация аналитики Jira средствами Apache NiFi

Reading time 7 min
Views 4.9K
Приветствую, господа. Я Маша, мне 23, и я уже полгода изучаю и внедряю на практике Apache NiFi.

В тот час, когда технически Apache NiFi — мощное связующее звено между различными сервисами (осуществляет обмен данными между ними, по пути позволяя их обогащать и модифицировать), смотрю я на него с точки зрения аналитика. А все потому, что NiFi весьма удобный инструмент для ETL. В часности, в команде мы ориентируемся на построение им SaaS архитектуры.

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

Несмотря на посвящение данной статьи новичкам, считаю правильным и полезным если более опытные архитекторы (гуру, так скажем) отрецензируют ее в кромментариях или поделятся своими кейсами использования NiFi в различных сферах деятельности. Много ребят, включая меня, скажет вам спасибо.
Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Comments 13

Реализация epoll, часть 3

Reading time 6 min
Views 4.3K
В предыдущих двух материалах (часть 1, часть 2) этой серии речь шла об общих вопросах работы epoll, и о том, как epoll получает уведомления о новых событиях от файловых дескрипторов, за которыми наблюдает. Здесь я расскажу о том, как epoll хранит уведомления о событиях, и о том, как эти уведомления получают приложения, работающие в пользовательском режиме.


Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Comments 2

Пересадочный узел для птиц: раскаты Волги посреди пустыни

Reading time 12 min
Views 18K
Привет! На нашей офигенной планете есть такое место — низовья Волги. Если бы не Волга, там была бы натуральная пустыня, как в Монголии. Но там есть река, и течёт она не просто так, а по дну бывшего древнего моря.

В России далеко не все знают про это место, а вот для орнитологов всего мира это натуральная Мекка. Почему? Потому что тут огромный трансферный узел для птиц, и это роль места в планетарном масштабе. Птица, она как и самолёт, требует дозаправки. Если вы думаете, что они просто летят в тёплые края, то нет — им нужно где-то останавливаться, отдыхать, есть несколько дней (или даже недель) и лететь дальше. И обычное дерево на даче не подходит: нужно, чтобы было много места и много корма, и при этом хищники не особенно злобствовали. Чтобы вы понимали масштабы узла — просто знайте, что тут за год «пересаживается» около 20 миллионов особей.

Нормальные реки разбиваются на 2-3 протока, а вот Волга разбивается сначала на сотни, а потом вообще превращается в огромную водную поверхность глубиной около метра. Представьте: взяли кусок пустыни размером в полтора Кипра (13 900 км2) и залили его водой. Получилось вот так:



Глубина там небольшая, растительность спокойно торчит над водой, в местах, где ещё можно различить рукава — куча островков и чего-то похожего, а ниже уже всё это постепенно переходит в Каспийское море. Конвергентные вещи можно увидеть в дельте Меконга и в мангровых рощах на островах Микронезии. Поэтому да, в Астрахани, проплывая протоками, можно словить много вьетнамских флешбеков.



Вокруг птиц построили астраханский биосферный заповедник. На его примере я хочу показать, как офигенно работает наука с местными жителями. А то я прошлый раз прямо восхищался, как в Намибии дружат со слонами и леопардами, а у нас под носом происходят не менее интересные вещи.
Total votes 115: ↑114 and ↓1 +113
Comments 53

Как Лёха стал инженером по SRE: выдуманная история про невыдуманные проблемы

Reading time 10 min
Views 11K

Направление Site Reliability Engineering становится всё более популярным. Хайп не на пустом месте: проблемы и задачи, которые решает SRE, действительно насущны для многих компаний.

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

Через историю Лёхи вы узнаете о задачах, которые решает SRE, и причинах, по которым для решения этих задач пришлось выделять отдельный класс инженеров.

Читать дальше
Total votes 31: ↑30 and ↓1 +29
Comments 14

Распределенное обучение и вычисления в сети. Доклад Яндекса

Reading time 15 min
Views 5K
Все эксперты по сетям знакомы с принципом end-to-end, когда специфичные для конкретной задачи фичи реализовываются на конечных нодах, а промежуточные ноды должны только передавать данные, не взаимодействуя с ними. Но есть случаи, когда полезны вычисления внутри сети — с использованием устройств сети, занятых передачей трафика. Один из примеров таких задач — распределенный ML. В докладе Дмитрий Афанасьев дал краткое введение в особенности вычислений для распределенного ML, паттерны обмена данными и коллективные операции. Вторая половина доклада — о том, как редукция увеличивает производительность при обучении, и о некоторых реализациях.

— Меня зовут Дмитрий Афанасьев, я сетевой архитектор Яндекса. И я сегодня расскажу про достаточно экзотические — по крайней мере пока — технологии. Но думаю, что они будут становиться менее экзотическими, и шансы с ними встретиться возрастают.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 2

Почему бизнес хочет DevOps и что нужно знать инженеру, чтобы говорить с ним на одном языке

Reading time 13 min
Views 12K
Последние несколько лет мы при каждом удобном случае снова и снова обсуждаем, что же такое DevOps. Это уже порядком надоело, но раз всё еще происходит, значит есть проблема — проблема взаимодействия бизнеса и инженеров.

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



Я не хочу рассуждать о том, что такое DevOps и какое его понимание более правильное. Мне интересно проследить за эволюцией процессов в IT и разобраться, что бизнес хочет получить от внедрения DevOps, что это значит для инженеров и как нам быть на одной волне.
Читать дальше →
Total votes 33: ↑31 and ↓2 +29
Comments 1

«Однорукий интерфейс»: баг или фича, позволяющая Делимобилю отнимать деньги у пользователей?

Reading time 10 min
Views 61K
История о том, как с помощью одной нехитрой уловки в логике работы мобильного приложения (и не только) Делимобиль занимается перекладыванием ответственности за автомобиль и выписывает крупные штрафы за то, чего пользователь не совершал.

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



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

Как говорится, времена меняются. Бандиты существует теперь в специализированных игровых зонах. А на смену им приходят интерфейсы, у которых вместо одного рычага одна кнопка, и с которыми мы также взаимодействуем одной рукой, только уже через смартфон.
Читать дальше →
Total votes 229: ↑218 and ↓11 +207
Comments 448

6 ошибок мышления, из-за которых вы остаетесь на нелюбимой работе

Reading time 8 min
Views 70K

В начале 2020 года специалисты сервиса по поиску работы «Работа.ру» провели социальный опрос и выяснили, что в следующие 12 месяцев 74% россиян хотят заняться вопросом нового трудоустройства. 53% респондентов рассказали, что недовольны текущим уровнем заработной платы. Но почему в итоге ничего не происходит?

Лишь малая часть из тех, кто планирует сменить место работы, в конечном итоге делает это. Оказывается, в большинстве случаев основная причина бездействия — когнитивные ошибки. Мы решили разобраться, что это и из-за каких именно ошибок в мышлении люди отказываются менять карьеру и добиваться новых высот.

Читать далее
Total votes 52: ↑41 and ↓11 +30
Comments 36

Восстановление данных в современной инфраструктуре: как один админ бэкапы настраивал

Reading time 15 min
Views 13K

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

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

Я не буду говорить о себе, а расскажу чужую историю. Все имена в ней выдуманные, а совпадения — случайны. Её главный герой — человек по имени Савелий. И, по случайному совпадению, он админ, как и я.

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

Читать далее
Total votes 28: ↑27 and ↓1 +26
Comments 14

Поиск родственников через тест ДНК. Часть 3 – Сдача теста и отправка по почте

Reading time 6 min
Views 13K
Ранее я рассказал о ДНК-тестировании для генеалогии и о том, как выбрать тест. Теперь немного расскажу о том, как сделать тест и как его отправить обратно. Уже потом будут получение результата и его анализ, но сначала надо купить сам тест, сделать забор материала и отправить его в лабораторию.



Разновидности тестов ДНК по способу доставки


Этим вопросом надо озадачиться ещё в процессе выбора теста, но даже поняв общие принципы, можно упустить некоторые нюансы. Попробуем обсудить их ниже.

Тесты можно условно поделить на:

  • заказ в России, за рубли, с доставкой на дом («Генотек» или «Атлас» например)
  • заказ из-за границы, за валюту, через своё почтовое отделение («FamilyTree DNA», «MyHeritage» например)
  • заказ из-за границы, за валюту, через посредника («Ancestry», «23andMe» и некоторые другие)

Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 0

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity