DevITWay | Павел Волков
165 subscribers
70 photos
6 videos
121 links
Системное мышление → DevOps-практика → карьерный рост.
Production-кейсы, разборы инцидентов, новые подходы.
Бесплатные мини-курсы: Git | Linux | Docker
Веду лично. Основатель DevIT Academy.
devitacademy.com | devopsway.ru | devitacademy.com/kmb
Download Telegram
😑 Метавопросы: сообщения, которые крадут время

---

💬 «Привет»

И тишина.

Ты смотришь на экран.
Ждёшь продолжения.
Его нет.

Проходит минута. Пять. Десять.

«Можно вопрос?»

Ты уже потерял фокус.
А вопроса всё ещё нет.

---

🚫 Метавопросы – сообщения о сообщениях

«Привет» – без продолжения.
Человек ждёт, пока ты ответишь «привет», чтобы написать суть. Пинг-понг вместо коммуникации.

«Можно вопрос?» – это уже вопрос.
Но бесполезный. Ты не знаешь тему и не можешь оценить приоритет.

«Кто делал X?» – вместо сути.
Ты ищешь человека. Хотя можно было сразу написать, что именно нужно по X.

«Ты занят?» – ловушка.
Скажешь «нет» – как будто обязан помочь.
Скажешь «да» – чувствуешь вину.
А задача, возможно, на 30 секунд.

---

⏱️ Почему это особенно больно

В синхронном разговоре это нормально.
«Привет» → пауза → продолжение.
Всё укладывается в секунды.

В асинхронной коммуникации – это катастрофа.

Ты:

* отвлёкся на уведомление
* переключил контекст
* ждёшь
* не дожидаешься
* возвращаешься к работе
* снова уведомление
* снова переключение

Итог: 10 минут на то, что могло быть одним сообщением.

---

Простое правило
Одно сообщение = всё, что нужно

Контекст + суть + ожидание от человека

«Привет»
«Привет, можно вопрос?»
«Кто делал деплой?»


«Привет! Вопрос по деплою: сервис X не стартует после отката.
Можешь глянуть логи, когда будет минута?»

Человек сразу видит:

* что случилось
* что от него нужно
* насколько это срочно

Он может ответить сразу.
Или отложить.
Но осознанно, а не через пинг-понг.

---

🔗 Культурные референсы

Это не частное мнение, а устоявшаяся практика:

* nometa.xyz – почему «привет» без контекста – антипаттерн
* nohello.club – почему «можно вопрос?» – пустой ход

Иногда проще скинуть ссылку, чем объяснять.

---

📌 Вывод

Метавопросы – это вежливость, которая крадёт время.

Уважение к собеседнику –
не в «привет» и ожидании ответа,
а в сообщении, на которое можно ответить сразу.

---

💬 Бесит, когда пишут «Привет» и молчат?

🔥 — да, каждый раз
😎 — сам так делал, но исправился
👍 — у нас команда уже обучена

---

#мышление #devops
1😎6🔥3
🐳 Docker Buildx и GitLab Registry – "закрыто как won't fix"

---

Собираешь образ через docker buildx, пушишь в GitLab Registry:
⚠️ ERROR: unsupported: OCI manifest found...

GitLab v18.4.1 – вроде свежак. Должно работать?
Не-а. И не будет. Никогда.

---

🐛 Что случилось

- BuildKit создаёт SLSA Provenance attestation (крипто-подпись сборки)
- GitLab Registry формально поддерживает OCI с v16+
- Но: не переваривает OCI manifest с аттестациями
- Issue #388865 закрыта в янв 2023 как “documented workaround” 😅

---

🧩 Системная закономерность

"Закрыто как won't fix" – признак того, что:

1. Проблема в архитектуре (GitLab Registry – обёртка над Docker Distribution)
2. Реальный фикс требует переписывания legacy
3. Команда выбрала задокументировать костыль вместо рефакторинга

Это не баг. Это технический долг, ставший фичей.

---

Решение

docker buildx build \
--provenance=false \
--push \
-t registry.example.com/app:latest .


Один флаг экономит час разбирательств ⏱️

---

🚀 Бонус: Registry cache

docker buildx build \
--provenance=false \
--cache-from type=registry,ref=$IMAGE:cache \
--cache-to type=registry,ref=$IMAGE:cache,mode=max \
--push \
-t $IMAGE:latest .


Результат:

– Первая сборка: ~ 180 сек
– Вторая сборка: ~ 10 сек
В 18 раз быстрее

---

🛠 В CI/CD

build_backend:
stage: build
script:
- docker buildx create --use --name cibuilder || docker buildx use cibuilder
- docker buildx build
--provenance=false
--cache-from type=registry,ref=$CI_REGISTRY_IMAGE:cache
--cache-to type=registry,ref=$CI_REGISTRY_IMAGE:cache,mode=max
--push
-t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .


---

🌐 Альтернативы с нормальной OCI:

– Harbor (v2+) (работает из коробки)
– GitHub Container Registry (работает)
– AWS ECR / GCR / Azure CR (все работают)

Но если GitLab – держи флаг наготове 🏁

---

📝 Урок

– Issue закрыта ≠ проблема решена
– Иногда “documented workaround” – это способ сказать:
"Мы не будем это фиксить. Привыкайте."

---

Вопрос к вам:

– Сталкивались с подобным в GitLab Registry?
– Какие ещё “won’t fix” живут в вашем стеке годами?

---

#кейс #devops
1🔥5
🔧 Под капотом DevITWay Academy

Цикл: как мы строим инфраструктуру академии


---

FreeBSD + pfSense → OPNsense → VyOS

---

🔹 Контекст

Раньше в академии использовали FreeBSD + pfSense → попробовали OPNsense (интерфейс красивый, вроде удобнее) → при масштабировании виртуалок и виланов перешли на VyOS.

Почему VyOS?

---

Проблема OPNsense

– Интерфейс не дружит с автоматизацией
– Настройка фаервола / NAT / VPN → кликай вручную
– Версионировать конфиг → экспорт XML, импорт может сломаться

Интерфейс в приоритете ≠ автоматизация в приоритете

---

VyOS в деле

Инфраструктура как код из коробки

– Весь конфиг — текст, версионируется в Git
– Применяется через Ansible, откатывается одной командой
– Один плейбук = одинаковая настройка на всех машинах

Философия фаервола:
– OPNsense: шаблоны часто выглядят как "разрешить всё, потом запретить пару вещей"
– VyOS: запретить всё → явно разрешить только нужное
– Результат одинаковый, но VyOS прозрачнее и воспроизводимее

---

⏱️ Пример: развёртывание виланов для студентов

OPNsense: ~2 часа ручной работы
VyOS: 3 минуты через Ansible

---

⚠️ Грабли при миграции

1. Старая виртуалка в сети
Оба роутера пытаются быть шлюзом по умолчанию → сеть упала

Урок: выводи старую виртуалку из работы – остановка + отключение сетевухи или удаление из влана

2. Правила не один в один
– В OPNsense приходилось подстраивать шаблоны
– VyOS: запретить всё + явно разрешить – легко тестировать

---

🔑 Закономерность

Интерфейс против консоли = разные подходы, а не удобство

– Интерфейс: настрою один раз
– Консоль: настрою тысячу раз одинаково

Когда OPNsense/pfSense:
– Домашние лабы
– 1–2 роутера
– Разовые настройки

Когда VyOS:
– N машин в виланах
– Конфиг в Git
– Автоматизация обязательна

---

🏁 Итог

Выбрали VyOS для академии:
– Автоматизация – все настройки текстом, плейбуки
– Масштабируемость – одинаковая конфигурация на десятки виртуалок
– Воспроизводимость – откаты и тесты без кликанья
– Прозрачность – каждый параметр видно и версионируется

---

Вопрос

– Используете VyOS или OPNsense/pfSense?
– Автоматизируете сетевую инфру или кликаете руками?
– Были грабли при миграции?

Пишите 👇

---

#кейс #devops
1👍5
🤖 Как я вывел AI-наставника из домашней лабы в Telegram (пилот)

Есть AI-ментор.
Не абстрактный «чатик», а предобученная модель-наставник и интервьювер.
Она умеет задавать вопросы, давить, направлять и проверять мышление.

Модель крутится дома. RTX 3090. Ollama.
Студентов в Telegram ещё нет. Бота тоже нет.
Но пилот уже хочется пощупать: подключиться, погонять сценарии, проверить стабильность.

И тут вопрос:
как безопасно вывести домашний AI в интернет, не открывая порты и не светя IP?

Ответ оказался простым – SSH reverse tunnel через VPS.

---

💡 Идея простая:
дом сам выходит наружу.

🏠 Домашний AI → 🔐 SSH → ☁️ VPS → 📱 (будущий Telegram-бот)


AI-сервер подключается к VPS по SSH
и говорит:

> «Все запросы, которые прилетят к тебе на порт 11434 – отправляй мне»

В итоге:
* дома нет белого IP
* никакие порты не проброшены
* VPS – единая точка входа
* модель можно хоть каждый день переносить между серверами

---

⚙️ Минимальная настройка пилота

На домашнем сервере:
# SSH ключ
ssh-keygen -t ed25519 -f ~/.ssh/vps_tunnel

# SSH config
cat >> ~/.ssh/config << EOF
Host vps-ai
HostName your-vps-ip
User your-user
IdentityFile ~/.ssh/vps_tunnel
ServerAliveInterval 60
EOF

# Копируем ключ на VPS
ssh-copy-id -i ~/.ssh/vps_tunnel vps-ai

# Туннель
ssh -R 11434:localhost:11434 vps-ai


Проверка на VPS:
curl http://localhost:11434/api/tags
# Должен вернуть список моделей Ollama


Автозапуск через systemd:
sudo systemctl enable vps-ollama-tunnel
sudo systemctl start vps-ollama-tunnel


Без VPN.
Без NAT.
Без боли.

---

Пока нет бота, нет FastAPI, нет студентов.
Но инфраструктура уже готова.

Когда пилот взлетит –
подключится Telegram,
добавится RAG,
появятся сценарии интервью и обучения.

А фундамент уже стоит.

---

🔧 Если ты тоже держишь AI или сервис в домашней лабе –
SSH-туннель может быть самым быстрым и безопасным стартом.

#кейс #ai
🔥8
📁 Файлы везде, VPN не всегда вариант

Реальный кейс из практики.

Когда была разъездная работа:
ноут со мной,
дома – сервер с файлами,
VPN – не всегда поднимается (корпсети, мобильный интернет, отели).

Нужно было решение, где:
– файлы всегда локально
– работает без постоянного VPN
– переживает обрывы связи
– не отдаёт данные в публичные облака

Вот тогда я и нагуглил Syncthing.

Как это выглядит:
– ноут – домашний сервер
– если можно – прямое соединение
– если нельзя – через relay
– без белого IP
– без VPN
– всё шифруется из коробки

Ключевой момент – другая модель.

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

Утром поработал дома – файлы ушли на сервер.
Днём в дороге – VPN мёртв, а файлы уже на ноуте.
Вечером появился интернет – всё само досинхронизировалось.

Без ручных rsync и плясок с сетью.

Грабли есть:
– при параллельном редактировании будут конфликтные копии
– первая синхронизация больших объёмов, понятно, долгая
– relay медленнее прямого канала

Но для личной рабочей среды – это один из самых спокойных вариантов, которые я использовал и до сих пор использую.

Это не замена VPN.
Это другой подход к файлам.

Если работаете в разъездах – очень рекомендую попробовать.

---

Вопрос:
Как решаете проблему доступа к файлам в разъездах?

#кейс #devops
🔥6
Как дать студенту право «сломать всё» и не бояться за инфраструктуру?

В DevITWay Academy мы используем nested virtualization.

Уровни погружения

L0 Хост
Физическое железо:

• изолированные сети
• выделенные ресурсы
• стабильность

Фундамент, который никто не трогает.

---

L1 Песочница студента

Студент получает VM с --cpu host
и ставит Proxmox внутри.

Это даёт:

• обучение на реальном гипервизоре
• эксперименты с кластерами
• HA
• k8s

Потеря производительности 15–20%
для лабораторных работ незаметно.

---

L2+ Кроличья нора

Если идти глубже:

• CPU инструкции сыпятся
• VT-x и AMD-V проксируются хуже
• производительность ниже 30%

Здесь виртуализация превращается
в медленную эмуляцию.

---

Итог

Двух уровней хватает, чтобы:

• студент безопасно разнёс инфраструктуру
• понял работу гипервизора
• не задел соседей

Ограничение не в Proxmox.
Ограничение в железе и CPU.

Использовали nested virtualization
в проде или только для лаб?

#кейс #devops
3🤓1
🐿 Бурундуки спешат на помощь. Завтра.

Мы выкинули Nexus и Harbor. И стало легче.

Вести интенсив в Академии – это постоянно сталкиваться с реальностью. Когда мы переходили от монолита к микросервисам и GitOps, встал вопрос: где хранить артефакты?

Стандартные пути: 🐢 Nexus – монстр на Java, который съедает 4-8 ГБ оперативки на завтрак и грузится вечность. 🏗 Harbor – мощно, но поднимать 10 контейнеров ради простого registry? Оверхед.

Попробовали GitLab Registry, но и там свои "приколы" (писал об этом недавно).

В итоге я решил: если нет идеального инструмента, который просто работает и не жрёт ресурсы как не в себя, его нужно написать.

Завтра покажу, что получилось. Инструмент, который заменяет всё вышеперечисленное, весит 32 МБ и запускается за 3 секунды. 🦀

Ставьте 🔥, если тоже устали тащить тяжёлый софт в инфраструктуре!

#кейс #rust
🔥8👍3
🎉 Представляю NORA — быстрое хранилище артефактов на Rust 🦀

NORA — замена Nexus, Artifactory и Harbor. Без Java, тяжелых микросервисов и долгого старта.

🐿 NORA (НОРА) — автономное убежище для ваших сборок. Наш маскот Чиппи (Chippy) наводит порядок в хранении:
• Docker-образы,
• Maven (Java),
• npm (JS),
• Cargo (Rust),
• PyPI (Python)

⚡️ В чем профит:
Легкость: < 100 МБ ОЗУ (Nexus: 2–4 ГБ).
Скорость: Запуск < 3 сек (вместо минуты ожидания).
Минимализм: Один бинарник 32 МБ.
S3-native: Хранение локально или в S3-облаках.
Dashboard: Web UI и метрики Prometheus из коробки.
• Open Source:
Лицензия MIT и мощь Rust.

🚀 Запуск одной командой:
docker run -d -p 4000:4000 --name nora ghcr.io/getnora-io/nora:latest

🌐 Сайт: getnora.io
🧪 Демо: demo.getnora.io
💻 Код: github.com/getnora-io/nora

Будем публично разбирать архитектуру и безопасность. Присоединяйтесь!

#кейс #rust
2🔥12😱3👏21🍾1
🤖 AI-агент в терминале: почему OpenWebUI ломает DevOps-флоу

В DevITWay Academy всё завязано на единый LDAP: один логин для всего.
Для AI я сначала взял OpenWebUI. Инструмент отличный, но в нём нет поддержки пока SSO. Студентам приходилось вводить креды и прыгать в браузер.

DevOps-инженер живет в консоли, а не в веб-чатах.

🛠 Решение: RTX 3090 + Local AI

В итоге я настроил официальный Claude Code CLI для работы поверх локальной Ollama.

Получился гибрид: удобный UX от Anthropic, а данные и модели полностью локальные, внутри периметра.

Почему это важно для студентов:

* Они не учатся «копипастить ошибки в чат».
* Они думают и дебажат прямо в рабочей среде, не теряя контекст.

Как это выглядит на практике:

claude "почему этот плейбук падает на этой таске?"


⏱️ 20–30 секунд работы RTX 3090
Разбор ошибки с учетом контекста файлов.

Скоро выложу в блоге гайд, как собрать такую связку.

Где вы используете AI: в браузере, IDE или уже в терминале?

#кейс #ai
1👍6
🤖 AI-ментор: Как я приручал RAG на одной RTX 3090

Краткая сводка для тех, кто ценит время и VRAM:
Задача была амбициозной: создать ИИ, который «съест» 891 файл учебного курса и перестанет придумывать то, чего в материалах нет.

Что в итоге взлетело:

Стек: Ollama + Qdrant + Claude Code CLI.
База знаний: 11,307 чанков в векторном хранилище.
Скорость: ~10-15 секунд на честный, аргументированный ответ прямо с домашнего железа.

Мои «грабли»:

Llama 3.1: Оказалась знатным фантазером. Вместо того чтобы читать файлы, она с уверенным видом сочиняла их содержимое.
Fine-tuning: Модель внезапно «сменила пол» и превратилась в Марию, коуча по позитивному мышлению.
GLM-4.7-flash: Поймали неприятный баг, в режиме размышления (thinking mode) выдавала пустые ответы.
Qwen3:30b-a3b (MoE): Наш фаворит. Качество на уровне 30B, скорость как у 3B, и идеально помещается в 24GB видеопамяти.

Подробнее 👇
https://telegra.ph/Kak-ya-priruchal-RAG-na-RTX-3090-II-mentor-kotoryj-pochti-ne-vret-02-02

#кейс #ai
🔥7
🦀 NORA в бою: Опыт внедрения в K8s

Обкатал NORA в инфраструктуре DevITWay Academy.

Сетап: 3 кластера K8s (9 нод), GitLab CI → NORA ← ArgoCD. План: docker run и в прод. По факту немного "фичей". 😅

Установка
getnora.io/install.sh - 404 на момент внедрения. Ставил вручную. Завёл issue #1 сделаю инсталлер по канонам rustup.

TLS и сертификаты
Nginx + FreeIPA не взлетели: containerd проверяет только SAN. Подключались по IP, а IP в сертификате не было, поэтому TLS не сходился. Временно включил insecure_skip_verify на нодах, думаю над issue #2 - нативным TLS.

Rate Limit
При старте 7 подов словили 429. Ресурсы ок, упёрлись в лимиты.
Решение: выставил NORA_RATE_LIMIT_* через ENV, теперь держит.

Итог:
RAM (RSS): ~2.4 МБ в idle / low load
Деплой: ~87 сек до Running
Rust против Java - без шансов

Если нужен просто registry без enterprise-комбайна - NORA отлично закрывает задачу.

#кейс #rust
🔥8
🛠 Локальный ИИ-ассистент: пошаговый гайд

Отвечаю на вопрос про загрузку доков в Qdrant. В паре абзацев не вышло - ловите полноценный туториал, как собрать своего «Джарвиса» в терминале.

Стек (красивый Франкенштейн): Claude Code CLI + Ollama + Qdrant RAG + MCP-протокол.

Что внутри:
Основа: Запуск Qwen3:30b-a3b (MoE) локально.
Мост: Настройка LiteLLM для подмены API Anthropic на Ollama.
Память: Python-скрипт для нарезки чанков и заливки в Qdrant (с метаданными и overlap).
Руки: MCP-сервер, чтобы агент сам гуглил по вашей базе знаний.

Теперь на вопрос claude "почему nginx выдает 502?" ассистент сам найдет инфу в ваших .md файлах и предложит фикс. Без облаков, VPN и подписок.

🔗 Гайд

#миникурс #ai
1🔥5
AI DevOps: почему это стоит дорого

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

Что внутри:

Экономика GPU. Видеокарта дорогой актив. Нужно уметь делить мощности и управлять очередями, чтобы не сжигать бюджет. Масштабирование сложнее, чем просто добавить ноды.

Архитектура. Работа с кэшем и сжатием моделей. Балансируем по пропускной способности токенов, а не по CPU.

Контроль. Промпт-инъекции не решаются файрволом. Инфраструктура сама становится слоем фильтрации ответов и изоляции контекста.

Итого: Если пробовали локальный запуск и векторные базы, вы на верном пути. Скоро нейросети станут базой, как Docker. Изучайте экономику инференса сейчас, иначе рынок вас обгонит.

Кто внедрял GPU: во что уперлись? Квоты, мониторинг или бюджет?

#мышление #ai
3👍1🫡1
Guacamole vs RustDesk vs Teleport: выбор доступа

Ставили как-то товарищу Guacamole за Кинетик на малинку. Вместо 20 минут, 3 часа борьбы с зависимостями. Спас Docker. Повод сравнить стек для дома и Академии. Мой флоу: браузер → Jump-сервер → SSH → Nested Proxmox. Периметр закрыт снаружи.

Почему остальное мимо:

RustDesk. Peer-to-peer модель - это рутина при 30+ студентах. В Free-версии нет LDAP, а установка софта учеником, увы, лишний барьер.

Teleport. Заточен под SSH/K8s аудит. Для GUI-задач избыточен, Desktop Access сложен в настройке под каждую лабу.

Плюсы Guacamole:
• Zero Client: только браузер, без VPN.
• Gateway-centric: нативно встает в изолированный периметр.
• SSO: интеграция с LDAP/GitLab.

Итог:
Дома за Кинетиком - RustDesk. В лабах Академии Guacamole, имхо, лучший компромисс.

Как изолируете тестовые среды?

#кейс #devops
👌3🤓1
14 февраля: как баг видеодрайвера VMware «ронял» MS Exchange

Для меня 14 февраля — это теперь навсегда своеобразный «вьетнамский флешбэк» и своего рода ПТСР.

Итак, тоже суббота и тоже 14 февраля.
Пустой офис. Руководитель конторки на месте и периодически пингует меня, как ослик из «Шрека»: «Ну что, приехали? Уже работает? А сейчас?». Я гуглю под таким давлением, что IQ падает вдвое.

Кейс: Почтовик на MS Exchange (бизнес-критикал), крутится на виртуалке VMware.
Проблема: Сервер ловит критическую нестабильность. Процессы отваливаются, система ведет себя как при остром дефиците ресурсов, хотя физической оперативной памяти в достатке. Поднимаешь -> живет -> снова в аут.

🔍 Симптомы и ложные следы

Типичная ловушка: когда падает Exchange, ты копаешь внутри самого Exchange. Тюнинг кэша Jet Blue, лимиты памяти Store.exe и всё мимо.

Контекст: за месяц до моего прихода в офисе был жесткий блэкаут. Сервера ребутались по питания несколько раз. Тогда это проигнорировали, «ну завелось же».

Нахожу на StackOverflow (тогда еще живом) тред, где чувак пишет:

«Проверь аллокацию видеопамяти в настройках ВМ».

Моя первая мысль: «Что за бред? Где почта, а где видеокарта?». Но это был последний шанс перед полным фиаско.

⚙️ Root Cause: Истощение Nonpaged Pool

Захожу в настройки VMware. Флаг видеопамяти стоит в «Auto». Выставляю жесткий лимит. Ребут.
Супостатина стабилизировалась.

Что произошло технически:
Это не была нехватка физических планок памяти. Это был классический Nonpaged Pool exhaustion (истощение невыгружаемого пула ядра).

После блэкаута и кривого старта драйвер VMware SVGA начал вести себя неадекватно.

Вместо простой отрисовки консоли драйвер (работая в режиме ядра) начал «течь» и забивать системный пул, который нельзя выгрузить в файл подкачки.

В Windows Server того времени (2008 R2 / 2012) лимиты этого пула были довольно жесткими.

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

Как только видеодрайвер из-за бага «отъедал» лимит невыгружаемой памяти ядра, ОС теряла возможность выделять ресурсы под системные структуры. Итог: сбой сетевого стека, ошибки ввода-вывода и аварийное завершение процессов Exchange. Судя по всему, фиксация объема видеопамяти в настройках ВМ изменила логику инициализации драйвера и прекратила утечку.

💡 Системный вывод

Инженер, который мыслит слоями (Приложение → ОС → Ядро/Драйвер → Гипервизор), выигрывает у того, кто копает только в конфигах софта.

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

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

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

Вопрос:
Были случаи, когда софтверную проблему лечили через настройки гипервизора? Когда интуиция вытащила там, где логи молчали?

Пишите в комменты 👇

#кейс #devops

P.S. Желаю, чтобы в это 14 февраля «ослики» тебя не беспокоили, а системы работали как часы.
6
🛠 Доверяй, но поднимай стенд: Как системные требования ИИ врут в глаза

В ИТ есть золотое правило: «Доверяй, но проверяй». Когда Gemini с умным видом заявляет, что твоя видяха «не потянет», рука сама тянется закрыть терминал. Я решил не верить прогнозам на слово и поднял стенд.

Дано:
Обсуждали в чате локальный запуск ИИ для кодинга. Gemini выдал базу: «На 12 ГБ VRAM (RTX 4070) даже не суйся в сторону моделей 30B+. Скорость упадет до 1-2 токенов в секунду. Бери DeepSeek-Coder-V2-Lite, это потолок».

Тест в реальности (RTX 4060 8GB Laptop, Ollama, Q4_K_M, контекст до 4k):
Я пошел дальше и запустил всё на 8 ГБ VRAM. По логике «экспертов», мой ноут должен был превратиться в тыкву.

📊 Результаты бенчмарка:

Qwen3:30b-a3b (архитектура MoE)
Прогноз Gemini: 1-2 tok/s.
Реальность: 27-32 tok/s! 🚀

Почему так? Общий вес модели (~18 ГБ) перестал быть главным ограничителем. В архитектуре MoE (Mixture of Experts) на каждый токен активируется лишь малая часть параметров (в данном случае ~3B). Ollama выкинула часть весов в системную оперативку, и за счет малого числа активных параметров гибридный режим выдал отличную скорость.

Парадокс 14B Dense vs 30B MoE

Qwen2.5:14B (Dense) — полностью влезла в GPU, но выдала всего 11 tok/s.
Qwen3:30B (MoE) — в гибридном режиме выдала 27+ tok/s.

Вывод: Модель, которая в 2 раза «тяжелее» по весу, работает в 2.5 раза быстрее. Архитектура теперь важнее объема.

Битва за код: Qwen vs DeepSeek на 8 ГБ VRAM

DeepSeek-Coder-V2 (16b): 42 tok/s. Код чистый, но сухой.
Qwen2.5-Coder (7b): 53 tok/s. Дает doctests, примеры использования и шикарные комменты.
CodeLlama (7b): Рекордные 60 tok/s, но по качеству документации проигрывает Qwen.

Вывод: Для карт с 8-12 ГБ памяти Qwen2.5-Coder сейчас — самый практичный выбор.

🎯 Итоговый вердикт:

Миф: 30B на средних картах — это всегда слайд-шоу.
Факт: MoE-модели (в Q4 квантовании) — это чит-код. По качеству логики они на голову выше моделей 7B-8B и вплотную приближаются к облачным решениям прошлого поколения.

Миф: Нужно смотреть только на объем VRAM.
Факт: Нужно смотреть на тип модели (MoE vs Dense) и на то, как движок (Ollama/llama.cpp) умеет в offload.

Мораль:
Не слушайте советы облачных ИИ про локальные ИИ. Они часто экстраполируют поведение старых тяжелых моделей. На RTX 4070 (12GB) в тех же условиях можно смело ожидать 35–45 tok/s.

Хочешь знать правду? Поднимай стенд, засекай время и меряй всё руками.

#кейс #ai
👍51
Клод код кли? 403. Квен код кли? Погнали! 🚀

Пока Anthropic закручивает гайки и выдает «403 Forbidden» на CLI-инструменты для нашего региона, в солопренерстве работает правило: риск бездействия выше риска ошибки. Не тратим время на VPN-костыли, идем по пути локального импортозамещения.

Вчера товарищ жаловался, что не может пощупать Claude Code. Я решил не ждать милости от облаков и развернул Qwen Code CLI на Ubuntu. Китайцы сейчас делают очень бодро, а архитектура MoE позволяет летать даже на среднем железе.

Почему это маст-хэв для терминала:

1. Локально. Поднимаешь Ollama, тянешь qwen2.5-coder (7b — база, 30b — для серьезного дебага). Данные не покидают периметр.

2. Бесплатно. Никаких инвойсов на 85 евро и битвы с продавцами за возврат. Твое железо — твои правила.

3. Вайбкодинг. Он так же пишет код, правит конфиги и находит баги в соседних файлах, как и Клод, но делает это «лампово», прямо у тебя на ноуте.

Что пошло не так при установке (грабли):

>Node.js. Стандартная 18-я версия из репозиториев Ubuntu — мимо. Qwen требует 20+. Пришлось сносить старую и ставить через NodeSource.

>Кладбище ядер. При обновлении словил dpkg error 11 из-за битых хедеров старых ядер Linux. Пока не вычистил «хвосты» через dpkg --purge, npm отказывался ставить пакеты.

>PATH. После установки через npm -g команда qwen часто не видна. Лечится банальным символическим линком в /usr/local/bin.

Итог:
Модель qwen2.5-coder:7b на локалке выдает шикарные комменты и doctests. Это именно тот уровень автономии, который нужен, когда хочешь кодить в самолете или из-за «забора».

Наберем 5 огоньков 🔥 или лайков -> выкачу подробный пошаговый гайд с командами: как победить зависимости Node.js, починить битый dpkg и завести Qwen CLI через локальную Ollama за 5 минут.

#кейс #ai
🔥142
🛠 Tailscale + NoMachine: почему я выкинул RustDesk и забыл про туннели

Иногда архитектуру проверяет не pentest, а жизнь. Ситуация простая: я с ноутом в одной сети, домашняя тачка – в другой. Между ними забор, потому что я сознательно разделил «мир Академии» и «личный мир».

И вот тут начинается инженерная правда.

Сначала классическая матрёшка
Я попробовал по старинке: Tailscale → обратный SSH-туннель → TigerVNC.
Результат предсказуем: TCP-over-TCP, дикие лаги и отвал сессии при любом чихе провайдера. autossh бодро перезапускает то, что всё равно падает. Формально работает, но жить с этим нельзя.

База: Tailscale
Tailscale – это фундамент. Ноут и сервер получают свои 100.x.y.z адреса и просто оказываются в одной виртуальной локалке без проброса портов, белых IP и NAT-магии. Это сразу сняло 80% боли.

Почему я убрал RustDesk?
Он у меня крутится внутри Академии и там он логичен. Но для личной работы начались нюансы: при нестабильной сети он начинает «сыпать» картинку, а P2P-модель хороша для саппорта, но не идеальна для постоянной плотной работы.

Что изменил NoMachine (NX-протокол)
NoMachineэто не VNC. Это адаптивный видеострим, который:

1️⃣ Адаптируется к сети. Не держит TCP в истерике. Упал битрейт – картинка чуть «поплыла», но сессию не рвет.
2️⃣ Использует железо. Моя RTX 4060 на ноуте сама декодирует H.264. CPU холодный, input lag минимальный.
3️⃣ Ощущается «локальным». Скролл браузера не фризится, терминал не отстает. Ты реально забываешь, что это удалёнка.

Где теперь что живёт:
🧑‍🎓 Для студентов – Apache Guacamole (через браузер).
🔐 Для аудита и SSH/K8s – Teleport.
🏠 Для личных мощностей – Tailscale + NoMachine.

Каждому инструменту – своё место. Инфраструктура должна быть прозрачной, а не заставлять тебя бороться с ней.

🔧 А как вы делите доступ? Оставляете одну «дырку» для всего или сегментируете доступ под разные задачи?

#кейс #devops
🔥41
Обещанный гайд: Поднимаем Qwen Code CLI за 5 минут ⚡️

Реакции набрали быстро, как и обещал, делюсь «дорожной картой» по замене Claude Code на локальный стек. Без VPN, подписок и тормозов.

Что в итоге в статье:
🔹 MoE в деле: Разбор, почему модель 30B (MoE) на моей RTX 3090 выдает 30+ токенов и работает быстрее, чем «легкие» dense-модели.
🔹 Хак на скорость: Готовый Modelfile, который вырезает стадию «размышлений» (<think>) и экономит до 40 секунд на каждой цепочке команд.
🔹 Матрица выбора: Какую модель тянуть под твой объем VRAM (от 8ГБ до 24ГБ) и когда стоит уходить в облако.
🔹 Честный тест: Как агент сам фиксит свои ошибки форматирования (self-correction) и обходит системные ограничения через обычный bash.

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

🔗 Инструкция и все конфиги здесь

#миникурс #ai
👍61
🧠 ТРИ СУПЕРСИЛЫ ИНЖЕНЕРА: ДЕДУКЦИЯ, ИНДУКЦИЯ И АБДУКЦИЯ

Реальный кейс из обучения DevIT Academy.
Студент настраивает CI/CD. Docker-образ собирается, но push в GitLab Container Registry падает:

403 Forbidden
failed to fetch anonymous token

Три инженера решали бы эту задачу по-разному:

📐 ДЕДУКЦИЯ – знаю правило, применяю

"403 = нет прав"
→ Проверяю токен. Есть. ✓
→ Проверяю роли в проекте.
Maintainer. ✓
→ Проверяю namespace. Совпадает. ✓
→ Всё правильно... но не работает.

📊 ИНДУКЦИЯ – собираю факты, ищу паттерн

→ На одном раннере падает, на другом тоже.
→ В другом проекте тоже 403.
→ "Значит проблема глобальная? Может registry сломан?"
→ Нет, у других работает.

🔍 АБДУКЦИЯ – вижу симптом, строю гипотезу

→ "docker login проходит, а push – нет..."
→ "Что если login и push идут на РАЗНЫЕ хосты?"

Смотрим под капот:

login → registry.devitacademy.lab

push → registry.devitacademy.lab:443

Docker хранит пароль по ТОЧНОМУ имени хоста. Для него это два разных сервера. Login сохранил пароль для одного, push ищет пароль для другого. Не находит → идет как anonymous → получает 403.

Убрали :443 из переменной. Заработало.

🎓 Откуда ноги растут? (Инженерная справка)

Термин абдукция ввёл Чарльз Сандерс Пирс – «отец» американской логики. Он доказал: дедукция и индукция не создают новых знаний. Пирс утверждал: Абдукция – это единственный вид логики, способный на озарение. Это когда вы видите странный результат и «догадываетесь», какое правило могло его вызвать. Это не 100% доказательство, а лучшее объяснение из имеющихся. Именно так работает мозг инженера, когда он связывает 403-ю ошибку с портом в URL.

📚 Причём тут цикл Колба?

Дэвид Колб описал, как мы учимся: Опыт → Рефлексия → Теория → Эксперимент.

Три типа мышления – это движки внутри этого цикла:

АБДУКЦИЯ на этапе рефлексии подкидывает гипотезу «почему».

ДЕДУКЦИЯ на этапе теории строит прогноз («если гипотеза верна, то в конфиге будет два ключа»).

ИНДУКЦИЯ после эксперимента превращает результат в правило.

Без абдукции цикл буксует: студент видит ошибку, но не может сформулировать «почему». Абдукция – это мост.

⚡️ Итого

Дедукция – Сила: надёжно. Слабость: нужно уже знать.

Индукция – Сила: учишься на опыте. Слабость: риск ложных корреляций.

Абдукция – Сила: работает в неизвестности. Слабость: гипотеза может быть неверной.

Джуну хватает дедукции. Мидл добавляет индукцию. Сеньор владеет абдукцией – формулирует гипотезы там, где лог молчит.

Абдукция тренируется. Каждая дебаг-сессия – это тренажёр.


📊 ОПРОС: На каком движке ты сегодня?

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

💯 — Дедукция. Читаю доку, делаю по ГОСТу.
🤔 — Индукция. Вижу знакомые грабли, ищу закономерности.
🤯 — Абдукция. Строю безумные гипотезы, когда всё горит.
👨‍💻 — Инженерный хаос. Некогда думать, просто копаю до победного!

Пиши в комментах самую дикую гипотезу, которая в итоге оказалась правильной 👇

#мышление #devops
👨‍💻6🤯2🔥1🤔11