gram news
Аватар канала Сергей Озеранский

Сергей Озеранский

@sergeiozeranskii

О разработке, DevOps, DevSecOps, архитектуре, безопасности. Без воды и скучных теорий - только реальный мой опыт, инсайты из практики и немного жизни.

2,350подписчиков

Открыть канал

Последние посты

  • Сергей Озеранский

    9 сент., 08:58

    22 октября Kubernetes-сообщество встречается офлайн в Москве!Кому будет интересна конференция: – DevOps- и SRE-инженерам; – специалистам по Kubernetes и облачной инфраструктуре; – платформенным инженерам; – архитекторам и техническим руководителям; – всем, кто занимается эксплуатацией и развитием инфраструктуры.Что будет в течение дня? 🎤 Доклады Про эксплуатацию Kubernetes, observability, AI и облачную инфраструктуру, Service Mesh, безопасность, экономику платформ, bare metal и ЦОДы. ⚡️ Активности партнеров Дополнительная возможность пообщаться с участниками конференции и включиться в интерактивные форматы от партнеров. 🍻 Афтепати После основной программы нетворкинг продолжится уже в неформальной обстановке.А еще на Kuber Conf можно не только прийти как участник, но и выступить! До 15 сентября принимаются заявки на доклады — делитесь практическими кейсами и экспертизой, которые
    Иллюстрация к посту канала Сергей ОзеранскийИллюстрация к посту канала Сергей Озеранский
  • Сергей Озеранский

    6 сент., 17:23изменён

    Леджер: журнал, которому можно веритьБаланс говорит, сколько у клиента денег. Леджер объясняет, откуда взялась эта цифра. Сегодня про него: как устроена таблица, почему в неё нельзя записать неверную строку и что происходит, когда одну и ту же операцию присылают дважды.Только добавлениеЛеджер — таблица, в которую можно только вставлять. У репозитория нет методов update и delete для неё. Ошибку в леджере не исправляют, её объясняют новой записью.В каждой строке: тип операции, сумма, баланс до, баланс после, ключ идемпотентности, ссылка на источник (джоба, платёж, возврат) и кто это сделал.Семь типов операцийТри уменьшают баланс: debit — списание за джобу, refund — возврат клиенту через платёжного провайдера, reversal — зарезервирован для внутренних отмен.Три увеличивают: credit — пополнение, bonus — начисление сверх оплаты,
  • Сергей Озеранский

    6 сент., 17:01изменён

    Баланс: как хранить деньги клиента и не ошибитьсяВ прошлом посте разделили биллинг и леджер: баланс разрешает операции, леджер их объясняет. Сегодня про первую половину — таблицу баланса.Одна строка на клиентаБаланс — это отдельная таблица с одной строкой на аккаунт. В ней текущий остаток и два накопительных счётчика: сколько всего зачислено и сколько всего потрачено. Счётчики не участвуют в решениях, они для дашборда и аналитики. Решает только остаток.В чём хранитьНе во float. Это база: 0.1 + 0.2 в двоичной арифметике не равно 0.3. Баланс меняется каждые несколько секунд работы каждой джобы, это тысячи мелких списаний, и ошибка округления в нём накапливается.Не в центах. Ставка раннера — доли цента за минуту, а списываем мы за секунды. В центах такая операция либо округляется в ноль, либо требует накопителя дробных остатков рядом с балансом.Мы храним целое число
    4065211Открыть в Telegram
  • Сергей Озеранский

    6 сент., 16:46изменён

    Как устроены биллинг и леджер в tempus.buildtempus.build продаёт минуты CI-раннеров по предоплате. Списание посекундное, ошибки в деньгах недопустимы, а каждая финансовая операция должна быть прозрачна для аудита. Начну с теории, а в следующем посте покажу, как это реализовано.Немного теорииВ заголовке два слова: биллинг и леджер. Это два связанных инструмента, но решающих разные задачи. И прежде чем разбирать их, важно развести ещё одну вещь: биллинг не проводит платежи.Проведением платежей занимается платёжный провайдер: авторизует карту, списывает деньги, делает расчет. Для tempus.build это внешняя система. Биллинг узнаёт от неё только факт: "от клиента X пришло N денег" — и с этого момента начинается его работа.Биллинг — это тарификация и учёт. Он знает, сколько стоит секунда раннера, зачисляет пополнения, списывает за выполненные джобы и отвечает на вопрос "сколько у
    4663221Открыть в Telegram
  • Сергей Озеранский

    2 сент., 13:05

    Зато точно. Или не очень? 😅Пишите, в чём храните например, деньги или баллы: float, decimal, integer в минимальных единицах или свой вариант.
    Иллюстрация к посту канала Сергей ОзеранскийИллюстрация к посту канала Сергей Озеранский
  • Сергей Озеранский

    31 авг., 02:27

    Если вы все еще хотите разбираться в программировании, а не просто просто нажимать “Yes” в консоле, то нашел интересный репозиторий https://github.com/faif/python-patternsЭто коллекция паттернов проектирования и идиом на Python.Глобально, ничего нового там нет. Это в основном классические паттерны «банды четырёх», просто собранные на примерах и в одном месте. Так что, если хочется развиваться, то такое, я считаю, нужно знать даже с LLM.
    GitHubGitHub - faif/python-patterns: A collection of design patterns/idioms in PythonA collection of design patterns/idioms in Python. Contribute to faif/python-patterns development by creating an account on GitHub.
    9761164Открыть в Telegram
  • Сергей Озеранский

    28 авг., 06:25

    Хочется обнять всех, кому сейчас тяжело из-за того, что происходит с интернетом.Я не в РФ, но сталкиваюсь с этим регулярно. Чуть больше года назад был в Мск месяц и страдал. И даже близко не представляю, насколько это тяжко сейчас. Держитесь 🫂
    1,0902621Открыть в Telegram
  • Сергей Озеранский

    28 авг., 04:41изменён

    Значете, что меня в последнее время все более и более раздражает. То, что приходится решать проблемы, которых раньше и быть не могло, при решении очень простых, базовых, понях задач.Да, это снова пост про яндекс облако. При всем моем уважении к поддержке яндекс (они классно работают, нет претензий), я выполняя казалось бы обычные задачи, сталкиваюсь с необычнми проблеми. И да, не всегда виноват яндекс облако, но так как я работаю с ним, то и упоминаю его.Ситуация такая:Собрал лендинг: Astro (SSG, чистая статика), выкатил на объектное хранилище с website-hosting + CDN перед ним. Открывается мгновенно, Lighthouse зелёный, OG-теги на месте. Все ок.Кидаю ссылку в Telegram - превью не появляется. Открываю Facebook Sharing Debugger - HTTP 403 и приписка "This response code could be due to a robots.txt block. Please allowlist facebookexternalhit on your sites robots.txt config to
    YouTubeУблюдки хреновы я пришел на перестрелку... | ЛегендаОтрывок из фильма "Легенда" 2015 года, с Томом Харди в главной роли. Поддержать: https://vk.cc/c700Gt О фильме: Фильм расскажет историю близнецов Реджи и Ронни Крэй, культовых фигур преступного мира Великобритании 1960-х. Братья возглавляли самую влиятельную…
  • Сергей Озеранский

    27 авг., 06:10

    Сканнеры долбятся. Домену 1 сутки.
    Иллюстрация к посту канала Сергей ОзеранскийИллюстрация к посту канала Сергей Озеранский
  • Сергей Озеранский

    26 авг., 16:15

    Значит открываем max.ru, логинимся. Во время логина появляется каптча, нажимаем ссылку Terms Of Use и вуаля. Еще один найденный баг...
    Иллюстрация к посту канала Сергей ОзеранскийИллюстрация к посту канала Сергей ОзеранскийИллюстрация к посту канала Сергей Озеранский
  • Сергей Озеранский

    26 авг., 05:08

    Есть такое мнение, что испанцы медленные и вообще пофигисты. Они действительно в чем-то более простые и расслабленные, это общий южный вайб. У меня нет статистики, кто бездельник, а кто нет. Но сфера услуг, по моим ощущениям, может где-то быть ниже, чем та, к которой мы привыкли. Начиная с самого простого — тебе просто не отвечают или долго обещают что-то сделать. Поэтому славяне любят обращаться к славянам. Это дороже, но и результат другой. Хотя, пожив в Испании уже два года, я понял, что не везде нужно идеально. Иногда нужно просто «необходимо и достаточно» (как и в программировании).Но вот к чему я. Я хочу привести два примера, и сразу не поймешь, где испанцы, а где русские.1. Мне нужен юридический адрес — такая опция есть, вполне легальная, и я могу его арендовать для корреспонденции и указания в официальных документах. Обратился в компанию, специализирующуюся на этом. Первый
  • Сергей Озеранский

    25 авг., 15:08изменён

    Вот такая вот хйня, собачка! 🤷‍♂️
    Иллюстрация к посту канала Сергей ОзеранскийИллюстрация к посту канала Сергей Озеранский
    9651742Открыть в Telegram
  • Сергей Озеранский

    23 авг., 08:35

    То, чего ожидал вообще меньше всего - документация Python доступна на русском языке. https://blog.python.org/2026/08/the-python-documentation-is-now-available-in-russian/
    Python InsiderThe Python documentation is now available in Russian! | Python InsiderThe official blog of the Python core development team.
  • Сергей Озеранский

    21 авг., 06:14

    Короче, это казино 🎰 Yandex.Cloud подтверждает, что это фильтрация трафика на уровне систем DPI или ТСПУ со стороны магистральных операторов связи. Единственное что остается перебирать адреса, так как публичный IP-адрес можно получить только автоматически
    1,16062Открыть в Telegram
  • Сергей Озеранский

    20 авг., 13:23изменён

    Помните, я писал, что нас ждут последствия от всего, что происходит с интернетом в России? И что я уже попадал на IP, с которого у VM нет исходящего доступа в глобальный интернет (Cloud.ru)? Вчера словил ещё один кейс, который снова подтверждает эти рассуждения.
  • Сергей Озеранский

    20 авг., 09:58изменён

    Каждый раз, когда мне по каким-то причинам на глаза попадается информация о моей потенциальной пенсии по возрасту в России, я все еще немного поражаюсь этой экономики. Никогда не рассчитывал на пенсию.А на сообщение банка хочется ответить: "если бы, да кабы, да во рту росли грибы, тогда бы был не рот, а целый огород"
    Иллюстрация к посту канала Сергей ОзеранскийИллюстрация к посту канала Сергей Озеранский
  • Сергей Озеранский

    20 авг., 00:44изменён

    Помните, я писал, что нас ждут последствия от всего, что происходит с интернетом в России? И что я уже попадал на IP, с которого у VM нет исходящего доступа в глобальный интернет (Cloud.ru)?Вчера словил ещё один кейс, который снова подтверждает эти рассуждения.Поднимал в Yandex.Cloud (да, вы часто слышите от меня про него, но так вышло, я с этим облаком работаю) свежую VM и получил для нее публичный IP. Долго не мог подключиться по SSH. При этом ровно такая же VM в другой зоне работает во всех отношениях.Самое любопытное то, что адрес выглядел полностью живым.Что проходило нормально: - ICMP - ping 0% потерь, но латентность рваная: min/avg/max = 0.224 / 3.286 / 9.403 ms, stddev 4.3 ms. - MTU - пакеты с Don't Fragment до 1500 байт проходили в обе стороны без потерь (то есть это не MTU/фрагментация). - TCP :22 - трехстороннее рукопожатие завершалось: nc -vz -> succeeded, ssh -vvv
  • Сергей Озеранский

    18 авг., 08:09изменён

    Cursor запустил OriginПозиционируется как Git в эпоху AI.Пока еще не заглянул внутрь, у меня нет подписку на Cursor. Но скорее всего схожу посмотреть, так как интересна тема CI/CD которая должна быть в Origin. И по идее она должна быть дешевой и быстрой, так как генерация кода в AI настоящем стало больше, а значит пайплайны гоняются чаще.https://cursor.com/originhttps://cursor.com/docs/origin
    CursorCursor · OriginA git forge for the agentic era.
  • Сергей Озеранский

    14 авг., 06:40

    Есть куча инфраструктурных зависимостей — в k8s, на VM, даже в разных облаках. Считаем, что всё развёрнуто через код (или большая часть). Основной стек — Terraform/Terragrunt, Ansible.Есть потребность в инвентаризации. Хочу видеть, где что установлено и какой версии. Бонусом — актуальная версия и закрытые CVE.И что ещё важно: не хочу ничего контролировать вручную 😄 Хочу, чтобы данные собирались сами (в том числе через автодискавери).Кто как решает подобную задачу?
  • Сергей Озеранский

    12 авг., 16:12изменён

    Мое нытье про стабильность и то, что я не QA продолжаетсяА я просто PR хочу создать...upd: https://www.githubstatus.com/incidents/76t89hbfb09h
    Иллюстрация к посту канала Сергей ОзеранскийИллюстрация к посту канала Сергей Озеранский