1. 10년의 자바 성벽, 그 너머를 보다
저는 10년 동안 자바(Java)와 오라클(Oracle)이라는 튼튼한 성벽 안에서 살아왔습니다. 토목 현장에서 굴러본 경험 덕분인지, 저는 늘 견고하고 예측 가능한 백엔드 시스템을 선호했습니다. 하지만 세상은 변하고 있었습니다. 종로 주차장 정산기 앞에서 15,000원을 결제당하며 느꼈던 그 무력감은, 단순히 돈의 문제가 아니라 '내 손으로 즉시 해결책을 만들 수 없다'는 기술적 한계에 대한 분노였습니다.
"내가 익숙한 자바로 이 앱을 만들려면 서버 세팅부터 배포까지 한 달은 걸릴 텐데..."
그때 제 눈에 들어온 것이 Next.js와 Supabase, 그리고 클로드(Claude)였습니다. 최신 웹 기술 스택은 10년 차 개발자인 저에게도 낯선 외계어와 같았지만, 우리 가족의 도메인 usenu.co.kr을 지켜내기 위해 저는 과감히 '3일 정복'이라는 무모한 목표를 세웠습니다.
2. DAY 1: 설계도와 포크레인 (Setup & Core Logic)
첫날은 토목 현장으로 치면 부지 정리와 장비를 반입하는 날이었습니다. 맥미니 M4를 켜고 VS Code를 열었습니다. 하지만 npx create-next-app 명령어 하나부터 막막하더군요. App Router 방식은 또 무엇인지, 왜 모든 것이 제가 알던 MVC 패턴과 다른지 머리가 지끈거렸습니다.
저는 100달러의 조력자, 클로드에게 선언했습니다. "나는 자바는 알지만 Next.js는 한 줄도 몰라. 하지만 나에겐 15,000원의 분노와 4장의 가족 카드가 있다. 3일 안에 주차 관리 앱을 배포해야 한다. 나를 가르치면서 함께 코드를 짜보자."
클로드는 훌륭한 현장 소장이 되어주었습니다. Supabase를 통해 별도의 백엔드 서버 구축 없이 DB를 연동하는 법을 알려주었고, 저는 처남 헌에게 보냈던 50만 원의 예치금과 실적 카운팅 로직을 설명했습니다. 첫날 밤, 화면에 Hello USENU가 떴을 때, 저는 10년 전 처음 개발자로 전직하며 느꼈던 그 설렘을 다시 맛보았습니다.
3. DAY 2: 구조물 올리기 (UI & PWA)
둘째 날은 실제 사용성을 확보하는 날이었습니다. 주차장 정산기 앞은 긴박합니다. 앱을 켜고 로딩을 기다릴 시간이 없죠. 그래서 저는 이 앱을 반드시 PWA(Progressive Web App)로 만들어야 했습니다. 핸드폰 홈 화면에 바로 가기를 만들고, 네이티브 앱처럼 부드럽게 돌아가야 했습니다.
자바 개발자에게 CSS와 프론트엔드 최적화는 늘 '어려운 숙제'였습니다. 하지만 클로드는 Tailwind CSS를 활용해 제가 상상하던 대시보드를 순식간에 그려냈습니다. 나(Yuna)와 원(Yuwon)이가 봐도 "와, 아빠 이거 멋지다!"라고 할 만큼 직관적인 UI가 만들어졌습니다.
특히 4장의 카드 중 실적이 가장 적게 남은 카드를 자동으로 상단에 배치하는 '우선순위 알고리즘'을 구현했을 때의 쾌감은, 토목 현장에서 커다란 교각의 수평을 단 1mm의 오차도 없이 맞췄을 때의 전율과 같았습니다.
| claude.md |
4. DAY 3: 준공 및 배포 (Deployment)
마지막 셋째 날, 운명의 시간이 다가왔습니다. Cloudflare를 통해 parking.usenu.co.kr을 전 세계(?)에 배포하는 순간이었습니다. 사실 배포 과정에서도 수많은 에러가 발생했습니다. 지난 주 4화 배포 때 마주했던 '탭(Tab) vs 스페이스(Space)' 경고창처럼, 사소한 설정 오류들이 제 발목을 잡았습니다.
하지만 저는 포기하지 않았습니다. 4번의 애드센스 탈락도 견뎌낸 제가 이 정도의 배포 에러에 무너질 순 없었죠. 클로드와 함께 로그를 하나하나 뜯어보며 마침내 도메인 연결에 성공했습니다. 72시간 만에, 10년 차 자바 개발자는 현대적인 풀스택 개발자로 거듭난 것입니다.
5. AI는 도구일 뿐, 설계자는 '아빠'다
사람들은 말합니다. "AI가 다 짜준 코드 아니냐"고 말이죠. 하지만 저는 단호하게 말합니다. AI는 성능 좋은 포크레인일 뿐, 어디를 파고 어떤 다리를 놓을지 결정하는 것은 설계자인 저의 몫이었습니다.
종로 주차비 15,000원을 아끼겠다는 집념, 가족의 카드를 하나로 묶어 최적화하겠다는 아이디어, 그리고 무엇보다 나와 원이에게 부끄럽지 않은 아빠가 되겠다는 마음이 없었다면 이 앱은 탄생할 수 없었을 겁니다. 100달러의 클로드 구독료와 80만 원의 맥미니 투자가 결코 아깝지 않은 이유입니다.
6. 5번째 애드센스 도전을 위한 기술적 증명
이번 5차 도전에서 제가 구글에게 보여주고 싶은 것은 바로 이 '기술적 사투'의 기록입니다. 단순히 남의 정보를 복사해 온 블로그가 아니라, 실제 문제를 발견하고(15,000원 결제), 기술을 학습하여(Next.js), 해결책을 배포한(Sharp PARK) 엔지니어의 진짜 이야기 말이죠.
구글의 검수원이 이 글을 읽는다면, 적어도 이 블로그가 '진짜 사람'의 땀방울로 만들어졌다는 사실만큼은 부인하지 못할 것입니다.
| supabase db |
7. 에필로그: 다음 전장은 '실제 유저'
3일 만에 서비스를 완성했지만, 진짜 전쟁은 배포 후에 시작되었습니다. 뽐뿌에 서비스를 공개하고 마주한 냉혹한 현실... 가입자 10명 중 남은 단 한 명의 유저를 지키기 위한 아빠 개발자의 또 다른 사투가 시작됩니다.
다음 화에서는 가입자 10명 중 9명이 떠나가고 남은 '단 1명의 찐 유저'를 보며 느꼈던 개발자의 고독과 책임감에 대해 이야기해보겠습니다. 기술은 변해도, 서비스를 향한 개발자의 진심은 변하지 않습니다.
[에디터의 한마디] 새로운 기술 앞에서 주저하고 계신가요? 15,000원의 분노가 있다면, 그리고 곁에 든든한 조력자가 있다면 72시간은 세상을 바꾸기에 충분한 시간입니다.
댓글 없음:
댓글 쓰기