Найти в Дзене
🔮 Dotenv — это прошлый век
Встречайте dotenvx Все знают .env файлы. Удобно для разработки. Но в продакшене начинается ад: · Где хранить секреты? В CI? В менеджере секретов? В голове? · Как синхронизировать .env между разработчиками? · Как понять, какие переменные вообще нужны? 🌌 dotenvx (от создателя оригинального dotenv) решает это. 🔄 Что нового: 1. Шифрование прямо в репозитории: # Вместо .env в git кладём .env.encrypted dotenvx encrypt # Расшифровывается ключом из переменной окружения dotenvx decrypt Секреты в git, но в зашифрованном виде. Ключ — только в продакшене. 2. Мульти-окружения: · .env.development · ...
2 месяца назад
🔮 TypeScript: Магия, которая делает JavaScript предсказуемым
Если JavaScript — это свободный художник, который рисует код по наитию, то TypeScript — это строгий архитектор, требующий чертёж перед началом стройки. Но что это на самом деле? Мифы и реальность. 🌀 Миф 1: «TypeScript — это отдельный язык.» Реальность: TypeScript — это надмножество JavaScript. Весь ваш валидный JS-код — уже валидный TS-код. TS добавляет к нему систему типов. Компилятор TS (tsc) превращает ваш код с типами обратно в чистый JS. 🌀 Миф 2: «TypeScript нужен, чтобы искать опечатки.» Реальность: Это лишь приятный бонус. Его главная сила — моделирование предметной области и документирование кода на уровне системы...
2 месяца назад
Аналитика (DevOps-тренд
) 🧿 GitOps: почему инфраструктура «пошла» в Git Раньше: DevOps-инженер заходит на сервер, руками набирает kubectl apply -f deployment.yaml. Или ещё страшнее — заходит в Jenkins и нажимает кнопку «Задеплоить». Проблема: Где правда? Кто и когда что поменял? Можно ли откатиться на состояние «вчера в 15:00»? 🌌 GitOps — это философия: Git — единственный source of truth для всей системы. Всё, что описывает желаемое состояние системы (манифесты Kubernetes, конфиги Terraform, переменные окружения), хранится в Git. Никаких ручных kubectl. Никаких «я сейчас быстренько поправлю на проде». 🔄 Как это работает (упрощённо): 1...
2 месяца назад
Инструмент (база данных
) 🗄️ SQLite: недооценённый тяжёловес Когда говорят «база данных», обычно вспоминают PostgreSQL, MySQL, MongoDB. А SQLite часто считают «игрушечной» БД для мобильных приложений. Это огромная недооценка. 🌀 Что такое SQLite на самом деле: · Это встраиваемая БД — не клиент-сервер, а библиотека, которая читает и пишет файл. · Полноценный SQL (почти весь стандарт, включая оконные функции, CTE, индексы). · ACID-транзакции (да, как в «взрослых» БД). · Размер библиотеки — менее 1 МБ. 🌊 Где SQLite незаменим: 1. Локальные-first приложения: · Десктопные приложения (Spotify, Slack используют SQLite на клиенте)...
2 месяца назад
Карьера (тест и самоанализ
) 🧭 Тест: Ваш уровень Seniority — миф или реальность? Все мы знаем эти грейды: Junior, Middle, Senior, Lead. Но что они на самом деле означают? Тикеты закрываешь быстро — ты Senior? Или что-то ещё? 🌀 Честный тест на самооценку: 1. Вам поставили задачу, которую вы никогда не делали. · A) Иду к тимлиду/коллеге: «Сделайте мне, я не знаю как». · B) Гуглю, нахожу туториал, делаю по аналогии. Если тупик — спрашиваю. · C) Оцениваю риски, разбиваю на подзадачи, выбираю инструмент, делаю прототип. Понимаю, как это впишется в существующую систему. · D) Думаю: «А нужна ли эта задача вообще? Какая бизнес-проблема за ней стоит? Может, можно решить проще?» --- 2...
2 месяца назад
📡 Bun: действительно ли это убийца npm/yarn/pnpm
? Новая JavaScript-среда (не просто пакетный менеджер!) от Jarred Sumner шумит на всех хедлайнах. Заявлено: невероятная скорость, встроенные инструменты, совместимость с Node.js. 🔎 Сравним по ключевым метрикам: (таблица выше) WebSocket, SQLite 🌌 Что это значит на практике? • bun install в 20-100x раз быстрее npm install. • Можно писать тесты и собирать проект без внешних инструментов. • Совместимость с package.json и большинством npm-пакетов. ⏱️ Но есть нюансы (пока): • Нативный API ещё сыроват (стабильность?). • Сообщество и плагины только формируются...
2 месяца назад
🧿 Как вести техдолг: практики для мидлов и тимлидов
Техдолг — как гравитация. Его нельзя победить, но можно им управлять. Иначе он раздавит проект. 🔭 Проблема: Часто техдолг копится «тихо»: устаревшая библиотека, кривой интерфейс, скопипащенный код. Команда привыкает, скорость падает незаметно. 🪢 Решение — ввести процесс, а не чистить ад-хок: Инвентаризация: Заведите публичный список (например, в Issues). Каждая запись — это боль, а не просто «обновить lodash». Пример: «Без обновления React Router мы не сможем использовать новую фичу X, страдает UX». Приоритизация по формуле: Влияние на бизнес (1-10) x Сложность решения (1-10) = Приоритет...
2 месяца назад
Инструмент (контейнеризация
) 📦 Distroless: контейнеры без лишнего веса Docker-образы жиреют. node:18 — 350 МБ. python:3.11 — 450 МБ. Мы тащим в продакшен пакетные менеджеры, шеллы, утилиты. Всё, что не нужно для рантайма, — это поверхность для атаки. 🌊 Distroless — это образы без всего лишнего: Нет shell, нет apt, нет пакетных менеджеров. Нет даже ls, cat, bash. Есть только ваше приложение и его runtime-зависимости. Сравнение: (таблица выше) 🔭 Как это использовать: # 1. Сборка (с толстым образом) FROM node:18 AS build WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # 2. Запуск (на дистролесс) FROM gcr...
2 месяца назад
🪐 Кейс: Как Notion отказывался от монолита и не сломал продукт
История перехода от гигантского Ruby on Rails монолита к сервисной архитектуре — учебник по осторожной эволюции сложной системы. ⛓️ Исходные условия: Один репозиторий, сотни моделей, тысячи endpoints. Любое изменение — риск для всей системы. Новым разработчикам нужны месяцы, чтобы начать эффективно работать. 🌀 Их подход — не «революция», а стратегическое извлечение: Определили границы сервисов по доменам (workspaces, documents, comments, payments), а не по техническим слоям. Создали «мост»: Внедрили механизм для постепенного переноса вызовов внутри монолита через абстракцию (типа API Gateway, но внутренний)...
2 месяца назад
Архитектура (паттерны
) 🕸 CQRS: когда разделение на чтение и запись — не усложнение, а спасение CRUD — это просто. Один и тот же объект, одна модель, одна БД. Всё хорошо, пока проект не вырастает. Проблемы классического CRUD на масштабе: Нагрузка несимметрична: чтения в 100 раз больше, чем записи, но они конкурируют за одни ресурсы. Бизнес-логика сложна: одна операция записи затрагивает 10 таблиц, а для чтения нужны данные из 5 разных агрегатов. Сложные запросы: для отчётов и аналитики нужны JOIN-ы, которые замедляют основной OLTP. 🌌 CQRS (Command Query Responsibility Segregation): Разделяем модель для записи и модель для чтения...
2 месяца назад
🌊 Фронтенд 2024: что после React? Зачем нужны Qwik и Astro
Эпоха «одно фреймворк на все случаи жизни» заканчивается. Наступает время специализированных инструментов. ⚡️ Qwik: Instant Loading (фокус на производительность) Проблема: React/Vue при hydration загружают и выполняют тонны JS, чтобы «оживить» статичную страницу. Решение Qwik: Приложение разбито на микрозадачи (резюмируемые). Загружается и выполняется только тот JS, который нужен для конкретного действия пользователя прямо сейчас. Итог: Почти нулевой Time to Interactive (TTI) даже на слабых устройствах. 🪐 Astro: Islands Architecture (фокус на контент) Проблема: Большинство страниц сайта — статичный контент...
2 месяца назад
🔭 5 must-have расширений VSCode для работы с Kubernetes
Если вы иногда заглядываете в кластер — эти инструменты превратят рутину в поток. 🧭 Kubernetes (Microsoft) Просмотр кластеров, нод, подов прямо в IDE. Apply/Delete манифестов без переключения на терминал. Интеграция с helm. 📡 Docker (Microsoft) Управление образами, контейнерами, Docker Compose. Просмотр логов, быстрый запуск/останов. 🔎 Kubernetes Lens (частично через интеграцию) Визуализация связей между ресурсами (что за сервис куда ведёт). Быстрая навигация по логам подов. 🪢 YAML (Red Hat) Автодополнение для Kubernetes манифестов и не только. Валидация синтаксиса и схем. 🌀 Dev Containers (Microsoft) Запуск VSCode внутри контейнера с pre-installed kubectl, helm, tools...
2 месяца назад