Как стать автором
Обновить
10
0
Юрий Дмитриев @gto

Системный администратор

Отправить сообщение

План самостоятельного обучения DDD, CQRS, EventSourcing

Время на прочтение 7 мин
Количество просмотров 37K

Если вы собрались плотно погрузиться в тему Doman Driven Design (DDD), о том как его применять, как использовать, для чего он нужен, и как с ним связаны Command and Query Responsibility Segregation (CQRS), Event Sourcing и другие термины из мира DDD то можно воспользоваться планом обучения, который последовательно погрузит вас в эти темы и поможет сориентироваться. Часть информации на русском, часть на английском языке, так как русскоязычных аналогов я не смог найти.

Погрузиться в DDD
Всего голосов 36: ↑35 и ↓1 +34
Комментарии 4

Миграция с Docker на CRI-O в Kubernetes

Время на прочтение 4 мин
Количество просмотров 6.1K

Для запуска контейнеров платформа Kubernetes использует Container runtime, т. е. движок для контейнеров. Долгое время основным движком считался Docker, но им не ограничивался — Kubernetes также поддерживает такие движки, как CRI-O и containerd. Однако начиная с версии Kubernetes 1.20, было объявлено, что в будущих версиях поддержка Docker (а если быть точнее, то dockershim) будет полностью прекращена. Начиная с версии Kubernetes 1.24, Docker был полностью удален из Kubernetes. Одной из причин такого решения было то, что в Docker отсутствует поддержка интерфейса CRI (Container Runtime Interface). В качестве замены можно перейти на CRI-O, который позиционирует себя как легковесную исполняемую среду для контейнеров в Kubernetes. В данной статье мы рассмотрим миграцию с движка Docker на CRI-O.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 2

Как организовать мониторинг актуальности Helm-релизов в кластерах Kubernetes

Время на прочтение 5 мин
Количество просмотров 3.8K

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

О том, как мы мониторим актуальные Helm-релизы и какие инструменты для этого используем, рассказывает Александр, ведущий системный администратор в Selectel. Подробнее — под катом.

Дисклеймер. В статье сконцентрировались на нашем опыте мониторинга Helm-релизов. Начиная с поиска утилиты для проверки актуальных версий и заканчивая визуализацией данных. Надеемся, этот материал поможет вам выстроить надежную и эффективную систему мониторинга Helm-релизов.
Читать дальше →
Всего голосов 34: ↑34 и ↓0 +34
Комментарии 8

Как документировать публичные API для продукта. Большой гайд, часть 1

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 13K

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

Материала вышло многовато, поэтому разбил его на 2 части. В части 1 (этой статье) рассмотрим, почему и зачем вообще публичным API нужна документация, есть ли у нее какие-то отличия от документации внутренних API, а также проанализируем и детально разберем различные подходы к ведению такой документации, попутно познакомившись поближе с полезными инструментами.

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

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 4

Отладка плэйбуков ansible

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 8.5K

Рябятаньки в этом руководстве я постараюсь рассказать как дебажить playbookи, устраняя потенциальные проблемы, не дожидаясь обезвреживания продакшена. Если вы читаете это, то я уверен что вы, также как и я, прочитали десяток статей о том как установить ansible и запускать (применять - режет слух) плэйбуки для конфигурирования всего до чего дотягивается руки.

узнать как дебажить
Всего голосов 14: ↑12 и ↓2 +10
Комментарии 1

Ethereum Contract ABI Specification. Взаимодействие с контрактом

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 3.1K

В данной статье я хочу познакомить вас с тем, как осуществляется кодирование данных в транзакции в соответствии с Contract ABI Specification. Мы вручную разберём весь процесс кодирования, создадим контракт и произведём вызов его методов. В конце я покажу как при помощи Contract ABI создать объект-оболочку через web3.js, и через него вызывать методы контракта.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Пишем роли ansible не ломая прод — особенности check_mode или как правильно его готовить

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 4.4K

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

чекаем туториал
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 1

Нативный способ шифрования данных в Helm

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 4.3K

Привет, Хабр! Меня зовут Миняйлов Лев, я старший разработчик и DevOps-инженер Группы "Иннотех".

Хочу поделиться решением задачи шифрования чувствительных данных в Helm, использующим встроенные функции encryptAES/decryptAES.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 4

Наблюдаемость сетевой инфраструктуры Kubernetes. Часть первая

Уровень сложности Средний
Время на прочтение 23 мин
Количество просмотров 9.5K

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

Эта статья для DevOps, Kubernetes administrators и SRE инженеров, которым важно и интересно разобраться в том, как устроена сетевая инфраструктура Kubernetes, какое взаимодействие происходит на уровне ядра Linux и различных приложений (Go, Java, Python и т.п.); изучить две обширные технологии eBPF и OpenTelemetry, активно продвигаемые CNCF сообществом. А главное при помощи каких инструментов можно упростить принятие решений инженерам при использовании Kubernetes в своих проектах и продуктах.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 2

Мониторинг FastAPI-приложения с помощью Grafana и Prometheus — пошаговое руководство

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 15K

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

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

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 43K

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

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 7

Пишем на Python, как будто это Rust

Время на прочтение 19 мин
Количество просмотров 10K

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

Читать далее
Всего голосов 28: ↑24 и ↓4 +20
Комментарии 17

Коварство метрик памяти Kubernetes (и cgroups)

Уровень сложности Сложный
Время на прочтение 8 мин
Количество просмотров 12K

В этой статье мы рассмотрим память внутри контейнера Kubernetes. Какие есть основные типы памяти, как они управляются и какие коварные моменты с ними связаны. В этой статье вы узнаете ответы на интересные вопросы:

Какие метрики памяти считаются неправильно?

Сколько раз надо прочитать файл, чтобы он хорошо закешировался?

Какую память учитывает Out-of-memory killer?

Начать погружение в дебри памяти
Всего голосов 37: ↑37 и ↓0 +37
Комментарии 15

Книга «Производительность систем»

Время на прочтение 11 мин
Количество просмотров 9.4K
imageПривет, Хаброжители!

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

Брендан Грегг – эксперт в области производительности систем и автор нескольких бестселлеров — лаконично, но емко излагает наиболее важные сведения о работе операционных систем, оборудования и приложений, которые позволят специалистам быстро добиться результатов, даже если раньше они никогда не занимались анализом производительности. Далее автор дает детальные объяснения по применению современных инструментов и методов, включая расширенный BPF, и показывает, как добиться максимальной эффективности ваших систем в облачных, веб- и крупных корпоративных средах.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 10

Назад в прошлое: как быстро восстановить MySQL на точку во времени

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 5.3K

Point in Time Recovery (PiTR) — это восстановление базы данных на какой‑то конкретный момент времени (с точностью до секунд или до конкретной транзакции).

PiTR невероятно полезен для восстановления базы данных после того, как «случилось непоправимое». Если достаточно точно выбрать точку на которую восстанавливать базу, то можно восстановить базу данных практически без потери данных.

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

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 2

Начинаем работать с Terraform

Время на прочтение 6 мин
Количество просмотров 5.3K

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

Читать далее
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 2

Двойная бухгалтерская запись в реляционной БД

Время на прочтение 9 мин
Количество просмотров 19K

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


Разобраться и избежать кучи граблей в этом деле мне помогла данная статья. При этом информации по теме "как сделать свою платежную систему" довольно мало, а в учебниках по бухучету программисту сходу разобраться не так просто (и очень нудно). Надеюсь, этот материал окажется полезным тем, кто только собирается что-то такое делать.


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


Введение


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



Лука Пачоли, автор самой старой (15 век) дошедшей до нас книги с описанием принципов двойной записи


В системе с "простой записью" числовые значения записываются только один раз. В системе с "двойной записью" каждое значение записывается дважды, как кредит (положительное значение) и как дебет (отрицательное значение). При этом есть набор правил, определяющих связь между этими значениями. Эти правила вам легко опишет любой опытный бухгалтер, хотя он может и не представлять, как именно они могут быть представлены в реляционной БД.


Основные правила таковы:

Читать дальше →
Всего голосов 26: ↑23 и ↓3 +20
Комментарии 50

Блокировки MySQL: виды, проблемы и способы обнаружения

Время на прочтение 27 мин
Количество просмотров 43K

Рано или поздно любой разработчик или администратор СУБД, имеющий дело с MySQL, сталкивается с проблемой блокировок. Всё дело в природе MySQL как системы с конкурентным доступом на чтение/запись. Я расскажу о видах блокировок в MySQL, их преимуществах и недостатках, о проблемах, которые они вызывают, а также дам полезные советы по обнаружению и способам борьбы с блокировками.

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 2

RabbitMQ: дополнительные возможности

Время на прочтение 8 мин
Количество просмотров 7.7K

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

Что конкретно разберём:

расчёт количества консьюмеров по формуле Эрланга;

шардирование — различные способы балансировки;

дедупликацию сообщений в очереди;

многоуровневую очередь повторных попыток;

приоритеты сообщений.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 0

Расширяем возможности Ansible: Ansible Vault

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 12K

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

Читать далее
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 6

Информация

В рейтинге
Не участвует
Откуда
München, Bayern, Германия
Зарегистрирован
Активность