Pull to refresh
24
0
Антон Зубарев @aszubarev

User

Send message

Сетевые плагины (CNI) в Kubernetes

Level of difficultyHard
Reading time14 min
Views5.4K

Сеть Kubernetes — это сложная и увлекательная тема, наполненная множеством подвижных частей. Одним из ключевых компонентов, обеспечивающих сетевую связность и взаимодействие различных элементов кластера, является CNI (Container Networking Interface).

CNI  - это спецификация, разработанная CNCF (Cloud Native Computing Foundation) для стандартизации процесса подключения сетевых интерфейсов к контейнерам. CNI обеспечивает гибкость и адаптивность сетевой инфраструктуры, позволяя интегрировать различные сетевые решения в Kubernetes.

Давайте подробнее разберем, что такое Container Network Interface?

Читать далее
Total votes 19: ↑17 and ↓2+18
Comments2

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

Reading time8 min
Views72K

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

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

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

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

PostgreSQL 16. Снимки данных. Часть 4

Level of difficultyMedium
Reading time5 min
Views2.9K

Данная статья является продолжением: PostgreSQL 16. Страницы и версии строк. Часть 3.

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

Читать далее
Total votes 10: ↑10 and ↓0+12
Comments0

Продираемся сквозь сети в Kubernetes: Load-Balance, BGP, IPVS и все такое прочее

Level of difficultyMedium
Reading time6 min
Views7.6K

Привет, Хабр! Мы в команде Nova Container Platform сделали перевод статьи для тех, кто хочет разобраться, как строить сети в Kubernetes. Делюсь им, надеюсь, вам будет полезно.

В мире Kubernetes мы каждый день слышим, как ipvs сравнивают с iptables, или, скажем, pureLB с metalLB, или же виртуальную топологию (overlay) с физической (underlay), или Nodeport с Loadbalance, и т.д. Сейчас я вам все растолкую.

Читать далее
Total votes 10: ↑10 and ↓0+14
Comments0

[В закладки] 28 фишек Telegram, о которых знают не все

Reading time9 min
Views27K

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

Читать далее
Total votes 30: ↑19 and ↓11+15
Comments21

Поднимаем динамические окружения для stateless- и stateful-сервисов

Level of difficultyEasy
Reading time14 min
Views4.2K

На связи Игорь Латкин, управляющий партнер и системный архитектор в KTS

Мы на своём опыте разобрались в развертывании stateless- и stateful-сервисов, и теперь хотим поделиться с вами. Мы в KTS не раз создавали подобные инфраструктуры, перепробовали разные решения и выясняли, как построить эффективные процессы.

Сегодня мы поговорим о динамических окружениях для stateless- и stateful-сервисов, обсудим особенности и проблемы, которые могут возникнуть и возникали у нас.

Читать далее
Total votes 46: ↑45 and ↓1+52
Comments3

Создание аналога Google Photos на собственном сервере

Level of difficultyEasy
Reading time4 min
Views29K

Создание собственного облачного хранилища с автоматическим менеджером фотографий.

Изучение опенсорс софта, нацеленного на автоматический менеджинг фотографий, сравнение софта между собой, установка на тестовый сервер, просмотр с разных устройств.

Читать далее
Total votes 22: ↑20 and ↓2+24
Comments80

В сотый раз об эргономике рабочего места (на личном опыте)

Level of difficultyEasy
Reading time7 min
Views47K

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

Читать далее
Total votes 55: ↑53 and ↓2+60
Comments114

Состояние Spring в 2024 году

Level of difficultyEasy
Reading time17 min
Views11K

Команда Spring АйО перевела важнейший документ для Spring-разработчиков!

В начале июня компания VMWare, владеющая Spring, опубликовала результаты исследования, в котором приняло учатие более 1,500 разработчиков по всему миру. Отчёт получился действительно интересным и всеобъемлющим. Были рассмотрены как базовые темы, такие как выбор архитектурных подходов и типов API, так и продвинутые, такие как компиляция в Native Image и использование Spring вместе с Kubernetes.

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

Двухфакторная аутентификация (OTP) в OpenVPN с использованием FreeRADIUS и LDAP

Level of difficultyHard
Reading time15 min
Views3.8K

Существующие варианты реализации 2FA для OpenVPN основываются на модуле google-authenticator-libpam для OTP‑кодов и плагинов аутентификации OpenVPN libpam-radius-auth, openvpn-plugin-auth-pam, openvpn-auth-ldap и имеют ряд недостатков как для пользователя так и для администратора.

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

использовать для аутентификации пользователей логин и пароль из LDAP‑каталога.

удобно вводить логин, пароль, OTP в отдельные независимые поля интерфейса, а не после пароля или вместо пароля.

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

обеспечить отказоустойчивость, возможность использования нескольких серверов аутентификации.

использовать LDAP‑каталог для централизованного управления пользователями.

хранить seed‑значения для генератора OTP независимо от того, какой LDAP‑каталог используется (ActiveDirectory, FreeIPA, lldap или другие).

передать функцию создания, обновления seed‑значений для генератора OTP техподдержке без необходимости подключаться к серверам OpenVPN.

использовать на смартфонах любое приложение для генерации OTP (Яндекс.Ключ, FreeOTP Authenticator и др.).

не зависеть от работоспособности облачных провайдеров 2FA.

Система рассчитана на следующие сценарии использования:

доступ пользователей через OpenVPN в инфраструктуру компании.

резервный самодостаточный безопасный удаленный доступ в инфраструктуру для администраторов на случай аварий или сбоев.

В обоих сценариях:

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

для аутентификации используется логин, пароль и OTP.

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

Архитектура Flutter проекта простым языком. Clean Arch (MVVM, DI, Bloc, Inversion of Control)

Level of difficultyMedium
Reading time7 min
Views4K

Привет! В этой статье я рассказываю о чистой архитектуре и о паттернах для нее простыми словами. Где, когда и как применять тот или иной паттерн?

MVVM
Inversion of Control
Dependency Injection
Service Locator

Так же вы узнаете как можно применять ViewModel вместе со своими стейт менеджерами (Bloc), избавив свой виджет от ненужного.

Читать далее
Total votes 3: ↑2 and ↓1+3
Comments3

Хранимые процедуры рудимент или еще актуальны?

Level of difficultyEasy
Reading time5 min
Views11K

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

Читать далее
Total votes 30: ↑11 and ↓19-4
Comments209

Решение задачи с собеседования Middle of the Linked List [+ ВИДЕО]

Level of difficultyEasy
Reading time3 min
Views7K

Всем салют! Давайте решим задачу "Middle of the Linked List"

Дан указатель head на начало односвязного списка, нужно вернуть средний узел списка.

Если средних узлов два, нужно вернуть второй средний узел.

Читать далее
Total votes 13: ↑10 and ↓3+9
Comments166

Как расслабиться инженеру на работе при помощи Python?

Level of difficultyEasy
Reading time4 min
Views12K

Всем привет! Меня зовут Владимир Ганзюк

Работаю инженером НСИ и изучаю для себя C#, но не сталкиваясь с Python, наткнулся я как-то случайно на одну очень интересную библиотеку Pymorhp.

Pymorph – морфологический анализатор для русского языка, использует словари из OpenCorpora. Исходный код можно получить на github. Документация к библиотеке написана достаточно хорошо.

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments17

OCSP всё?

Level of difficultyEasy
Reading time3 min
Views12K

Google УЦ Let’s Encrypt предупредил, что намерен «как можно скорее» прекратить поддержку протокола проверки статуса TLS-сертификата Online Certificate Status Protocol (OCSP) и впредь поддерживать только Certificate Revocation Lists (CRLs).
Читать дальше →
Total votes 12: ↑7 and ↓5+6
Comments13

Продвинутые сетевые функции Kubernetes

Level of difficultyMedium
Reading time13 min
Views5.9K

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

Читать далее
Total votes 22: ↑18 and ↓4+19
Comments3

Различные вычисления, многопоточность, асинхронность и мультипроцессность в Python

Level of difficultyMedium
Reading time9 min
Views10K

Всем привет! Меня зовут Дмитрий Первушин, я лидер Python-компетенций трайба ИСУ в Сбере. 

Эта статья рассчитана на людей, которые уже знакомы с Python, хотя бы на уровне junior+. Я объясню, какие есть отличия и особенности в многопоточности, асинхронности и мультипроцессорности в Python, где и когда они используются. Как говорится в пословице: «Всё познаётся в сравнении», именно в таком стиле я подготовил примеры. Кроме этого, буду специально делать ошибки и рассматривать неправильные подходы, чтобы можно было сразу разобраться, убедиться и запомнить, почему так делать нельзя и какой другой подход в этом случае нужно использовать.

Читать далее
Total votes 31: ↑28 and ↓3+38
Comments17

Кэш второго уровня Hibernate для чайников

Level of difficultyEasy
Reading time6 min
Views6.7K

Будучи студентом или стажером, вы наверняка столкнетесь с подобной задачей — включить кэширование сущностей, чтобы сэкономить на обращениях к базе данных. Эта статья ставит перед собой цель упростить эту задачу и подробно показать, как настроить базовый кэш в Hibernate 6.

Читать далее
Total votes 11: ↑10 and ↓1+14
Comments9

Лицемерие найма: как HR-ы сами не соблюдают свои же требования?

Level of difficultyEasy
Reading time5 min
Views39K

В последние годы требования HR-ов к кандидатам становятся все более строгими. С одной стороны, они оправданы, но с другой – в них как будто нет смысла, потому что сами HR-ы не могут соответствовать тем правилам, которые они же и устанавливают.

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

Читать далее
Total votes 90: ↑81 and ↓9+89
Comments90

История оптимизации Python сервиса: пара простых системных улучшений

Level of difficultyMedium
Reading time9 min
Views3.6K

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

Читать далее
Total votes 22: ↑21 and ↓1+24
Comments6

Information

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

Specialization

Backend Developer, Software Architect
Lead
Git
SQL
Docker
Python
Django
RabbitMQ
Kubernetes
Database
Designing application architecture
Creating project architecture