TGViewer
10 минут до кода 10 минут до кода @ten_minutes_to_code · 228 subscribers
Post #102 65
Изоляция контекста: Почему код не должен знать лишнего

Залитый в Git секрет — это не просто ошибка, это татуировка, которую не свести. Даже если вы удалите API-ключ в следующем коммите, он навсегда останется в истории репозитория.

Вы можете возразить “да кому нужен мой проект и мои секреты?” и я отвечу — ботам. Как только ваш код попадает в публичный доступ, у них уходит от 30 до 60 секунд, чтобы спарсить конфиги и начать выжигать ваш бюджет или сливать базу пользователей.

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

Механизм разделения

Файл .env — это простейшая связка «ключ=значение», которая служит прослойкой между логикой и инфраструктурой. Это позволяет реализовать концепцию, где одна и та же кодовая база ведет себя по-разному в зависимости от контекста:

1. Смена инструментов без переписывания логики. На локалке вы используете SQLite, чтобы не поднимать тяжелые контейнеры. В продакшене у вас развернут Postgres. Если тип базы зашит в коде через if/else, вы плодите технический долг. Если тип базы тянется из переменной DATABASE_TYPE, то ORM просто подхватывает нужный драйвер «под капотом» и ваш код остается девственно чистым.
2. Безопасность через абстракцию. Вместо того чтобы хардкодить API_KEY = "sk-12345...", вы пишете API_KEY = process.env.OPENAI_KEY. Теперь ваша логика работает с абстракцией, а реальный секрет подставляется системой только в момент исполнения.

Правила хорошего тона

Файл .env никогда не должен покидать пределы вашей локальной машины или сервера. Здесь в игру вступает .gitignore. Это ваш «вышибала», который гарантирует, что секреты не улетят в репозиторий. Без этой связки использование переменных окружения теряет смысл — вы просто создаете еще один файл для утечки.

Однако есть проблема: когда новый разработчик клонирует ваш проект, он видит пустую папку без понимания, какие ключи нужны для запуска. Поэтому стандарт здесь — файл .env.example.

Это «пустышка», где указаны только названия ключей:
DB_HOST=
API_TOKEN=
DEBUG_MODE=

Это декларация требований вашей системы. Коллега копирует этот файл, переименовывает в .env и вписывает свои значения.

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

Ставь 🔥 если побежал удалять секреты из git. А если остались вопросы или что-то звучит слишком абстрактно — пиши в комменты, обязательно разберем!

10МДК | ВЕБМастер
  • 🔥 4
  • 😁 3
More from @ten_minutes_to_code
  1. May 28, 2026Первый сезон получился про путь “от пользователя к инженеру”. Именно эту картину мы весь с…
  2. May 28, 2026Когда я запускал этот канал, у меня была довольно простая идея: писать каждый день коротки…
  3. May 7, 2026Почему нормализация БД — это чистая логика, а не бюрократия На любом ongoing-проекте требо…
  4. May 3, 2026🤔 А где новые посты? Сори что вот так пропал без предупреждения, но я думал что справлюсь…
  5. Apr 29, 2026Почему HTTPS не спасет ваши секреты Замочек в адресной строке браузера — это мощное успоко…
  6. Apr 28, 2026Целостность данных против иллюзии атомарности Начинающий разработчик видит базу данных как…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →