`.env` 파일 관리 그만: Go 기반 TTY와 Env Manager인 Fana‑Envy를 만나보세요

발행: (2025년 12월 19일 오전 07:14 GMT+9)
10 min read
원문: Dev.to

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
  1. Fana Envy 실행
    fana-envy
  2. 환경 전환
    ← / → 키를 눌러 developmentstagingproduction 순으로 전환합니다. UI 상단에 현재 로드된 파일 목록이 표시됩니다.
  3. 변수 편집
    리스트에서 DATABASE_URL을 선택하고 Enter를 눌러 값을 수정합니다. Ctrl+S 로 저장하면 해당 파일에 즉시 반영됩니다.
  4. 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 Logo
DEV Community Main Image

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

Future

Future Logo
Future Main Image

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

Open Forem

Open Forem Logo
Open Forem Main Image

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

Music Forem

Music Forem Logo
Music Forem Main Image

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

Vibe Coding Forem

Vibe Coding Forem Logo
Vibe Coding Forem Main Image

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

Security Forem

Security Forem Logo
Security Forem Main Image

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

Golf Forem

Golf Forem Logo
Golf Forem Main Image

추가 로고

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

Crypto Forem

Crypto Forem Logo
Crypto Forem Main Image

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

Forem Core

Forem Core Logo
Forem Core Main Image

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

Parenting

Parenting Logo
Parenting Main Image

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

Maker Forem

Maker Forem Logo
Maker Forem Main Image

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

HMPL.js Forem

HMPL.js Forem Logo
HMPL.js Forem Main Image

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

Back to Blog

관련 글

더 보기 »

프로젝트 구조 검사기

PSX는 프로젝트 유형(Node, Go 등)을 자동 감지하고, 저장소에 필수 파일이 있는지 확인하기 위해 일련의 규칙을 실행합니다. 누락된 것이 있으면…

Git-Scope 사용자 가이드

소개 Git‑Scope는 로컬 Git 저장소를 위한 터미널 대시보드입니다. 폴더로 cd‑ing 하면서 상태를 확인하는 일을 멈추세요. 프로젝트를 스캔하고 실시간으로 …

GVM (Go Version Manager) 사용 방법

GVM 설치 시스템에 GVM을 설치하려면 다음 단계를 따르세요. 1. 필요한 종속성을 설치합니다. bash sudo apt-get install curl git mercurial make binutils b...