Pull to refresh
19
0
Фёдор Аксёнов @faxenoff

User

Send message

Оптимизация запросов в ClickHouse с помощью создания цепочки материализованных представлений

Reading time10 min
Views621

В ClickHouse материализованные представления (materialized views) являются механизмом, автоматически выполняющим запросы к исходным таблицам при поступлении новых данных. 

Материализованное представление (МП) - это специальный тип таблицы, содержащей результат выполнения запроса к исходным данным. Этот результат фактически представляет собой кэшированное представление данных из исходных таблиц. Одной из ключевых особенностей МП в ClickHouse является их автоматическое обновление. При поступлении новых данных в исходные таблицы МП обновляется, автоматически пересчитываясь в соответствии с определенным запросом.

Читать далее
Total votes 7: ↑8.5 and ↓-1.5+10
Comments0

Как ELK довел нас… до Vector.dev и Clickhouse

Level of difficultyHard
Reading time7 min
Views3.5K

Меня зовут Дима Синявский, я SRE-инженер в Vi.Tech — это IT-дочка ВсеИнструменты.ру. В этой статье расскажу я вам о том как мы развивались и с нами развивалась наша система логирования. Почему вам нужен Vector.dev + Clickhouse для хранения и когда это выгодно.

Когда компания была маленькой нам хватало и блокнота, чего сейчас уже не скажешь.
У нас 931 000 пайплайнов в месяц, 4 кластера Kubernetes: от 170 до 190 нод в каждом, и 200 ГБ логов ежедневно.

cat elk-vector.md | more // Прочитать...
Total votes 19: ↑21 and ↓-2+23
Comments25

Прозрачно кешируем несколько Container Registry в CRI-O и Podman

Reading time13 min
Views15K

Возможно, вы уже активно используете CRI-O и Podman, а может только смотрите на альтернативы Docker с осторожностью. Но, как бы там ни было, альтернативные решения создают конкуренцию монополисту Docker и предлагают новые и востребованные улучшения. Одна из таких особенностей, это исключение Docker Hub как корневого и основного источника образов контейнеров. Таким образом, снимается привязка к поставщику и появляются новые возможности, а одной из таких мы и поговорим.

Это инструкция по выбору решения и настройке прозрачного кеширования множества реестров контейнеров для CRI-O, Podman, Buildah, Skopeo и прочих инструментов, работающих с образами контейнеров OCI и использующих общую конфигурацию containers/common.

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

CSS @layer — полное руководство по каскадным слоям

Reading time26 min
Views17K

Полным руководством о том, что такое каскадные слои, какой у них синтаксис, зачем они могут понадобиться и как поддерживаются браузерами делимся к старту курса по Fullstack-разработке на Python.

Читать далее
Total votes 11: ↑7 and ↓4+3
Comments3

werf vs Docker. Чем лучше собирать образы

Reading time13 min
Views13K

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

Нас нередко спрашивают: зачем собирать образы с werf, если уже есть Docker с Dockerfile? Обычно мы отвечаем, что werf — не только про сборку. Утилита участвует в полном цикле CI/CD для доставки приложения в Kubernetes, а Docker при этом тоже используется, но как вспомогательный инструмент. Понятно, что такого объяснения недостаточно, нужны подробности.

Этот материал главным образом для тех, кто мало или совсем не знаком с werf, но знает Docker и хотя бы немного работал с ним. Для начала, как и в случае с Helm, попробуем разобраться, есть ли смысл в противопоставлении двух решений.

Читать далее
Total votes 41: ↑40 and ↓1+39
Comments19

Неадекватная стоимость исходящего трафика у некоторых облачных хостеров

Level of difficultyMedium
Reading time6 min
Views7.3K


Пользователи часто поднимают вопрос неадекватной стоимости исходящего трафика (egress) у отдельных облачных провайдеров.

Если обычные хостеры не тарифицируют этот трафик, то некоторые другие сервисы устанавливают специальные тарифы. Как показывает практика, это может стать неприятным сюрпризом для клиентов.
Читать дальше →
Total votes 29: ↑34 and ↓-5+39
Comments18

Выжимаем максимум из PostgreSQL

Level of difficultyMedium
Reading time14 min
Views14K

Привет, Хабр! Меня зовут Максим, я работаю тестировщиком оборудования в Selectel Lab. В лаборатории мы занимаемся тестированием нового оборудования для дата-центров. О том, как мы измеряли производительность PostgreSQL на разных конфигурациях — под катом!
Читать дальше →
Total votes 48: ↑55.5 and ↓-7.5+63
Comments21

Настройка протокола mKCP в 3X-UI и X-UI для маскировки трафика прокси-сервера под BitTorrent, FaceTime и WebRTC

Level of difficultyEasy
Reading time5 min
Views2.9K

Сегодня мы поговорим о настройке подключения к прокси-серверу по протоколу mKCP в известных web-панелях X-UI и 3X-UI. Про mKCP, как и про многие другие актуальные на сегодняшний день прокси- и VPN-протоколы я недавно рассказывал в статье "Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному" (она заблокирована Роскомнадзором на территории РФ, но открывается на Хабре через иностранный прокси или VPN). Про сервера (так же в народе называемые "панелями") X-UI и 3X-UI рассказывал всем известный юзер MiraclePtr в своей статье "3X-UI: Shadowsocks-2022 & XRay (XTLS) сервер с простой настройкой и приятным интерфейсом". Ну а мы сегодня совместим и то и то.

Первый вопрос, который может возникнуть: Зачем?
Все популярные недавние статьи описывали настройку протокола VLESS c XTLS-Reality, суть которых в том, что прокси-сервер искусно маскируется под какой-то популярный сайт, имитируя его поведения и представляясь его настоящим сертификатом. На сегодняшний день это по-прежнему самое мощное и продвинутое средство обхода блокировок с помощью прокси. VLESS. Но в мире ничего не идеально, и этот вариант имеет пару недостатков...

Читать далее
Total votes 14: ↑14.5 and ↓-0.5+15
Comments17

Основы работы с хранилищами в Kubernetes

Level of difficultyEasy
Reading time6 min
Views4.7K

Привет, Хабр!

В Kubernetes принято разделение хранилищ на два основных типа: постоянные и временные.

Постоянные хранилища (PV) представляют собой сегменты дискового пространства, которые могут быть подключены к подам и сохранять данные даже после перезапуска или удаления контейнеров. Эти объемы предоставляются через механизм Persistent Volume Claims, который позволяет юзерам и приложениям запрашивать хранилище определенного размера и класса, абстрагируясь от физической реализации хранилища.

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

Классификация хранилищ в Kubernetes не ограничивается только этим разделением. Существуют различные StorageClasses, которые позволяют определять классы хранилищ с разными характеристиками.

Также в Kubernetes реализован контейнерный интерфейс хранения.

Основы всего из этого рассмотрим в этой статье.

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

Путешествие в yarn

Level of difficultyMedium
Reading time14 min
Views3.1K

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

Наши бекендеры решили настроить резервную инфраструктуру на базе ресурсов «Яндекса». Мы, фронтендеры, задумались над альтернативой npm registry — источнику библиотек, фреймворков и других полезных в работе штук.

От нашей изначальной идеи — создания локального registry — мы пришли к yarn 2+. О том, как так получилось, и с чем мы столкнулись на этом тернистом пути, я сегодня и расскажу.

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments13

Трансляция видео посредством P2P-сетей

Level of difficultyMedium
Reading time10 min
Views2.5K

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

Я, как разработчик сервиса вебинаров, постараюсь в этой статье помочь разобраться с этими проблемами, по средствам P2P-сетей.

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

50 вопросов для опроса удовлетворённости клиентов, для вашего вдохновения

Reading time15 min
Views12K

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

В этой статье мы сосредоточим внимание на том, как эффективно измерить удовлетворенность клиентов через опросы. Мы представим 50 вдохновляющих вопросов для опроса удовлетворенности, рассмотрим современные метрики, такие как NPS, CSI, CES и CSAT, и обсудим, как избежать распространенных ошибок при проведении опросов. Кроме того, мы предложим обзор платформ для проведения опросов, чтобы вы могли выбрать наиболее подходящий инструмент для вашего бизнеса. Эта статья станет вашим надежным руководством в мире опросов удовлетворенности клиентов.

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments0

В погоне за заменой Redis

Reading time11 min
Views18K

21 марта Redis Ltd. объявила, что, начиная с Redis 7.4, ее «in-memory data store» будет выпускаться под несвободными лицензиями с доступным (source-available) исходным кодом. Новость малоприятная, но вполне ожидаемая. Необычно в этой ситуации обилие альтернатив для тех, кто хочет остаться со свободным ПО: есть как минимум четыре варианта замены, включая уже существующий форк под названием KeyDB и недавно анонсированный проект Valkey от Linux Foundation. Вопрос теперь в том, что предпочтут пользователи, провайдеры и создатели дистрибутивов Linux.

Читать далее
Total votes 34: ↑34.5 and ↓-0.5+35
Comments14

Как я отрендерил миллион строк в React

Level of difficultyMedium
Reading time9 min
Views9.3K

Недавно я столкнулся с задачей, известной как one billion row challenge. Два аспекта этого вызова меня заинтриговали:

1. Каковы будут последствия, если я попробую решить этот вызов на фронтенде?

2. Удастся ли мне это?

Хотя я не уверен в возможности визуализировать миллиард строк в таблице, цифра в миллион кажется вполне достижимой. Узнав о таком интересном вызове, я решил заняться маленьким проектом, целью которого было отображение миллиона строк в React.

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

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

Авторизация для приложения в облаке

Level of difficultyEasy
Reading time6 min
Views2.9K

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

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

Паттерны отказоустойчивости приложений в Kubernetes

Reading time22 min
Views12K
Балансировщики падают, контроллеры зависают, а дата-центры атакуют экскаваторы. Это нормальная история. Мы живём в мире, где нет ничего надёжного на 100 %, а любой бит в планке оперативной памяти может внезапно перещёлкнуться из-за пролетевшей космической частицы.

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

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


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

Как я чтение всего контента на RSS переводил

Level of difficultyEasy
Reading time13 min
Views5.6K

TL;DR В статье рассказывается о том, как мне удалось перевести чтение лент в ВКонтакте**, Telegram, Facebook*, Instagram**, Reddit и почтовых рассылок в единый сервис InoReader. Причем почти без написания своих велосипедов.

Подписаться на RSS
Total votes 41: ↑40.5 and ↓0.5+40
Comments32

Операторы PostgreSQL для Kubernetes. Как мы выбирали идеальный вариант для организации системы DBaaS

Level of difficultyMedium
Reading time4 min
Views4K

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

Чтобы не изобретать велосипед, мы решили рассмотреть известные операторы, позволяющие разворачивать базы данных PostgreSQL в Kubernetes и управлять ими.

Читать далее
Total votes 9: ↑7 and ↓2+5
Comments20

Инъекция секретов из Vault в поды используя сайдкары Kubernetes

Reading time8 min
Views27K

Мы рады объявить о новой интеграции Kubernetes, которая позволяет приложениям без встроенной в HashiCorp Vault нативной логики использовать статические и динамические секреты, получаемые из Vault. Она основана на новом инструменте под названием vault-k8s, который использует Kubernetes Mutating Admission Webhook для перехвата и дополнения специально аннотированной конфигурации подов для инъекции секретов с помощью Init и Sidecar контейнеров.

Приложениям нужно заботиться только о получении секрета по определённому пути в файловой системе, а не об управлении токенами, подключении к внешнему API или другим механизмам прямого взаимодействия с Vault.

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

Как создавать Kubernetes секреты из Vault, используя external-secrets-operator

Reading time6 min
Views8.1K

Бывают случаи, когда инженеры хранят секретные данные, ключи, токены в открытом виде или в переменных Gitlab. В Kubernetes для хранения данных, которые нежелательно показывать широкому кругу лиц, предусмотрены секреты.

В этой статье предлагаю рассмотреть безопасный способ передавать, синхронизировать, интегрировать секреты напрямую из Vault в Kubernetes – с помощью метода аутентификации AppRole, используя external-secrets-operator.

Читать далее
Total votes 18: ↑16 and ↓2+14
Comments13
1
23 ...

Information

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