인천공항에 차를 가져갈 때마다 드는 생각이 있다. “내가 도착할 때쯤 장기주차장에 자리가 남아 있을까?” 이 질문에 답하려고 주말 동안 인천공항 주차장 앱을 직접 만들었다. 이름은 ICN 공항 주차 앱이다.

이 글은 앱을 만들게 된 배경을 정리한 기록이다. 만들면서 겪은 과정, 소스 코드, 실제 운영 비용까지 모두 공개한다.

간단히 내 소개를 하자면, 임베디드를 전공하고 IoT 펌웨어 개발자로 일을 시작했다. 이후 자바 미들웨어, 웹 백엔드와 프론트엔드 개발을 거쳤다. TensorFlow가 나왔을 때는 모델 학습용 데이터 전처리를 반자동화하는 프레임워크 개발에 매달렸다. AWS를 거쳐 지금은 Microsoft에서 일하고 있다. 그런 내가 모바일 앱을 만든 건 이번이 처음이다.
왜 인천공항 주차 “예측” 앱인가
인천공항 주차장 현황을 보여주는 서비스는 이미 많다. 네이버에서도 볼 수 있고, 관련 앱도 여러 개 있다. 그런데 살펴보니 전부 “지금 이 순간”의 실시간 정보였다.
공항으로 출발하는 사람에게 필요한 건 지금 몇 자리가 남았는지가 아니다. 한두 시간 뒤 내가 도착했을 때 자리가 있을지다. 과거 데이터를 바탕으로 예측치를 보여주는 앱은 찾을 수 없었다. 그래서 직접 만들기로 했다.
계기: 황금연휴 출국, 7만원 아끼려다 700만원 날릴 뻔
9월 말 황금연휴에 가족과 해외여행을 가기로 했다. 공항까지 카카오T 벤티를 왕복으로 부르면 약 9만원이 든다. 반면 차를 가져가면 6박 7일 장기주차가 2만원대였다. 전기차 50% 할인에 카드 1만원 할인까지 더한 금액이다. 그래서 차를 가져가기로 했다.
문제는 그다음이었다. 연휴 첫날 공항에 도착했는데 장기주차장에 자리가 없다면? 7만원을 아끼려다 비행기를 놓치면 항공권, 호텔, 렌터카까지 약 700만원이 날아간다. 상상만 해도 아찔했다.
그래서 두 가지를 정했다. 하나는 연휴가 시작되는 토요일이 아니라 하루 앞선 금요일에 휴가를 내고 아침 일찍 출발하는 것. 다른 하나는 “그때 자리가 있을지” 미리 가늠할 수 있는 도구를 만드는 것이었다.

이틀치 데이터로 시작한 주차 예측
예측 앱의 핵심은 데이터다. 여행 계획을 짜기 시작한 게 9월 30일이었고, 10월 1일에 주차장 데이터 수집을 시작하면서 웹앱을 만들었다. 출발일인 10월 2일까지 모을 수 있는 데이터는 고작 이틀치였다.
그래도 가능성을 확인하기엔 충분하다고 봤다. 실제로 20일 정도 데이터를 쌓아 보니 흥미로운 점이 보였다. 성수기가 아닌 평상시에는 1주일 전 같은 요일 데이터만으로도 들어오고 나가는 차량 수를 거의 비슷하게 맞힌다.

개발 원칙: 회사 토큰 없이, 일반 개발자와 같은 환경으로
사실 나는 회사를 통해 GitHub Copilot을 쓸 수 있고, 거의 모든 프런티어 모델에 접근할 수 있다. 하지만 이번 개인 프로젝트에서는 일부러 쓰지 않았다. 목적은 가장 많은 개발자가 실제로 쓸 법한 환경을 재현하고 비교해 보는 것이었다.
그래서 개인 구독 두 개만 썼다.
- Claude Pro (1년 구독)
- ChatGPT Plus (1개월 자동 연장)
이 둘을 번갈아 가며 작업을 맡겼다. Claude Code나 Codex처럼 5시간 사용량 윈도우가 있는 도구를 쓰다 보면 토큰이 얼마나 귀한지 실감하게 된다. 사용량을 수시로 확인하고, 리셋 시간을 계산하면서 작업 순서를 짰다. 이게 주말 개발의 묘미였다.
개발 과정: Plan, Design, Coding, CI/CD
1. Plan: 처음에 의도를 확실히 잡는다
먼저 머릿속에 있는 걸 생각나는 대로 기획 문서에 쏟아냈다. 목적과 방향성, 인프라의 기본 구조까지 적다 보니 꽤 길어졌다. 이 문서를 Opus 5.5 같은 프런티어 모델에 넘겨 Plan을 생성했다.
가장 중요한 건 그다음이다. 만들어진 Plan을 직접 읽고 손으로 다듬어야 한다. 귀찮아도 꼭 해야 한다. 목표를 제대로 향하는지, 의도(intent)가 정확히 설명되는지 몇 번이고 확인했다. 다 만든 뒤에 고치려 들면 토큰도 시간도 훨씬 많이 든다.
2. Design: 디자인은 과감하게 맡긴다
Plan 문서를 Claude Design에 넘기고 디자인 요구 사항을 얹어 요청했다. 디자인 감각이 없다면 고민할 필요 없이 맡기면 된다. 제약은 큰 틀에서만 주고, Plan을 따라가도록만 설명했다.

3. Coding: VS Code에서 모델을 번갈아 쓰기
코딩은 VS Code에서 했다. Claude Code와 Codex 확장을 모두 설치할 수 있어서 가장 좋은 선택지였다. 간단한 수정은 AI에 맡기는 것보다 직접 찾아 고치는 게 빠를 때가 많다. Ctrl + Shift + F로 찾아서 바로 고치면 된다.
모델은 상황에 따라 바꿔 가며 썼다.
| 상황 | 사용한 모델 |
|---|---|
| 주력 개발 | GPT-6.1 Sol |
| 토큰 여유가 있을 때 | Opus 5.5 (high) |
| 작업이 모호해질 때 | Sonnet 5.5 |
| 계정 세팅, 설치 같은 잡무 | GPT-6 Astra |
일부 설정은 채팅으로 방법만 물어보고 직접 하는 게 더 빨랐다. 맡길지 직접 할지는 그때그때 판단하는 게 중요하다.
4. Repository와 CI/CD
소스는 GitHub Repository에 두고, GitHub Actions로 배포하도록 구성했다.
인프라와 운영 비용: DB 없이 하루 150원
인프라는 Azure 서버리스로 구성했다. Azure Functions와 Storage Account 조합이 전부다.
이 앱의 핵심은 데이터베이스를 쓰지 않는다는 점이다. 수집한 데이터는 파일로 저장하고, 필요할 때 파일을 읽어 온다. 이 단순한 구조 덕분에 운영 비용이 매우 낮다.
| 항목 | 비용 |
|---|---|
| 현재 (로그 포함) | 하루 약 150원, 월 약 4,500원 |
| 로그를 줄일 경우 | 하루 약 100원 |
나중에 확인할 정보가 있을 것 같아 로그는 일단 남겨 두었다. 이 비용은 추후 광고로 보전할 생각이다.

웹앱에서 Android, iOS 네이티브 앱으로
웹앱은 10월 1일에 처음 만들었고, 여행에서 돌아온 뒤 지난 주말까지 틈틈이 업데이트했다. 처음부터 모바일 앱을 붙일 생각이었기 때문에 구조도 그에 맞췄다.
웹앱에는 이미 백엔드와 프런트엔드가 모두 있었다. 백엔드는 그대로 두고, 모바일 앱은 디자인만 심플하게 다시 만들어 연결했다. 덕분에 Android와 iOS를 동시에 네이티브로 개발해도 금방 끝났다.
사실 이 정도 앱은 웹뷰로 만들어도 아무 문제가 없다. 그래도 네이티브로 만든 건, 언젠가 필요할 때를 위해 직접 경험해 두고 싶었기 때문이다.
집에 있는 기기로 테스트하기
테스트는 집에 있는 기기로 했다.
| 플랫폼 | 테스트 기기 |
|---|---|
| Android | Fire HD 태블릿, 갤럭시 탭 S9 울트라 |
| iOS | 아이폰 16 Plus, 아이폰 15 Pro |
아이에게 준 갤럭시 S10 5G도 써 보려 했다. 그런데 Family Link 계정으로 설정해 둔 탓에 USB 디버깅 모드를 켜는 것부터 난관이라 포기했다.
개발 중인 앱을 직접 설치할 때 차이도 있었다. iOS는 설치한 앱이 7일 동안만 유효하다. Android는 USB 디버깅으로 설치하면 기간 제한이 문제 되지 않았다.
앱스토어와 구글 플레이 등록 준비
스토어에 앱을 올리려면 개발자 등록부터 해야 한다.
| 스토어 | 개발자 등록비 |
|---|---|
| Apple App Store | 129,000원 (연간) |
| Google Play | $25 (1회) |
애플은 2013년 이후 오랜만에 다시 등록했는데, 가격이 그때와 같은 것 같다. 등록 처리에 최대 48시간이 걸린다고 해서 아직 기다리는 중이다. 구글도 마찬가지로 바로 되지는 않는다.
오픈소스 공개와 앞으로의 계획
ICN 공항 주차 앱은 공익적인 목적으로 만들었고, 소스 코드를 모두 공개했다.
- 소스 코드: github.com/studydev/icn-parking
- 웹 서비스: icn.igotobook.com
도메인이 서비스와 잘 어울리지는 않는다. 이미 구입해 둔 도메인이라 서브 도메인을 따서 쓰는 게 가장 저렴했다. 다음 목표는 익명 의견 게시판이다. 사용자들이 남긴 의견을 바탕으로 앱이 자동으로 개선되는 구조를 구현해 보려 한다.
수익화는 아직 실험 단계
당장 돈을 벌려고 만든 앱은 아니다. 다만 수익을 낼 방법이 몇 가지 보이긴 한다. 광고를 붙이거나 지면을 판매하는 방식이다. 그래서 GA4로 사용 로그를 수집하고 있고, 모바일 앱도 스토어에 등록되면 연결할 예정이다. 오픈소스로 공개했으니 지금은 테스트라고 생각한다. DAU와 MAU가 어느 정도 나오는지 확인하는 것이 우선이다.
마무리
“도착했을 때 인천공항 주차장에 자리가 있을까?”라는 작은 불안에서 시작한 프로젝트였다. 출발 이틀 전에 시작해 웹앱을 만들었고, 3주 만에 Android와 iOS 앱까지 이어졌다. 심지어 모바일 앱은 하루 만에 만들어진 것이다. 회사 도구 없이 개인 AI 구독만으로도 주말 개발이 충분히 가능했다. 처음에 Plan을 꼼꼼히 다듬는 것, 그리고 맡길 일과 직접 할 일을 구분하는 것이 가장 중요했다. 인천공항에 차를 가져갈 계획이라면 한번 써 보고 의견을 남겨 주면 좋겠다.
번외편: 앱 이야기 말고 하고 싶었던 이야기들
번외 1. 출발 이틀 전에 정한 오키나와 여행, 그 비용
본문에서 말한 “700만원”의 내역은 이렇다. 4인 가족 기준이다.
| 항목 | 내용 | 비용 |
|---|---|---|
| 항공 | 진에어 인천-오키나와 | 2,102,000원 |
| 숙소 1 | 힐튼 차탄, 3박 조식 포함 | ¥314,300 |
| 숙소 2 | 류큐 호텔, 3박 조식 포함 | ¥230,000 |
| 렌터카 | 야리스 크로스 | 450,000원 |
여기에 현금 170만원을 ¥200,000으로 환전했고, 현지에서도 카드를 계속 긁었다. 돌아보니 과소비한 것 같다. 성수기에 이틀 전 갑자기 결정하고 예약했으니 어쩔 수 없었다. 성수기 황금연휴에 이렇게 움직이는 건 아마 다시는 안 할 것 같다. 다음에는 연휴가 끝난 직후의 평일을 붙여서, 수요일부터 화요일 같은 식으로 일정을 짤 생각이다. 그러면 훨씬 싸진다.

번외 2. 2년 만에 다시 탄 비행기
아빠가 2년 동안 아프면서 가족 여행을 한 번도 못 갔다. 2년 전 하와이가 마지막 해외여행이 될 줄은 몰랐다. 비행기 자체도 숙제였다. 출장으로 국내선을 타고 다닐 때 이륙할 때마다 공황 증상이 왔다. 느낌이 너무 불안하고 당장 기절할 것 같고 무섭고 그런 증상이다. 그래서 수술 후에는 기차로만 다녔는데, 시간도 더 걸리고 은근히 힘들었다. 이번에는 최대한 큰 비행기를 찾다가 기체가 더 큰 진에어를 골랐고, 그렇게 오키나와가 정해졌다. 2년 만에 용기를 낸 비행이었다. 다행히 이번 여정에서는 아무런 문제가 없었다.
번외 3. 개발 PC 스토리지 256GB의 한계
이번 개발은 Mac mini M4 기본형(16GB RAM, 256GB)에 외장 NVMe SSD 1TB를 달아서 했다. 원래는 OpenClaw 같은 에이전트를 돌리려고 산 장비였는데, 어쩌다 메인 개발 PC가 됐다. 문제는 256GB가 너무 작다는 것이다. 시스템이 기본으로 차지하는 용량도 크고, 빌드를 돌리면 공간을 꽤 쓴다. 어느 날 앱이 전부 멈춰서 봤더니 스토리지가 꽉 차 있었다. 도커를 띄워 테스트하는 것도 늘 부담이다. 맥북 에어 15 M2도 있지만 역시 기본형이라 답이 없다. 지금 눈여겨보는 건 같은 동네에 나온 맥북 프로 16인치(48GB, 1TB) 미개봉 제품이다. 정가보다 약 100만원 저렴하다. 개봉품이어도 괜찮을 것 같아서 좀 더 기다리는 중이다. 일본만 안 다녀왔으면 거의 풀옵션을 샀을 텐데.
번외 4. 로컬 LLM 장비는 사지 않는 이유
앞으로 나올 LLM을 로컬에서 돌리려고 RAM 큰 장비를 살 생각은 처음부터 없었다. API나 구독으로 쓰는 게 훨씬 싸다. 나는 격리된 환경이 필요한 것도 아니라서, 거기에 전력과 시간을 쓰고 싶지 않다. 24시간 코드를 뽑아낼 만큼 아이디어가 폭발한다면 모르겠지만, 나는 그 정도는 아니다.
번외 5. 회사 노트북 교체 고민
회사에서 노트북 사용 연한 4년이 됐다고 교체하라는 메일이 왔다. 지금 안 바꾸면 다음 교체까지 한참 걸린다고 한다. AWS에서 5년 일할 때는 한 번도 안 바꾸고 나왔는데, Microsoft에서는 4년 만에 바꾸게 생겼다. 지금 쓰는 레노보는 32GB RAM, 512GB라 스펙이 크게 부족하진 않다. 문제는 배터리다. 알리에서 산 배터리로 갈아 봤는데도 1시간을 못 버틴다. 그래서 배터리가 오래가는 14인치 HP 제품으로 신청했다. 1년 전 모델인데 600만원이 넘는다.
그 돈이면 최근 나온 RTX Spark 탑재 제품도 살 수 있을 것 같다. 하지만 그것도 결국 로컬 LLM용이라 나는 끌리지 않는다. Scout을 쓰면 세팅이야 자동으로 해 줄 것 같지만 말이다. 비싸서 승인이 날지 모르겠다. 승인이 안 나면 이참에 개발용으로 맥북 프로 16이나 맥북 에어 15를 사서 회사 계정을 연동해 쓰는 게 나을 것 같다.
번외 6. igotobook.com 본 사이트
앱에 서브 도메인을 내준 igotobook.com은 원래 따로 사이트를 만들 생각이었는데 계속 늦어지고 있다. 이번 앱의 거름 역할을 해 준 셈이다. 아예 갈아엎고 새로 만들까 고민 중이다.










