- 저가 항공권을 찾을 때마다 비자, 여권, 세금 거주 요건 등 여러 규정을 동시에 확인해야 하는 복잡한 절차 존재
- 각국의 이민·세금 시스템이 서로 다른 기준으로 ‘체류일’을 계산해 혼란을 초래함
- 이를 해결하기 위해 여행 기록과 규정을 컴파일러처럼 검증하는 앱 ‘Residency’ 개발
- 앱은 로컬에서 계산하며, 여권 만료·비자·IDP·세금 거주 요건 등을 자동 점검
- 개인의 이동 이력과 행정 규칙을 일관되게 관리해 국경 통과 전 위험을 미리 파악할 수 있는 도구로 기능
항공권 구매 전의 20분
- 저자는 아이슬란드행 초저가 항공권을 발견했을 때, 비자·여권·운전면허·세금 거주 요건 등을 즉시 확인해야 했음
- 이 과정은 약 20분이 걸리며, 단순한 가격 비교가 아니라 여러 행정 조건을 동시에 검토하는 절차임
- 과거 10년간의 여행 이력을 기록한 스프레드시트를 기반으로 각종 비자·시민권 신청을 처리해 왔음
- 그러나 이 방식은 비효율적이라 판단하고, “이 여행이 문제를 일으킬까? ”를 자동으로 판단하는 시스템 구상
시스템이 알려주지 않는 ‘상태(State)’
-
Schengen, 영국, 세금 거주, 여권 유효기간 등 각 시스템이 서로 다른 기준으로 개인의 상태를 판단함
- Schengen은 90/180일 규칙, 영국은 세금연도 기준 자정 횟수, 여권은 유효기간·빈 페이지 수 등을 기준으로 함
- 이러한 정보는 사용자에게 직접 노출되지 않으며, 국경 심사관만 접근 가능
- 저자는 이를 “State를 파싱하는 문제”로 정의 — 정부의 시각과 시스템 상태를 동시에 해석해야 함
행정의 예외 사례들
- 영국 시민권 신청 시, 신청일 기준 정확히 5년 전 같은 날짜에 영국에 있었음을 증명해야 함
- 하루라도 어기면 수개월 대기 후 신청 거절 및 재신청 비용 발생
- 영국 공항 환승 시, 여행과 무관한 활동(예: 간식 구매, 공연 관람) 을 해야만 ‘체류’로 인정됨
-
모로코의 라마단 기간 시간대 변경(UTC↔UTC+1) 으로 인해 체류일 계산이 달라질 수 있음
- 이러한 규정은 여러 정부 사이트와 PDF에 흩어져 있어, 사용자가 직접 해석해야 함
‘컴파일러 경고’로서의 여행 시뮬레이션
- 저자는 여행 계획을 “컴파일 가능한가?” 의 관점에서 검증하는 린터(linter) 개념을 도입
- 예시 경로(DUB→EWR→MEX→LHR→TFS)를 통해 각국의 체류일 계산 차이를 비교
- 아일랜드 0일, 미국 0일, 멕시코 2일, 영국 0~1일, Schengen 1일
- 각 결과는 시간대 데이터베이스 버전에 따라 달라질 수 있어, 버전을 고정하고 변경 시 재계산
- 목표는 국경 심사관과 동일한 판단 기준을 갖춘 자동 검증 시스템 구축
Residency 앱의 구조와 기능
- 앱은 “이 행동을 하면 어떤 일이 발생하는가”를 다양한 형태로 시뮬레이션
- 예: 알프스 여행 예약 시 Schengen 체류일 초과 여부, 세금연도 종료 전 출국 영향 등
- 각 국가별 규칙은 버전 관리된 해석 데이터(blob) 로 저장되어, 규정 변경 시 과거 기록을 유지
-
여권·비자·IDP 유효성도 상태 기계(state machine)로 처리
- 예: 두바이 경유 시 “도착 시 유효”가 “출발 시 무효”로 바뀌는 경우 자동 감지
- 사용자는 직접 목표(예: 특정 국가 체류일 제한) 를 설정 가능하며, 앱은 이를 기반으로 경고 제공
로컬 우선 설계와 개인정보 보호
- 모든 계산은 기기 내에서 수행, 네트워크 연결 없이도 작동
- 서버 통신을 배제해 속도·프라이버시·법적 책임 문제를 회피
-
클라우드 동기화는 지원하지 않음, 대신 파일로 직접 내보내기 가능
- 초기에는 Schengen 일수 계산만 지원했으나, 이후 영국 세금 규칙·문서 만료·시뮬레이션 기능 등이 추가됨
- 앱을 공개한 이유는 다른 사용자들도 같은 20분의 불확실성을 줄이길 원했기 때문
실제 사용 결과와 결론
- 아이슬란드 항공권 구매 전, 앱은 IDP 불필요·Schengen 여유 34일·세금 거주 종료 시점 등을 정확히 계산
- 실제 입국 시 Keflavík 공항 심사관의 판단과 앱 결과가 일치
- 앱 이름은 Residency, iOS용으로 제공되며 구독 없이 일회성 구매
- 결론적으로 “국경은 cURL로 호출할 수 없지만, 자신의 상태를 추적해 정부와 동일한 답을 얻을 수 있다”는 메시지로 마무리됨