Код на вынос
16 subscribers
1 photo
4 links
Про то, как решения сталкиваются с реальностью.
Факапы, идеи, опыт, код — без глянца.
Download Telegram
Channel created
👋 Привет! Это CodeToGo (Код на вынос)

Канал про IT и все, что с ним связано. Делюсь опытом, находками и размышлениями.

Что будет:
- 📚 Истории из IT-практики (поучительные, смешные, странные)
- 🔍 Разборы проектов и кейсов
- 💥 Честные рассказы о факапах и уроках
- 📝 Обзоры того, что зацепило
- 🧠 Мысли вслух на около-IT темы

Иногда с кодом, иногда без. Иногда серьезно, иногда нет.

Короче, добро пожаловать в мои IT-заметки!
Подписывайтесь и включайте 🔔, чтобы ничего не пропустить.

#welcome #it #опыт #кейсы #факапы #ит #itshchen
❤‍🔥1🎉1🤩1
🤦‍♂️ Факап: Легаси монолит и его секреты

Получаю в работу старый PHP-монолит. README есть… но .env — нет. .env.example? Тоже нет.
Коллеги? Утонули в митингах. Никто не подскажет.

Думаю: "Ну ок, пара переменных для БД…"
Стандартные DB_HOST, DATABASE_URL, MYSQL_HOST... Ничего 😤

Пришлось включать дедукцию:
grep -r "getenv(" .


И вот оно — LEGACY_DB_CONNECTION_STRING, OLD_SYSTEM_DB_CREDS и ещё куча неожиданных имён. Угадать их? Практически нереально.

Собираю пазл: .env начинает вырисовываться.
Иду в GitLab → Settings → CI/CD → Variables. Не все репозитории доступны, не все креды нашёл...
Но имя базы удалось вытащить из связанного проекта. А зная имя и имея доступ к базе — остальное дело техники.

Монолит завёлся!

Вывод: в legacy проектах свои правила.
Не угадывай — ищи систематически.🔍

P.S. после того, как нашел — документируй, впрочем это уже совершенно другая история 😅

А вы сталкивались с подобными монолитами? Как находили скрытые переменные? Делитесь в комментариях👇

#факап #legacy #монолит #codetogo #itshchen
🔥2👍1
📑 Документация? Потом, потом… а потом поздно

Есть проект: микросервис на Node.js + пара Go-шных утилит. Всё работает, CI настроен, деплой катится без проблем. Казалось бы – живи и радуйся.

Но приходит день, когда нужно поднять проект с нуля.
Думаю: "Окей, README на месте, всё будет легко…"

Открываю. А там всего два шага:

git clone ...
npm install

И всё 😅

Ни про переменные окружения, ни про сторонние сервисы (S3, Redis, очереди), ни про то, в каком порядке запускать утилиты.
Спрашиваю у коллег: "А где дока?"
Ответ: "А, ну там всё в Confluence описано, но в старом разделе, а ещё часть на Notion, а ещё один человек писал себе локальные заметки…"

Короче, документация была. Но раскидана по трём системам и половина устарела.

Итог: вместо часа на развёртывание я убил два дня. Сначала собирал информацию по крупицам, потом писал нормальный README, а заодно добавил docs/SETUP с пошаговой инструкцией.

Теперь любой новичок разворачивает проект за 20 минут!

Вывод:
Документация – это не "потом". Если сегодня её нет, завтра её будут искать все. Лучше потратить лишний час сейчас, чем два дня потом.

А вы?
Документация у вас централизована или "у каждого своя система"? Делитесь опытом 👇

#факап #документация #codetogo #itshchen
🔥2👍1
🕒 Магический cronjob

Есть проект на старом сервере. Всё работает, но иногда “само чинится”.
Один сервис падает, через пару минут – снова жив. Пока он в рамках текущего окружения – не критично, но на носу запланирована миграция. Думаю: "Чудеса?".

Начинаю разбираться. Логи пустые. Мониторинг молчит. Но каждый день в одно и то же время сервис как будто "перезапускается".

Оказалось: ещё 5 лет назад админ добавил cronjob с рестартом сервиса каждый час. Без документации. Без комментария.

И да, этот “магический костыль” маскировал реальные проблемы с памятью.

настроил нормальный мониторинг, исправил утечки и только после этого убрал этот cronjob. Сервис перестал "умирать" и "воскресать".

Вывод: если что-то работает "само собой" – скорее всего, это кто-то тайно подставил костыли.

А у вас попадались такие "магические cron’ы"? Делитесь историями 👇

#факап #cron #legacy #codetogo #itshchen
🔥2👍1