CLI(Command Line Interface)를 통해 애플리케이션을 실행할 때, 환경 변수(Environment Variable)는 설정값을 유연하게 관리하고 배포 환경마다 다양한 조건을 적용하는 데 중요한 역할을 합니다. 복잡한 설정을 하드코딩하지 않고 외부에서 제어할 수 있도록 만들어 주기 때문에 보안성과 유지보수 측면에서도 핵심적인 요소입니다. 이 글에서는 CLI에서 환경 변수를 정의하고 사용하는 방법, 실무 적용 시 주의점까지 체계적으로 정리해 봅니다.
CLI의 환경 변수의 기본 개념과 설정 방식
환경 변수는 운영체제 또는 쉘(Shell)에서 정의되는 전역 설정값으로, CLI에서 프로그램 실행 시 외부 입력처럼 활용됩니다. 예를 들어 데이터베이스 주소, API 키, 운영 모드(mode) 등의 설정을 외부에서 주입할 수 있어, 코드 수정 없이도 실행 환경을 제어할 수 있습니다. CLI에서 환경 변수를 설정하는 방식은 플랫폼에 따라 다소 차이가 있습니다. UNIX 계열(Linux, macOS)에서는 다음과 같이 한 줄로 환경 변수와 명령어를 함께 실행할 수 있습니다:
API_KEY=123456 node app.js
Windows에서는 `set` 명령어 또는 PowerShell을 사용해야 합니다:
set API_KEY=123456 && node app.js
또는 `. env` 파일을 만들어 변수들을 한 곳에 정의하고, `dotenv` 같은 패키지를 통해 로드하는 방법도 널리 사용됩니다. 예:
.env 파일
API_KEY=123456
NODE_ENV=production
이때 Node.js에서는 다음과 같이 사용할 수 있습니다:
require('dotenv').config();
console.log(process.env.API_KEY);
환경 변수를 통해 민감한 정보를 분리해 보안성을 높일 수 있으며, 실행 환경마다 다른 설정값을 적용하는 데도 효과적입니다.
다양한 언어에서의 CLI 환경 변수 활용
환경 변수는 Node.js뿐만 아니라 다양한 언어와 CLI 도구에서도 광범위하게 사용됩니다. 예를 들어 Python에서는 `os.environ.get()`을 통해 환경 변수를 가져올 수 있으며, 다음과 같이 사용합니다:
import os
api_key = os.environ.get("API_KEY")
Go 언어에서는 `os.Getenv("KEY")`를 통해 값을 읽을 수 있고, 기본적인 `flag` 패키지와 병행하여 환경 기반 설정을 CLI 옵션으로 확장할 수도 있습니다. Java에서는 `System.getenv("KEY")`를 통해 시스템 환경변수를 가져오며, Spring Boot 같은 프레임워크에서도 환경 변수는 프로퍼티 설정의 핵심 요소로 활용됩니다. 또한 Docker 환경에서 CLI 명령어를 통해 컨테이너 내부에 환경 변수를 주입할 수도 있습니다:
docker run -e API_KEY=123456 myapp
CI/CD 도구(GitHub Actions, GitLab CI 등)에서도 환경 변수는 필수적으로 사용됩니다. 시크릿 설정을 통해 토큰이나 키 값을 저장하고, 워크플로에서 CLI 명령어와 함께 사용하는 방식입니다. 이처럼 환경 변수는 CLI 기반 자동화 및 확장 가능한 앱 개발의 핵심 도구로써, 다양한 언어와 플랫폼에서 일관되게 활용되고 있습니다.
CLI 프로젝트에서 유지보수 관리 전략
실제 프로젝트에서는 환경 변수의 체계적인 관리가 중요합니다. 첫째, `. env` 파일은 절대 버전관리(Git)에 포함되지 않아야 하며, `. gitignore`에 등록해 보안을 확보해야 합니다. 둘째, 환경 변수에 대한 문서를 작성하여 어떤 설정값이 필요한지 명시적으로 관리해야 협업 시 혼선을 줄일 수 있습니다. 셋째, 로컬 개발 환경, 스테이징, 프로덕션 등 환경별로 `. env.development`, `. env.production` 등으로 구분하여 각기 다른 설정을 자동으로 적용할 수 있는 구조가 이상적입니다. 넷째, 런타임 환경에서 누락된 환경 변수가 있을 경우 앱이 실패하거나 이상 동작을 하지 않도록, 모든 환경 변수에 대해 기본값이나 예외 처리를 코드에 반드시 포함시켜야 합니다. 예를 들어:
const apiKey = process.env.API_KEY || 'default-key';
마지막으로, 환경 변수는 보안성과 직결되므로 민감한 정보(API 키, DB 패스워드 등)는 클라우드의 시크릿 매니저, CI/CD Vault, OS 환경 설정 등 보다 안전한 저장소를 사용하는 것이 좋습니다. 환경 변수 관리 전략이 정교할수록 프로젝트의 유지보수성과 확장성은 더 높아집니다.
CLI 환경에서의 환경 변수 관리는 단순한 설정을 넘어서 보안, 유지보수, 자동화의 기반이 되는 중요한 구성 요소입니다. 다양한 언어와 플랫폼에서 일관성 있게 사용하는 전략을 세우고, 실무에 적합한 관리 체계를 도입해 보세요. 더 안전하고 유연한 프로젝트 운영이 가능해질 것입니다.