dev-tools
Словарь ↗Переменная окружения (Environment Variable)
Переменная окружения — это именованное значение, хранящееся в окружении операционной системы или платформы развёртывания (вне исходного кода приложения), которое запущенная программа может считать при старте или во время выполнения для настройки своего поведения — URL базы данных, API-ключи, переключатели функций или то, в каком окружении она работает (разработка, staging, production). Ключевой принцип, который они обеспечивают, — отделение конфигурации от кода: одна и та же кодовая база и артефакт сборки могут вести себя по-разному в разных окружениях исключительно в зависимости от того, какие переменные окружения установлены, без необходимости отдельных веток кода или захардкоженных значений на каждое окружение. Почему это важно для разработчиков AI/SaaS: переменные окружения — стандартный, безопасный способ работы с секретами (API-ключи, пароли базы данных) — их никогда не следует хардкодить в исходный код или коммитить в систему контроля версий, как из-за серьёзного риска безопасности (утёкший репозиторий на GitHub мгновенно раскрывает каждый секрет в нём), так и потому, что разным окружениям действительно нужны разные значения (URL staging-базы данных — это не URL production-базы данных). Почти каждый SDK и фреймворк — включая SDK провайдеров ИИ вроде Anthropic — по соглашению считывает свой API-ключ из переменной окружения (`ANTHROPIC_API_KEY`) именно для того, чтобы ключи никогда не оказывались захардкожены в кодовой базе. Как это работает: переменные окружения обычно устанавливаются на уровне ОС/шелла (`export API_KEY=abc123`), в файле `.env`, загружаемом библиотекой вроде `dotenv` для локальной разработки (при этом `.env` явно исключён из системы контроля версий через `.gitignore`), либо настраиваются через панель управления/CLI хостинг-платформы для staging и production (Vercel, Heroku, AWS — все предоставляют UI или CLI для их настройки на каждое развёртывание). Приложение считывает их во время выполнения через стандартный для языка механизм (`process.env.API_KEY` в Node.js, `os.environ["API_KEY"]` в Python). Практический пример: кодовая база SaaS-приложения содержит `const stripeKey = process.env.STRIPE_SECRET_KEY;` без какого-либо реального значения ключа где-либо в исходном коде. Локально файл `.env` разработчика (никогда не коммитится в Git) устанавливает `STRIPE_SECRET_KEY=sk_test_51H...`, указывающий на тестовый режим Stripe. В production панель хостинг-платформы имеет `STRIPE_SECRET_KEY`, установленный на реальный ключ `sk_live_...`, введённый один раз через защищённый интерфейс и никогда не появляющийся в кодовой базе вообще. Идентичный код приложения безопасно работает в обоих окружениях — тестовые списания локально, реальные списания в production — исключительно за счёт того, какое значение переменной окружения внедряется во время выполнения. Если бы тот же ключ был захардкожен в исходный файл, он навсегда попал бы в историю Git (даже если позже удалён из текущей версии файла) и был бы доступен любому с доступом к репозиторию — это именно та утечка, для предотвращения которой существуют переменные окружения.
Похожие термины