본문으로 건너뛰기

Beancount vs hledger: 나에게 맞는 텍스트 기반 회계 도구는?

· 약 8분
Mike Thrift
Mike Thrift
Marketing Manager

플레인 텍스트 회계(Plain-text accounting)로 재무 관리를 하기로 결정했다면 이미 현명한 선택을 내린 것입니다. 재무 데이터는 귀하가 완전히 제어하고 버전 관리가 가능하며 벤더 종속(vendor lock-in)이 없는, 사람이 읽을 수 있는 파일에 저장됩니다. 하지만 이제 다음 질문이 생깁니다. 어떤 도구를 사용해야 할까요?

Beancount와 hledger는 현재 가장 인기 있는 두 가지 플레인 텍스트 회계(PTA) 도구입니다. 둘 다 오픈 소스이며 활발하게 유지 관리되고 있으며, 개인 예산 관리부터 복잡한 투자 포트폴리오에 이르기까지 모든 것을 처리할 수 있습니다. 하지만 재무 데이터를 기록, 검증 및 분석하는 방식에 있어서는 근본적으로 다른 접근 방식을 취합니다.

2026-03-17-beancount-vs-hledger-comparison-plain-text-accounting

이 가이드는 워크플로, 경험 수준 및 재무 추적 요구 사항에 맞는 도구를 선택할 수 있도록 주요 차이점을 분석합니다.

핵심 철학: 엄격함 vs. 유연함

Beancount와 hledger의 가장 큰 차이점은 기능이 아니라 사고방식입니다.

Beancount는 엄격한 선생님과 같습니다. 사용자가 데이터 입력 실수를 할 것이라고 가정하고 이를 조기에 발견할 수 있는 안전 장치를 구축합니다. 모든 계정은 사용하기 전에 명시적으로 열어야(open) 합니다. 모든 거래의 합계는 0으로 균형이 맞아야 합니다. 통화는 엄격한 형식을 따라야 합니다. 무언가 잘못된 것이 있으면 Beancount는 사용자가 수정할 때까지 파일 처리를 거부합니다.

hledger는 관대한 친구와 같습니다. 더 완화된 구문을 사용하며, 계정 사전 선언을 건너뛸 수 있게 해주고, 심지어 균형 항목을 유추할 수도 있습니다. 최소한의 설정으로 재무 추적을 시작하고 필요에 따라 점진적으로 구조를 추가할 수 있습니다.

두 가지 접근 방식 중 어느 것도 객관적으로 더 낫다고 할 수 없습니다. 오류가 눈덩이처럼 불어나 몇 시간 동안 디버깅해야 하는 상황이 오기 전에 미리 잡아내는 것을 중요하게 생각한다면 Beancount의 엄격함은 훌륭한 기능입니다. 빠르게 시작하고 싶고 유연성을 선호한다면 hledger의 관대함이 장점이 될 것입니다.

구문 및 데이터 형식

두 도구 모두 거래 내역을 일반 텍스트 파일로 저장하지만, 구문 규칙에는 유의미한 차이가 있습니다.

Beancount 구문

2026-03-15 * "Whole Foods" "Weekly groceries"
Expenses:Food:Groceries 85.42 USD
Liabilities:CreditCard:Visa

주요 규칙:

  • 날짜는 ISO 8601 형식(YYYY-MM-DD)을 사용합니다.
  • 통화는 반드시 대문자(예: USD, EUR)여야 하며, $와 같은 기호는 사용할 수 없습니다.
  • 계정 이름은 콜론으로 구분된 최소 두 개의 구성 요소가 필요합니다 (예: Expenses:Food).
  • 설명(Description)은 따옴표로 묶인 문자열이어야 합니다.
  • 모든 계정은 open 지시어를 통해 명시적으로 열어야 합니다.

hledger 구문

2026-03-15 Whole Foods | Weekly groceries
expenses:food:groceries $85.42
liabilities:creditcard:visa

주요 규칙:

  • 더 유연한 날짜 형식을 지원합니다.
  • $와 같은 통화 기호를 사용할 수 있습니다.
  • 계정 이름은 소문자일 수 있으며 더 자유로운 형태를 가집니다.
  • 설명에 따옴표가 필요하지 않습니다.
  • 계정을 미리 선언할 필요가 없습니다.

결론: Beancount의 더 엄격한 구문은 초기 작업이 더 많지만 모호성이 적다는 것을 의미합니다. hledger의 완화된 구문은 시작하기 쉽지만 일관성을 유지하기 위해 더 많은 자제력이 필요합니다.

데이터 무결성 및 검증

이 부분에서 Beancount는 진정으로 차별화됩니다.

잔액 검증 (Balance Assertions)

두 도구 모두 기록된 잔액이 은행 명세서와 일치하는지 확인하는 잔액 검증(Balance Assertions) 기능을 지원합니다. 하지만 작동 방식이 다릅니다.

Beancount는 순서에 무관한 날짜 기반 잔액 검증을 사용합니다. 거래 파일의 순서를 원하는 대로 재배치해도 검증은 여전히 올바르게 작동합니다. 반면 hledger의 검증은 파일 내의 순서에 의존하므로 거래 위치를 옮기면 검증이 깨질 수 있습니다.

재고 및 투자 자산 추적

투자를 추적하는 사람에게 이 점은 매우 중요합니다. Beancount는 엄격한 재고 기록(Inventory Booking)을 강제합니다. 사지 않은 주식을 팔 수 없으며, 취득 원가를 정밀하게 추적합니다. 이는 자본 이득 계산이 실제와 어긋나는 미묘한 버그인 "취득 원가 누수"를 방지합니다.

hledger도 상품(Commodities)과 로트(Lots)를 처리하지만 강제성은 적습니다. 더 유연하지만, 이는 세금 신고 때까지 눈치채지 못할 실수를 허용할 수도 있음을 의미합니다.

계정 카테고리

Beancount는 모든 계정이 자산(Assets), 부채(Liabilities), 수익(Income), 비용(Expenses), 자본(Equity)의 다섯 가지 카테고리 중 하나에 속해야 합니다. 이러한 제약 덕분에 적절한 대차대조표와 손익계산서를 자동으로 생성할 수 있습니다.

hledger는 필수 루트 카테고리 없이 임의의 계정 계층 구조를 허용합니다. 이는 더 많은 자유를 주지만, 유의미한 재무 보고서를 얻으려면 수동으로 관례를 따라야 함을 의미합니다.

사용자 인터페이스 및 보고

Beancount + Fava

Beancount의 가장 돋보이는 기능은 Fava입니다. Fava는 다음과 같은 기능을 제공하는 세련된 웹 인터페이스입니다.

  • 대화형 차트 및 그래프 (순자산 추이, 지출 내역 분석, 수입 vs 지출)
  • 소비 카테고리에 대한 트리맵(Treemap) 시각화
  • 계정, 태그, 기간 및 수취인별 강력한 필터링
  • 맞춤형 보고서를 위한 쿼리 언어
  • 원장 파일을 위한 내장 에디터

Fava는 플레인 텍스트 회계 생태계에서 최고의 UI로 널리 인정받고 있습니다. 대시보드와 차트를 원하는 시각적인 사람이라면 이는 Beancount를 선택하게 만드는 강력한 요인입니다.

hledger 인터페이스

hledger는 다중 인터페이스 접근 방식을 취합니다:

  • CLI: 수십 개의 내장 명령(balance, register, incomestatement, cashflow 등)을 갖춘 풍부한 명령줄 보고 기능
  • hledger-ui: 계정 및 거래를 대화식으로 탐색하기 위한 터미널 기반 UI
  • hledger-web: 기본적인 탐색 및 데이터 입력을 위한 간단한 웹 인터페이스

hledger의 CLI는 기본적으로 Beancount의 CLI보다 더 강력합니다. 터미널에서 주로 작업하며 빠르고 스크립트 작성이 가능한 보고서를 원한다면 hledger가 적합합니다.

성능

hledger는 Haskell로 작성되었으며 초당 약 25,000건의 트랜잭션을 처리합니다. 대부분의 개인 금융 사용자에게 두 도구 모두 사실상 즉각적인 속도를 보여줍니다. 하지만 여러 엔티티에 걸친 수년간의 거래와 같은 대규모 데이터 세트를 관리하는 경우, hledger의 원시 속도가 우위를 점합니다.

Beancount(v3)는 핵심 파서가 C++로 재작성되어 원래의 Python 구현에 비해 성능이 크게 향상되었습니다. 일반적인 개인 또는 소규모 비즈니스 용도에서는 차이를 느끼지 못할 것입니다.

확장성 및 플러그인

Beancount 플러그인

Beancount는 놀라울 정도로 강력한 네이티브 Python 플러그인 시스템을 갖추고 있습니다. 플러그인을 통해 다음이 가능합니다:

  • 거래 자동 분할 (예: 공동 비용)
  • 반복 거래 생성
  • 사용자 정의 검증 규칙 적용
  • 처리 파이프라인에서의 데이터 변환

Python 생태계를 활용한다는 것은 플러그인에서 모든 Python 라이브러리를 사용할 수 있음을 의미합니다. 이로 인해 Beancount는 복잡한 재무 시나리오에 맞춰 고도로 맞춤화될 수 있습니다.

hledger 확장 기능

hledger는 다음을 통해 확장성을 제공합니다:

  • 은행 명세서 자동화를 위한 CSV 가져오기 규칙
  • CLI 출력을 사용하는 사용자 정의 보고서 스크립트
  • 통합 구축을 위한 HTTP-JSON API
  • Haskell 기반 추가 명령

hledger의 CSV 가져오기 시스템은 특히 좋은 평가를 받습니다. CSV 열을 계정 포스팅에 매핑하는 규칙 파일을 통해 은행 명세서 가져오기를 간단하게 자동화할 수 있습니다.

시작하기 및 학습 곡선

hledger: 낮은 진입 장벽

hledger는 일반적으로 시작하기가 더 쉽습니다:

  • 단일 바이너리 설치 (Windows를 포함한 탁월한 크로스 플랫폼 지원)
  • 파일을 생성하고 즉시 거래 기록 시작 가능
  • 계정을 선언하거나 엄격한 명명 규칙을 따를 필요 없음
  • 포괄적이고 잘 관리된 문서
  • 초보자에게 친숙한 리소스를 갖춘 활발한 커뮤니티

Beancount: 더 많은 설정, 더 체계적인 구조

Beancount는 더 많은 초기 설정이 필요합니다:

  • Python 및 Beancount 설치 (웹 인터페이스를 위한 Fava 포함)
  • 계정을 사용하기 전에 계정 선언 생성
  • 첫날부터 엄격한 구문 규칙 준수
  • 5가지 계정 카테고리 학습

대신 이러한 사전 투자는 보상을 제공합니다. 잘 구조화된 Beancount 장부는 데이터가 늘어남에 따라 유지보수, 검증 및 감사가 더 쉽습니다.

커뮤니티 및 생태계

두 프로젝트 모두 활발하고 지원적인 커뮤니티를 보유하고 있습니다:

  • Beancount: 활발한 메일링 리스트, 성장하는 제3자 도구 생태계(가져오기 도구, 플러그인, Fava 확장 기능), 강력한 Python 개발자 커뮤니티
  • hledger: 빈번한 릴리스(대략 분기별), 방대한 문서, 활발한 채팅 채널, 그리고 더 넓은 plaintextaccounting.org 커뮤니티

두 도구 모두 광범위한 플레인 텍스트 회계(plain-text accounting) 운동의 혜택을 받으며, 이는 리소스, 가져오기 도구 및 커뮤니티 지식을 공유함을 의미합니다.

도구 간 마이그레이션

한 가지 도구로 시작했다가 나중에 바꾸고 싶은 경우, 마이그레이션이 가능하지만 아주 간단하지는 않습니다:

  • hledger에서 Beancount로: hledger print -o tmp.beancount를 사용하여 시작점으로 삼은 다음, 구문을 조정합니다(계정 선언 추가, 통화 형식 수정, 계정 이름 재구조화 등).
  • Beancount에서 hledger로: bean-report 도구를 사용하여 내보낼 수 있지만, 일반적으로 수동 수정이 필요합니다.

플레인 텍스트 철학을 공유한다는 것은 데이터가 결코 특정 도구에 종속되지 않음을 의미합니다. 수동 정리가 다소 필요하더라도 언제든지 파일을 읽고 변환할 수 있습니다.

빠른 비교 표

기능Beancounthledger
언어Python/C++Haskell
구문 엄격성엄격함유연함
계정 선언필수선택 사항
최고의 UIFava (웹)CLI + TUI
투자 추적탁월함양호함
플러그인 시스템Python 플러그인스크립트 + API
CSV 가져오기가져오기 도구 경유내장 규칙
학습 곡선가파름완만함
잔액 검증순서 무관파일 순서에 의존
성능빠름 (v3)매우 빠름
Windows 지원양호함탁월함

어떤 것을 선택해야 할까요?

다음과 같은 경우 Beancount를 선택하세요:

  • 재무 상태를 시각화할 수 있는 아름다운 웹 대시보드를 원하는 경우
  • 투자를 추적하고 정밀한 취득 원가 관리가 필요한 경우
  • 오류를 조기에 발견하고 일관성을 강제하는 시스템을 선호하는 경우
  • Python에 익숙하고 강력한 플러그인 확장성을 원하는 경우
  • 순서에 상관없는 파일 구성을 중요하게 생각하는 경우

다음과 같은 경우 hledger를 선택하세요:

  • 빠르고 스크립트 작성이 가능한 보고서를 사용하여 터미널에서 작업하는 것을 선호하는 경우
  • 최소한의 구성으로 빠르게 시작하고 싶은 경우
  • 탁월한 Windows 지원이 필요한 경우
  • 자신의 스타일에 맞게 조정되는 유연한 구문을 선호하는 경우
  • 빈번한 업데이트와 활발한 유지보수를 원하는 경우

솔직한 진실: 두 도구 모두 훌륭합니다. 플레인 텍스트 회계 커뮤니티는 어떤 도구를 사용하든 환영하며, 한 가지 도구로 배운 기술은 다른 도구로도 쉽게 전이됩니다. 자신의 워크플로우에 맞는 도구를 선택하여 한 달 동안 사용해 보고, 필요에 따라 조정해 보세요.

Beancount.io로 재무 관리를 간소화하세요

Beancount를 선택하든 hledger를 선택하든, 텍스트 기반 회계(plain-text accounting)는 여러분이 직접 금융 데이터를 관리할 수 있도록 해줍니다. 호스팅된 Fava 대시보드, 자동 은행 내역 가져오기, 인프라 관리의 번거로움이 없는 Beancount의 강력한 기능을 원하신다면, Beancount.io가 이를 손쉽게 만들어 드립니다. 무료로 시작하여 설정에 대한 부담 없이 텍스트 기반 회계를 경험해 보세요.