`.env` 파일 관리 그만: Go 기반 TTY와 Env Manager인 Fana‑Envy를 만나보세요
Source: Dev.to
.env 파일을 뒤적이는 일은 이제 그만 – Go 기반 TTY와 환경 변수 관리자를 갖춘 Fana Envy를 만나보세요
프로젝트를 진행하면서 서로 다른 환경(development, staging, production 등)마다 별도의 .env 파일을 유지해야 하는 경우가 많습니다. 파일을 복사하고, 이름을 바꾸고, 때때로 잘못된 파일을 로드하면서 “내가 지금 어떤 환경을 사용하고 있지?” 라는 질문에 머리를 싸매게 됩니다.
이 글에서는 이러한 번거로움을 해소해 주는 Fana Envy라는 도구를 소개합니다. Go 로 작성된 TTY(터미널 UI)와 내장된 환경 변수 관리 기능을 제공해, 하나의 인터페이스에서 여러 .env 파일을 손쉽게 전환하고 편집할 수 있습니다.
왜 .env 파일 관리가 어려운가?
-
파일 복제와 이름 변경
환경마다 별도의 파일을 만들다 보면, 파일을 복제하거나 이름을 바꾸는 과정에서 실수가 발생합니다. -
동일한 변수의 중복 정의
같은 변수명이 여러 파일에 존재하면, 어느 파일이 실제로 로드되는지 파악하기 어렵습니다. -
CI/CD 파이프라인과의 불일치
로컬에서는dev.env를 사용하고, 배포 환경에서는prod.env를 사용한다면, 배포 스크립트가 올바른 파일을 가리키는지 매번 확인해야 합니다. -
버전 관리 충돌
.env파일을 Git에 포함시키면 팀원 간 충돌이 발생하고, 제외하면 배포 시 누락될 위험이 있습니다.
Fana Envy가 제공하는 솔루션
| 기능 | 설명 |
|---|---|
| 멀티 파일 로드 | 하나의 인터페이스에서 여러 .env 파일을 동시에 로드하고, 우선순위를 지정할 수 있습니다. |
| 실시간 변수 오버라이드 | 현재 세션에서 변수 값을 즉시 수정하고, 변경 사항을 파일에 바로 저장합니다. |
| 환경 스위칭 | 키보드 단축키(←/→)를 사용해 정의된 환경(예: development, staging, production)을 빠르게 전환합니다. |
| 자동 완성 | 변수명과 파일명을 자동 완성해 입력 실수를 최소화합니다. |
| CI/CD 친화적 | fana-envy export 명령으로 현재 세션의 변수를 export 형식으로 출력해 파이프라인에 바로 연결할 수 있습니다. |
| 경량 | Go 로 컴파일된 단일 바이너리이며, 별도의 런타임 의존성이 없습니다. |
설치 방법
# Homebrew (macOS / Linux)
brew install adrian-fathan/tap/fana-envy
# 직접 바이너리 다운로드 (Linux, macOS, Windows)
curl -L https://github.com/adrian-fathan/fana-envy/releases/download/v1.2.0/fana-envy_1.2.0_$(uname -s)_$(uname -m).tar.gz | tar xz
sudo mv fana-envy /usr/local/bin/
Tip: 최신 버전은 GitHub Releases 페이지에서 확인할 수 있습니다.
기본 사용법
# 현재 디렉터리의 .env 파일들을 자동으로 감지하고 UI를 실행합니다.
fana-envy
주요 키 바인딩
| 키 | 동작 |
|---|---|
← / → | 정의된 환경(예: dev, stg, prod) 사이 전환 |
↑ / ↓ | 변수 리스트에서 이동 |
Enter | 선택한 변수를 편집 |
Ctrl+S | 현재 파일에 변경 사항 저장 |
Ctrl+E | 현재 세션의 변수를 export 형식으로 출력 |
Ctrl+Q | 프로그램 종료 |
예시 시나리오
프로젝트 루트에 다음과 같은 파일이 있다고 가정합니다.
.env
.env.development
.env.staging
.env.production
- Fana Envy 실행
fana-envy - 환경 전환
← / →키를 눌러development→staging→production순으로 전환합니다. UI 상단에 현재 로드된 파일 목록이 표시됩니다. - 변수 편집
리스트에서DATABASE_URL을 선택하고Enter를 눌러 값을 수정합니다.Ctrl+S로 저장하면 해당 파일에 즉시 반영됩니다. - CI 파이프라인에 적용
fana-envy export > .env.ci # 이제 .env.ci 를 CI 스크립트에서 source 하면 됩니다. source .env.ci
고급 기능
1️⃣ 파일 병합 순서 지정
.fanaenv.yml 파일을 프로젝트 루트에 두면 파일 로드 순서를 명시할 수 있습니다.
order:
- .env
- .env.development
- .env.local
2️⃣ 변수 템플릿
환경 변수 값에 ${OTHER_VAR} 형태의 템플릿을 사용할 수 있습니다. Fana Envy는 실행 시점에 이를 자동으로 확장합니다.
API_ENDPOINT=https://api.${ENV}.example.com
3️⃣ 플러그인 시스템
Go 플러그인 인터페이스를 구현하면, 커스텀 검증 로직이나 비밀 관리 서비스(AWS Secrets Manager, HashiCorp Vault 등)와 연동할 수 있습니다.
// plugin/example.go
package main
import "github.com/adrian-fathan/fana-envy/plugin"
func Validate(key, value string) error {
// 예: 특정 변수는 반드시 URL 형식이어야 함
return nil
}
func main() {
plugin.RegisterValidator(Validate)
}
플러그인은 fana-envy --plugin ./myplugin.so 로 로드합니다.
마무리
.env 파일을 일일이 손으로 관리하던 시절은 이제 끝났습니다. Fana Envy는 터미널 기반 UI와 강력한 환경 변수 관리 기능을 결합해, 개발자와 운영자가 “어떤 환경을 사용하고 있지?” 라는 고민 없이 바로 작업에 집중할 수 있게 해줍니다.
- 경량: 단일 바이너리, 별도 의존성 없음
- 유연: 파일 병합, 템플릿, 플러그인 지원
- 생산성: 실시간 편집, 자동 완성, CI 친화적 출력
지금 바로 설치하고, 환경 변수 관리에 드는 시간을 크게 절감해 보세요!
이 글은 2024년 3월 기준 최신 버전인 v1.2.0을 기준으로 작성되었습니다. 새로운 기능이나 버그 수정은 GitHub 릴리즈 노트를 참고하시기 바랍니다.
Source: …
Forem 피드
DEV 커뮤니티


DEV Community – 소프트웨어 개발을 논의하고 최신 정보를 유지하며 소프트웨어 경력을 관리할 수 있는 공간입니다.
Future


Future – AI, VR, 암호화폐, 양자 컴퓨팅 등 과학·기술 관련 뉴스와 토론을 다룹니다.
Open Forem


Open Forem – Forem 커뮤니티를 위한 일반 토론 공간입니다. 다른 곳에 속하지 않는 주제라면 여기에서 다룹니다.
Music Forem


Music Forem – 작곡, 공연, 장비, 최신 음악 트렌드 등 음악과 관련된 모든 것을 다룹니다.
Vibe Coding Forem


Vibe Coding Forem – AI 소프트웨어 개발을 논의하고 우리가 만들고 있는 프로젝트를 공유합니다.
Security Forem


Security Forem – 보안과 관련된 모든 것을 위한 중앙 허브입니다. 윤리적 해킹, CTF, GRC, 커리어 개발 등 초보자부터 전문가까지 모두를 위한 내용이 포함됩니다.
Golf Forem


추가 로고
(Gamers, Popcorn Movies & TV, DUMB DEV, Design Community) 은 원본 내용에서 추가 세부 정보 없이 나열되었습니다.*
Crypto Forem


Crypto Forem – 비트코인부터 프로토콜 개발, DeFi, NFT, 시장 분석까지 모든 암호화폐 관련 주제를 다루는 협업 커뮤니티.
Forem Core


Forem Core – 핵심 Forem 오픈소스 소프트웨어 프로젝트를 논의합니다 — 기능, 버그, 성능, 자체 호스팅 등.
Parenting


Parenting – 부모들이 아이를 키우면서 겪는 기쁨, 도전, 지혜를 나누는 공간. 우리는 서로를 위해 여기 있습니다.
Maker Forem


Maker Forem – 메이커, 취미 생활자, 전문가들이 Arduino, Raspberry Pi, 3D 프린팅 등 다양한 주제를 논의하는 커뮤니티.
HMPL.js Forem


HMPL.js Forem – HMPL.js를 사용해 빠르고 가벼운 웹 앱을 구축하는 개발자를 위한 공간. 프로젝트를 공유하고, 질문을 하고, 서버‑구동 템플릿에 대해 논의합니다.