Как стать автором
Обновить
0
0
Denis Michurin @denistu10

Sr. DevOps Engineer

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

Перемещение подов к primary ноде patroni или как использовать taints, labels в k8s

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

Данная статья представляет собой решение проблемы с network latency между прикладом и бд. Поэтому скорее всего она будет интересна людям имеющие схожие симптомы. В материале описаны основные моменты kubernetes и пляски с бубном на python. Примеры кода приведены из реального приложения.

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

Современный Python: как начать свой проект с нуля при помощи Pyenv и Poetry

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

Рассказываем, как начинающему разработчику установить и управлять различными версиями Python с помощью Pyenv, подготовить свой проект и создать виртуальное окружение через Poetry.

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

Система заметок с нуля. Часть 5: знакомство с объектным хранилищем MinIO и разработка микросервиса на Golang

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

В первой части мы спроектировали микросервисную архитектуру.

Во второй части разработали RESTful API Service на Golang cо Swagger и авторизацией.

Третья часть была посвящена знакомству с графовой БД Neo4j и работе над микросервисами CategoryService и APIService.

Четвертая часть была посвящена разработке микросервисов.

Мы продолжаем создание системы заметок. На этот раз посмотрим на разработанный File Service, который работает с хранилищем MinIO. Но сначала разберёмся с самим хранилищем и его настройкой.

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

Мониторинг начинается с метрик, или Как не сделать из алертов белый шум

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


Как известно, нельзя управлять тем, что не измеряешь. В контексте IT-проектов это означает необходимость мониторинга всех частей проекта: от утилизации CPU до бизнес-показателей вроде количества заказов в интернет магазине или показов баннеров на сайте.

Чтобы сервис работал стабильно и техническая поддержка могла в режиме 24/7 быть эффективной, нужно собирать метрики, визуализировать их динамику (в дашбордах и графиках), анализировать результаты и работать с инцидентами — желательно до того, как они стали инцидентами. Однако мониторинг мониторингу рознь. Он выполняет свою функцию, если система:

1) отслеживает метрики, которые нужны для принятия решений, и не мониторит лишнее;
2) уведомляет, когда ещё можно что-то сделать без последствий для работоспособности сервиса, но не спамить ложной тревогой.

Звучит просто и логично, но на практике найти баланс не всегда легко.

Эта статья будет первой в серии заметок о том, как мы организуем мониторинг у наших 400+ клиентов. Расскажем, какие метрики снимаем, каких методологий придерживаемся и какие алерты видим каждый день.
Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии1

Удаленный доступ к IP камерам, теперь на Python

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

Удивительно, что в 2021-м все еще можно обсуждать такую избитую тему. Однако, мне пришлось пройти довольно длинный путь от покупки охранных камер до готового решения, покрывающего мои, довольно нехитрые, задачи. Под катом вы найдете скрипт, который показался мне достаточно удачным, чтобы опубликовать его на Хабре, и некоторые пояснения к нему. Надеюсь, кому-то поможет.

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

Разбор вступительных заданий в Школу Программистов hh.ru 2021

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

Привет! Подошел к концу двенадцатый набор в Школу Программистов hh.ru. Самое время рассказать, как Петр Васильевич раздавал премии менеджерам, кто вышел победителем из "Релиза до выходных" благодаря ролевому помощнику, и как впервые в истории Школы нам пришлось облегчить условия вступительного задания прямо во время набора. 

В этой статье будет подробный разбор заданий свежего набора в Школу Программистов hh.ru.

Поехали разбираться
Всего голосов 9: ↑9 и ↓0+9
Комментарии13

Деплоим приложение на Django в Kubernetes с нуля

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

Привет! Меня зовут Игорь, я управляющий партнер в KTS.

Нашей компании уже 6 лет, и 4 из них мы живем с Kubernetes. До этого мы испытали все варианты деплоя приложений на серверах: начиная от простого git pull до ci/cd на нескольких серверах.

Сегодня мы на практике разберем, что нужно делать, чтобы ваше приложение оказалось в Интернете. Какие-то моменты я опущу, чтобы на забираться слишком глубоко.

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

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

DevOps Cookbook: как построить процессы с нуля

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

Привет! Меня зовут Мария, я DevOps-инженер в компании Wrike. В этой статье расскажу о работе DevOps-инженеров с командами разработчиков: как выглядит процесс взаимодействия, из каких этапов состоит и как построить его с нуля. Статья будет полезна, если вы часто меняете проекты и каждый раз вам приходится заново создавать документацию и внедрять базовые процессы в работу команды.

Читать далее
Всего голосов 21: ↑20 и ↓1+21
Комментарии13

Книга «Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура»

Время на прочтение11 мин
Количество просмотров26K
image Привет, Хаброжители! Популярность Python продолжает расти, а значит, проекты, созданные на этом языке программирования, становятся все масштабнее и сложнее. Многие разработчики проявляют интерес к высокоуровневым паттернам проектирования, таким как чистая и событийно-управляемая архитектура и паттерны предметно-ориентированного проектирования (DDD). Но их адаптация под Python не всегда очевидна.

Гарри Персиваль и Боб Грегори познакомят вас с проверенными паттернами, чтобы каждый питонист мог управлять сложностью приложений и получать максимальную отдачу от тестов. Теория подкреплена примерами на чистом Python, лишенном синтаксической избыточности Java и C#.

В этой книге:

  • «Инверсия зависимостей» и ее связи с портами и адаптерами (гексагональная/чистая архитектура).
  • Различия между паттернами «Сущность», «Объект-значение» и «Агрегат» в рамках DDD.
  • Паттерны «Репозиторий» и UoW, обеспечивающие постоянство хранения данных.
  • Паттерны «Событие», «Команда» и «Шина сообщений».
  • Разделение ответственности на команды и запросы (CQRS).
  • Событийно-управляемая архитектура и реактивные расширения.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии10

Разработка системы заметок с нуля. Часть 1: проектирование микросервисной архитектуры

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

Данный проект рассматривается как pet-project. Любую критику и советы готов увидеть в комментариях.

Это моя фактически первая статья на хабре за долгое время, последняя была написана очень много лет назад, если что-то не так - напишите в личные сообщения - я все исправлю.

Репозиторий с исходным кодом: https://github.com/theartofdevel/notes_system

Видео версия: https://www.youtube.com/watch?v=Txi95RQPRP0

Под катом текстовая расшифровка.

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

Пишем свой Google, или асинхронный краулер с rate limits на Python

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

Меня зовут Александр, я руковожу backend-разработкой в КТS. Сегодня расскажу, как написать асинхронный краулер.

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

Статья написана по мотивам вебинара, который мы провели в рамках нового курса «Асинхронное программирование на Python для начинающих». Курс стартует 18 октября, поэтому, если вам интересно — загляните посмотреть.

Что будет в статье:

1. Цель
2. Исходный код
3. Планировщик
4. Задача для краулера
5. Пробный запуск
6. Промежуточный итог
7. Функции put и join
8. Semaphore
9. Остановка фонового планировщика
10. Работа краулера на примере обкачки нашего блога на Хабре
11. Заключение

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

Immutable infrastructure – достигая недостижимого идеала (Андрей Девяткин)

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


Всем привет! Добро пожаловать на презентацию об immutable infrastructure – достигая недостижимого идеала. Перед тем как мы начнем, хотел бы сделать небольшое вступление.

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

Геоаналитика с помощью Python и открытых данных: пошаговое руководство

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

Геоаналитика с помощью Python: GeoPandas, folium, Uber H3, OSM + примеры как можно определять лучшие локации для поиска помещений под открытие кофейни (и не только).

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

Записки о containerd

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

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

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

Настройка ядра Linux для повышения производительности памяти

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

Linux старается оптимизировать использование памяти, занимая свободное место кэшем. Если память никак не используется, то это память, потраченная впустую.

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

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

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

Читать далее
Всего голосов 17: ↑9 и ↓8+3
Комментарии11

Избавляемся от паролей в репе с кодом с помощью HashiCorp Vault Dynamic Secrets

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

Привет, Хабр! Меня зовут Сергей, я работаю IT Head в компании Quadcode. Сегодня хотел бы рассказать о том, как я решил проблему с хранением паролей в открытом виде в коде одного из моих pet-проектов. Думаю, это знакомая для многих ситуация. Знакомая — и неприятная.

Сразу скажу, что когда я начинал работу над проектом, ничего страшного в этом не видел, меня все устраивало. Но когда настало время подключать к разработке проекта кого-то извне, стало понятно, что хранить пароли в открытом виде небезопасно (да и перед контрибьюторами будет немного стыдно за такие банальные вещи) — это проблема. Вариантов решения было несколько. Под катом — рассказ о том, какое решение я выбрал и что получилось в итоге.

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

Как ускорить работу микросервиса с помощью многопоточности, асинхронности и кэша: пошаговая инструкция (FastApi, Redis)

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


To Destination by BisBiswas


Микросервисная архитектура звучит неплохо само по себе, но еще лучше — быстрый микросервис, который эффективно использует ресурсы сервера.


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

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

Load Average в Linux: разгадка тайны

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


Средние значения нагрузки (Load averages) — это критически важная для индустрии метрика. Многие компании тратят миллионы долларов, автоматически масштабируя облачные инстансы на основании этой и ряда других метрик. Но на Linux она окутана некой тайной. Отслеживание средней нагрузки на Linux — это задача, работающая в непрерываемом состоянии сна (uninterruptible sleep state). Почему? Я никогда не встречал объяснений. В этой статье я хочу разгадать эту тайну, и создать референс по средним значениям нагрузки для всех, кто пытается их интерпретировать.

Читать дальше →
Всего голосов 127: ↑125 и ↓2+123
Комментарии25

Выдерни шнур, выдави стекло

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

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

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

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

Чтобы в следующий раз диагностика и устранение причин аварии происходили быстрее, мы совместно с DevOps-инженером Алексеем Поповым решили написать «план эвакуации при пожаре»: пошаговую инструкцию, которую можно было бы использовать для быстрого исследования инцидента.

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

Я буду признателен за комментарии и описания аналогичных проблем, которые происходили у вас.

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

Создание вашего первого модуля Ansible

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

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



Конечно, есть документация, доступная и на Ansible.com, но разобраться в ней достаточно трудно. Запуск своего первого модуля на основе этого введения дался мне с большим трудом. Вот почему я создал это пошаговое руководство. Новые пользователи заслуживают лучшей отправной точки.

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

Информация

В рейтинге
4 845-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

System Software Engineer, DevOps
Senior
Python
Linux
Docker
OOP
Kubernetes
Terraform
Ansible
Golang
High-loaded systems