
tracethat.dev
Kacper Pietrzak · 코딩
설정 없는 디버깅을 내세우는 tracethat.dev는 설정이 필요 없는 원격 디버깅 도구다. JavaScript, Python, Go의 함수를 감싸면 그 인자와 반환값, 실행 시간, 오류를 라이브 디버그 UI로 스트리밍한다.

tracethat.dev 소개
About
tracethat.dev란
tracethat.dev는 코드 곳곳에 print를 흩뿌리는 데 지친 개발자를 위해 Kacper Pietrzak이 만든 오픈소스 원격 디버깅 도구다. 로그를 벽처럼 출력하고 관계없는 줄을 스크롤하는 대신, 함수 하나를 감싸면 도구가 쓸모 있는 정보를 알아서 모아준다. 원격 서버, 컨테이너, 백그라운드 작업처럼 일반 디버거를 붙이기 어려운 곳에서 돌아가는 코드를 디버깅하는 팀과 개인 개발자를 겨냥한다.
바탕에 깔린 발상은 단순하다. print로 디버깅하면 무엇을 기록할지 미리 정해야 하고, 예상이 틀릴 때마다 코드를 다시 돌려야 한다. tracethat.dev는 이걸 뒤집는다. 리포터가 인자, 반환값, 실행 시간, 호출 스택, 던져진 예외를 포착하므로 보통 한 번 실행하면 문제를 찾기에 충분하다.
대가는 범위다. Go의 타입 시스템이 돌아가는 방식 때문에 Go 리포터는 임의의 함수를 감쌀 수 없어서, Go 사용자는 이벤트를 손으로 기록한다. 이벤트는 서버에 한동안만 남으므로 장기 로그 보관 용도는 아니다. 게다가 리포터는 직접 코드에 추가해야 한다.
시작하기
- tracethat.dev에 접속해 새 세션을 연다. 사이트가 토큰을 만들어 주는데, 이 토큰이 방 식별자와 암호화 키를 겸한다.
- 쓰는 언어의 리포터를 설치한다.
npm install tracethat.dev,pip install tracethat,go get github.com/pietrzakacper/tracethat.dev/reporters/golang/tt중 하나다. registerToken("your-token")(JavaScript) 또는register_token('your-token')(Python)으로 앱에 토큰을 등록한다.- 지켜볼 함수를 감싸거나
tracethat.log로 단일 이벤트를 기록한 뒤 코드를 실행한다. - 이벤트가 실시간으로 브라우저에 흘러 들어오는 걸 보고, 펼치고 접고 걸러서 중요한 지점에 집중한다.
제품 정보
tracethat.dev의 요금, 지원 플랫폼, 성능을 한눈에 확인해 보세요.
추천 대상
이 도구가 가장 잘 맞는 사용자, 작업, 상황입니다.
사용자
- 백엔드 개발자
- JavaScript와 TypeScript 개발자
- Python 개발자
작업
- 로컬에서 재현되지 않는 함수 디버깅
- 느린 코드 경로 측정
- 조용한 예외 잡기
활용 상황
- 스테이징 서버의 백그라운드 작업이 노트북에서는 재현되지 않는 오류를 던진다. 실패하는 단계를 감싸면 실제 입력이 곧바로 브라우저로 간다.
- 웹 앱이 프로덕션에서만 말썽을 부린다. `script` 태그 리포터를 HTML에 넣으면 빌드 단계 없이 스트리밍이 시작된다.
- 짝을 이뤄 디버깅하거나 동료에게 도움을 청한다. 세션 토큰을 공유하면 둘이 같은 스트림을 동시에 본다.
주요 기능
한 줄로 끝나는 함수 추적
리포터의 핵심 동작은 함수를 감싸 모든 호출이 함수 추적 이벤트로 기록되게 하는 것이다. JavaScript에서는 가벼운 JavaScript 디버거로, Python에서는 실행 중인 코드에 들어가는 Python 디버거로 동작한다. JavaScript에서는 traceThat(hello)("world")라고 쓰면 도구가 인자, 반환값, 호출에 걸린 시간, 호출 스택, 던져진 예외를 가져온다. Python은 @tracethat 데코레이터로 같은 발상을 쓴다. print 한 줄 없이 이 모든 걸 얻는다.
라이브 스트리밍 웹 UI
이벤트는 새로고침을 기다리지 않는다. 웹 클라이언트는 서버와 소켓을 유지하며 새 이벤트가 생길 때마다 방으로 밀어 넣는다. 호출을 펼쳐 세부 정보를 모두 보고, 관심 없는 것은 접고, 특정 값으로 걸러낼 수 있다. 스크롤 버퍼가 아니라 추려낸 이벤트 목록을 읽도록 설계됐다.
토큰 기반 암호화
토큰은 방 식별자와 암호화 키 역할을 겸한다. 리포터는 이벤트가 앱을 떠나기 전에 암호화하고, 웹 클라이언트는 같은 토큰을 받아야만 복호화할 수 있다. 방은 토큰의 SHA-256 해시로 식별되므로, 서버는 그 세션에 해당하는 이벤트만 넘겨준다.
여러 언어를 위한 리포터
JavaScript/TypeScript, Python, Go용 리포터가 있다. JS 리포터는 npm에서 설치하며 단순한 script 태그로도 돌아가서 빌드 파이프라인이 없을 때 편하다. Python은 PyPI에서, Go는 GitHub에서 바로 설치한다. 모두 같은 서버와 같은 UI와 통신하므로 기술 스택이 섞여도 한곳에 모인다.
수동 이벤트 기록
함수 전체를 감싸고 싶지 않을 때는 한 지점에 표시를 남길 수 있다. tracethat.log('hello function started')가 이벤트를 기록하며, 추가 데이터도 함께 넘길 수 있다. 리포터가 함수를 일반적으로 감쌀 수 없는 Go에서 으뜸으로 쓰는 방법이고, 두 줄 사이에 점검 지점을 두고 싶은 사람에게도 맞는다.
메모리 내 서버와 자동 정리
서버는 이벤트를 영구 저장소에 쓰지 않고 메모리에 두었다가 한동안 지나면 지운다. 설정은 가볍게 유지되고 관리할 로그도 남지 않는다. 동시에 이벤트는 라이브 디버깅을 위한 것이지 지난주에 무슨 일이 있었는지 되짚는 용도가 아니라는 뜻이기도 하다.
장단점
장점
- 리포터를 추가하는 것 말고는 설정할 게 없다. 에이전트도, 수집기도, 저장소도 구성하지 않는다.
- 포착하는 데이터가 `print`보다 넓어서 인자, 반환값, 실행 시간, 호출 스택, 예외를 한 번에 아우른다.
- 필터와 펼치기/접기를 갖춘 라이브 UI 덕분에 실행 결과를 생 로그보다 훨씬 읽기 좋다.
- MIT 라이선스의 오픈소스라 코드를 읽거나 직접 호스팅하거나 기여할 수 있다.
- JavaScript, Python, Go에서 동작하므로 백엔드가 섞인 팀에 어울린다.
단점
- Go 리포터는 임의의 함수를 감쌀 수 없어서 Go 사용자는 이벤트를 손으로 기록해야 하고, JS나 Python보다 수작업이 늘어난다.
- 이벤트를 메모리에 두었다가 한동안 지나면 지우므로, 사후 조사에 쓸 영구 로그로는 다룰 수 없다.
- 리포터를 넣으려면 결국 소스 코드를 고쳐야 하므로, 편집할 수 없는 앱에는 무접촉이 아니다.
- 단일 유지관리자가 이끄는 작은 프로젝트에 사용자 기반도 크지 않아서, 커뮤니티 지원이 대형 상용 플랫폼보다 얇고 예외 상황은 직접 풀어야 할 수도 있다.
자주 묻는 질문
실행 중인 앱이 실제로 무엇을 하는지 보는 원격 디버깅 도구다. 함수를 감싸면 인자, 반환값, 실행 시간, 오류가 브라우저 UI로 스트리밍되어, 일반 디버거로 닿기 어려운 코드를 디버깅할 수 있다.
관련 콘텐츠
tracethat.dev와 관련된 도구, 스킬, 아티클을 살펴보세요.
tracethat.dev 대안
Forefront
Forefront · 코딩Forefront는 오픈소스 AI로 무언가를 만드는 웹 플랫폼이다. 대표적인 오픈소스 언어 모델을 자신의 데이터로 미세 조정하고, 성능을 평가하고, API로 실행하거나 내보내 직접 호스팅할 수 있다. 폐쇄형 플랫폼의 편의를 원하면서도 모델과 데이터의 소유권은 놓지 않으려는 개발자가 대상이다.
Startkit
StartKit.AI · 코딩Startkit은 AI SaaS와 AI 래퍼 제품을 만들기 위한 보일러플레이트다. 지루한 부분을 미리 연결해 둔 AI 스타트업 보일러플레이트라고 생각하면 된다. 인증, Stripe와 Lemon Squeezy 결제, 사용량 제한, 트랜잭션 이메일, 그리고 OpenAI, Anthropic, Groq, Llama와 통신하는 AI API 스타터 키트가 포함된다. 저장소를 복제하고 가격을 정한 뒤 사용자가 실제로 돈을 내는 부분에 착수하면 된다. React와 Tailwind 위의 Next.js로 만들어졌기 때문에 보일러플레이트 코드의 상당 부분이 이미 익숙하게 느껴진다.
Testim
Tricentis · 코딩Testim은 웹, 모바일, Salesforce 애플리케이션 전반에 걸쳐 엔드투엔드 테스트를 만들고 실행하는 AI 기반 테스트 자동화 플랫폼이다. 머신러닝에 기대어 인터페이스가 바뀌어도 테스트를 안정적으로 유지하므로, 팀은 깨진 셀렉터를 고치는 데 쓰는 시간을 줄인다. 오늘부터 쓸 수 있는 자동화 테스트 도구치고 나쁘지 않다. 브라우저에서 동작을 녹화해 테스트를 만들고, 더 세밀한 제어가 필요하면 JavaScript를 더한다. 바쁜 QA 팀에게 탄탄한 선택이다.
