출시한 앱의 안전망,
감지에서 해결까지.
스토어에서 내려간 앱, 바뀐 등록정보, 끊긴 API, 멈춘 정기 작업 — 서버 로그에는 남지 않는 일들입니다. TestMate Watch는 바깥에서 알아채고, 확정됐을 때 폰으로 한 번 알리고, 무엇이 어떻게 달라졌는지 근거와 함께 보여줍니다.
https://play.google.com/store/apps/details?id=com.example.app
→ 웹사이트 · Android · iOS · 백엔드가 한 서비스로 묶입니다
설치할 SDK 없음 · 알림은 사고당 1회 · 못 본 건 '미확인'
Play·App Store 게시 상태와 등록정보, HTTP·내용·SSL·도메인, 공개 API, 크론 하트비트를 바깥에서 정기 확인합니다.
무엇을 보는지 → 02 · 알림 확정된 변화만, 폰으로 한 번연속 실패로 확정될 때 푸시 1회, 복구 1회. 못 본 건 판정하지 않고 '미확인'. 확인함을 누르면 복구될 때까지 조용합니다.
어떻게 알리는지 → 03 · 해결 평소값 → 지금값, 근거와 함께그때 받은 응답을 보관하고 최근 관측 이력을 보여줍니다. 의도한 변화라면 '이게 맞아요'로 기준값을 바꿉니다.
무엇이 남는지 →서버 모니터링은 서버를 봅니다.
앱은 스토어에서 삽니다.
업타임 도구는 응답 코드를 봅니다. 그런데 사용자가 앱을 처음 만나는 곳은 서버가 아니라 스토어 페이지이고, 거기서 벌어지는 일은 서버 로그에 남지 않습니다.
정책 위반이나 개발자 계정 문제로 앱이 스토어에서 사라져도 API는 멀쩡히 응답합니다. 서버 모니터링은 아무것도 보지 못합니다.
Watch는 스토어 페이지 자체를 하루 1회 봅니다개발자명·버전·업데이트일·처리방침 주소가 바뀌어도 어디서도 알려주지 않습니다. 사용자가 먼저 눈치채는 일이 생깁니다.
Watch는 평소값과 지금값을 대조합니다한 번 흔들릴 때마다 울리는 도구는 곧 무시됩니다. 무시된 도구는 진짜 사고를 놓칩니다.
Watch는 연속 확인으로 확정된 것만, 사고당 한 번감지하고, 알리고, 해결합니다.
감시는 시작일 뿐입니다. Watch는 이상을 확정해서 한 번 알리고, 무엇이 어떻게 달라졌는지 근거와 함께 남깁니다.
응답 200 뒤에 숨은 장애까지 봅니다.
호스팅 만료 안내 페이지도, 스토어에서 내려간 앱도, 결제가 끊긴 서버도 겉보기엔 멀쩡합니다. Watch는 응답 코드만 보지 않고 내 서비스가 맞는지까지 바깥에서 확인합니다.
Second Learner 확인 4곳 Android 스토어 게시 · 등록정보 · 개발자명 하루 1회 웹사이트 HTTP · 내 문구 · SSL · 도메인 1시간 백엔드 API JSON $.status=ok 1시간 정기 작업 하트비트 — 마지막 신호 받음 고유 주기
확정된 변화만, 폰으로 한 번.
알림의 가치는 횟수가 아니라 신뢰입니다. Watch는 연속 확인으로 확정된 것만 보내고, 사고가 열려 있는 동안 같은 알림을 반복하지 않습니다.
첫 실패는 약 1분 뒤 다시 봅니다. 두 번 연속일 때만 사고입니다.
새벽에 열 통 오지 않습니다. 사고 1건에 알림 1통, 복구되면 1통.
관측 자체가 안 됐으면 정상도 이상도 아닙니다. 판정을 바꾸지 않고 원인을 지어내지 않습니다.
이미 아는 이상이면 '확인함'. 복구될 때까지 그 알림만 멈춥니다.
첫 실패 평소 200 → 지금 404 아직 알리지 않음 약 1분 뒤 재확인 · 다시 404 2회 연속 → 이상 확정 푸시 1통 "Second Learner — 이상 감지" 그때 받은 응답 보관 그 사이 확인은 계속, 알림은 없음 복구 응답 200 · "Second Learner" 보임 푸시 1통 "Second Learner — 복구" 사고 1건 · 알림 2통
무엇이 어떻게 달라졌는지, 근거와 함께.
"비정상"이라는 말만 하고 근거를 감추지 않습니다. 평소값과 지금값, 그때 받은 응답, 최근 이력이 앱에 남아 원인을 좁히고 복구를 확인하게 합니다.
응답 코드·개발자명·버전·문구를 기준값과 대조해 보여줍니다.
사고 시점의 응답을 그대로 남깁니다. 복구 30일 뒤 삭제.
카드마다 최근 확인 결과가 남아 언제부터였는지 보입니다.
개발자명을 바꾼 것처럼 의도한 변화라면, 지금 값을 새 기준으로 삼습니다. 잣대는 사용자가 가집니다.
이상 감지 vsecondlearner.com · HTTP 생존 관측 주소를 찾지 못했어요 (ENOTFOUND) 확인 2회 연속 실패 후 확정 · 보통 약 1분 뒤 재확인 알림 푸시 발송됨 · 사고 1건에 알림 1건 정상 복구 감지 — 응답 200 · "Second Learner" 보임 근거 그때 받은 응답 220자 보관 · 복구 30일 뒤 삭제
등록 → 확인 → 알림 → 해결. 한 흐름입니다.
설정할 것은 링크 하나이고, 나머지는 바깥에서 돌아갑니다. 사람이 할 일은 알림이 왔을 때 앱을 여는 것뿐입니다.
Play 링크나 웹 주소 하나. 웹사이트·Android·iOS·백엔드가 한 서비스로 묶입니다. 설치할 것은 없습니다.
서울 리전에서 바깥 관측. 핵심 상태는 기본 1시간(15분~24시간), 스토어·등록정보는 하루 1회, 크론은 고유 주기.
첫 실패는 약 1분 뒤 재확인. 연속 확인으로 확정된 변화만 폰 푸시 1회, 복구되면 1회.
평소값과 지금값, 그때 받은 응답, 최근 이력을 앱에서 봅니다. 의도한 변화면 '이게 맞아요', 아는 이상이면 '확인함'.
설정은 앱에서, 연결은 한 줄로.
SDK도 에이전트도 없습니다. 바깥에서 보이는 것만 보고, 서버 쪽에서 필요한 건 크론 핑 한 줄뿐입니다.
$.status = ok), 신선도($.checkedAt 1시간 이내).curl 한 줄. 신호가 유예 시간 넘게 끊기면 첫 실패로 봅니다.# 정기 작업 끝에 — 핑 주소는 앱이 만들어 줍니다 0 3 * * * backup.sh && curl -fsS "$PING_URL" # API 검사 — 앱에서 조립하는 것 GET https://api.example.com/health 기대 응답 200 · $.status = "ok" 신선도 $.checkedAt 이 1시간 이내
설치부터 첫 확인까지.
Google Play에 정식 출시됐습니다. 설치하고 구글 계정으로 로그인한 뒤 링크 하나를 넣으면, 다음 확인 사이클에 첫 결과가 옵니다.
- 지금 · 1분 Play에서 설치 Google Play의 TestMate Watch에서 설치하고 구글 계정으로 로그인합니다. 휴대폰 번호는 받지 않습니다.
- 설치 직후 링크 하나 등록 Play 링크나 웹 주소를 넣으면 웹사이트·Android·iOS·백엔드 탭이 한 서비스로 묶입니다. 탭은 전부 무료에 포함됩니다.
- 다음 확인 때 첫 결과와 알림 첫 확인 결과가 앱에 쌓이고, 그때부터 감지·알림·해결이 돌아갑니다. 알림은 사고당 1회, 앱 푸시만 씁니다.
- 앱이 둘 이상이면 창립 평생회원 29,000원 한 번 두 번째 서비스부터는 결제가 필요합니다. 월 구독이 아니라 한 번 결제로 서비스 10개까지, 서비스 운영 기간 동안 씁니다. 선착순 100명 한정이고 앱 안 설정에서 구매합니다.
서비스 1개 무료 · 휴대폰 번호 수집 없음 · 알림은 앱 푸시만 · 감시 대상을 지우면 기록도 함께 삭제
자주 묻는 것
Watch는 어떻게 설치하나요?
Google Play에서 바로 설치합니다. 비공개 테스트가 끝나 테스터 명단은 더 이상 필요 없습니다. 지금은 Android만 제공하고, 감시 대상으로는 iOS 앱도 등록할 수 있습니다.
요금은 어떻게 되나요?
서비스 1개는 기간 제한 없이 무료이고, 그 안의 웹·Android·iOS·백엔드 탭은 모두 포함됩니다. 두 번째 서비스부터는 창립 평생회원 29,000원을 한 번 결제하면 서비스 10개까지 쓸 수 있습니다. 월 구독이 아니며, 선착순 100명 한정으로 앱 안 설정에서 Google Play 결제로 구매합니다.
Watch는 서버에 뭘 설치해야 하나요?
기본 감시는 설치가 없습니다. 링크 하나면 바깥에서 관측을 시작합니다. 크론 핑만 서버 정기 작업 끝에 호출 한 줄을 넣는 선택 기능입니다.
Watch 알림은 어떻게 받나요?
Watch 알림은 앱 푸시만 사용합니다. 첫 실패는 보통 약 1분 뒤 다시 확인하고, 상태 변화가 연속 확인으로 확정되면 사고 1건당 한 번 보냅니다. 휴대폰 번호는 수집하지 않습니다.
두 제품의 데이터는 섞이나요?
현재 두 앱의 역할과 데이터는 분리되어 있습니다. 계정 하나(구글 로그인)로 양쪽을 쓰지만, 테스트 기록과 감시 기록은 서로를 침범하지 않습니다.