Henry

TrackFollows 파일 분석 실패 줄이기

· 6분 읽기

매일 실패 로그를 보며 HTML, 손상된 ZIP, 개별 파일처럼 예상하지 못한 입력을 처리했다. 출시 두 달 누적 방문자 중 50.4%가 분석을 완료했다.

2025년에 Velog에 쓴 글을 다시 정리했다.

첫 달 운영 기록을 쓸 때 방문자는 12,607명이었고 분석 결과까지 본 사용자는 약 28%였다. 출시 뒤에는 이벤트 로그와 에러 로그를 거의 매일 확인했다.

인스타그램 데이터를 내려받는 과정에는 선택지가 많다. 파일 형식이나 계정을 하나만 잘못 골라도 사이트에서 처리할 수 없는 파일이 만들어졌다. 처음에는 가이드를 더 자세히 쓰면 충분할 줄 알았다.

그런데 같은 실패가 계속 반복됐다. 사용자가 가이드를 안 읽는 문제라기보다 서비스가 자주 들어오는 입력을 받지 못하고 있었다.

HTML 파일도 바로 분석하게 바꿨다

처음에는 JSON 파일만 지원했다. 인스타그램의 다운로드 기본값은 HTML이라 형식을 바꾸지 않은 사용자는 아래 메시지만 보고 다시 파일을 받아야 했다.

JSON 파일만 지원할 때 보여주던 HTML 파일 오류

ZIP 안에서 HTML 파일을 읽는 파서를 추가했다. 이후 한 달 동안 약 1,800명이 HTML 파일로 분석을 완료했다.

JSON과 HTML 형식별 분석 완료 사용자

Android 네이버 앱에서 ZIP이 손상됐다

Can't find end of central directory 에러도 계속 보였다. 처음에는 JSZip 문제인 줄 알고 저장소에 이슈를 등록했다.

로그를 환경별로 나눠보니 이 에러가 발생한 사용자의 94%가 모바일이었고 그중 96%가 Android였다.

손상된 ZIP 오류가 발생한 기기와 운영체제 비율

Android 기기에서 다운로드를 반복해보니 네이버 앱을 기본 브라우저로 쓸 때 ZIP이 손상되는 경우가 있었다. 알집으로도 열리지 않아 클라이언트에서 복구할 수 있는 파일은 아니었다.

이 에러가 잡히면 다른 브라우저에서 다시 다운로드하도록 안내했다. 안내에서 바로 브라우저 변경 방법을 열 수 있게 했다.

네이버 앱에서 손상된 ZIP을 올렸을 때 보여주는 안내

Android 기본 브라우저를 변경하는 방법을 설명한 페이지

ZIP 대신 개별 파일을 받은 사용자도 있었다

인스타그램에서 파일을 받을 때 기기에 다운로드가 아니라 Google Drive 같은 전송 대상을 고르면 ZIP 대신 여러 파일이 풀린 상태로 저장된다.

인스타그램 데이터 다운로드 위치 선택 화면

기존 업로드 화면은 ZIP만 받을 수 있었다. followers_1following 파일을 각각 올리는 분석 페이지를 따로 만들었다. JSON과 HTML을 모두 받게 했다.

TrackFollows 개별 파일 분석 화면

Facebook 계정 파일을 구분했다

에러 로그에는 facebook_으로 시작하는 파일도 들어왔다. Instagram과 Facebook 계정이 같이 로그인된 상태에서는 데이터를 받을 계정을 선택하는 단계가 나온다. 여기서 Facebook을 선택한 파일이었다.

Instagram 데이터를 받을 계정을 선택하는 가이드

업로드한 파일명과 내부 경로를 보고 Facebook 데이터를 구분했다. 이 경우에는 Instagram 계정을 다시 선택하도록 오류 메시지에 적었다.

Facebook 데이터가 들어왔을 때 보여주는 오류 안내

모든 정보가 들어 있는 큰 ZIP도 처리했다

파일 크기가 유난히 큰 ZIP도 있었다. 인스타그램에서 팔로워 및 팔로잉만 고르지 않고 사용 가능한 모든 정보를 선택해 받은 파일이었다.

Instagram에서 일부 정보만 선택하는 화면

폴더 구조가 더 깊고 다른 파일도 많아서 처음에는 필요한 파일을 찾지 못했다. ZIP 전체를 순회하면서 팔로워와 팔로잉 파일을 찾도록 탐색 범위를 넓혔다.

두 달 누적 수치를 다시 봤다

3월 5일부터 5월 5일까지 누적 방문자는 63,479명이었고 analysis_completed가 확인된 사용자는 31,996명이었다. 방문자 대비 50.4%다.

출시 두 달 누적 방문자와 분석 완료 사용자

첫 달 로그에서는 분석 완료 사용자 3,700명과 실패 사용자 479명이 확인됐다. 두 달 누적 로그에서는 완료 사용자 약 32,000명과 실패 사용자 약 1,500명이었다.

출시 첫 달 분석 완료와 실패 이벤트

출시 두 달 누적 분석 완료와 실패 이벤트

완료 사용자 대비 실패 사용자 비율로 계산하면 첫 달은 12.9%, 두 달 누적은 4.7%였다. 서로 같은 길이의 기간을 나눈 비교는 아니다. 이 숫자만으로 어느 수정이 얼마나 영향을 줬다고 말하기도 어렵다. 다만 지원하는 파일 형식을 늘린 뒤 실패 비율이 낮아지는 흐름은 확인할 수 있었다.

같은 기간 검색 유입도 늘었다. 5월 5일에 확인한 Search Console에서는 일반 키워드 클릭이 첫 달보다 많아졌고, 인스타 언팔 확인 사이트 검색 결과에서 상위에 노출되는 것도 확인했다. 검색 순위는 계속 바뀌기 때문에 당시 화면으로만 남겨둔다.

출시 두 달 동안의 Google Search Console 검색 유입

2025년 5월에 확인한 TrackFollows 검색 노출 화면

이후 3개월 누적 방문자는 약 14만 명까지 늘었다. 웹 서비스는 Flutter WebView 기반 Android 앱으로도 배포했다.

서비스: TrackFollows · Google Play · GitHub