[Technical Insight] PHP와 Crontab으로 구축하는 예약 알림 시스템: AI 시대의 고속 POC 전략

최근 소프트웨어 개발의 화두는 ‘바이브코딩(Vibe Coding)’입니다. 아이디어를 코드라는 실체로 옮기는 과정에서 AI를 파트너로 삼아 개발 속도를 비약적으로 높이는 방식이죠.
이번에 저는 루틴 관리 앱 ‘루티(Routi)’의 POC(개념 증명)를 진행하며, PHP 환경에서 예약 알림 시스템을 어떻게 설계하고 자동화했는지 그 기술적 구조를 공유하고자 합니다.
1. PHP의 Stateless 특성과 Crontab의 필요성
웹 엔진으로서의 PHP는 기본적으로 ‘Stateless’합니다. 즉, 외부의 요청(HTTP Request)이 있어야만 동작하며, 서버가 스스로 시간을 계산해 특정 로직을 수행할 수는 없습니다.
사용자가 설정한 루틴 시간에 맞춰 알림을 보내는 ‘스케줄링’ 기능을 구현하기 위해서는 OS 레벨의 도움인 크론탭(Crontab)이 필수적입니다. 크론탭은 리눅스 기반 서버에서 지정된 시간에 특정 명령을 반복 실행해 주는 강력한 스케줄러입니다.


2. 아키텍처 설계: 예약 알림의 핵심 로직
효율적인 예약 시스템을 위해 저는 다음과 같은 3단계 프로세스를 설계했습니다.
Step 1: DB 스키마 및 쿼리 최적화
먼저 알림 테이블에는 reservation_time(예약 시간)과 is_sent(발송 여부) 플래그가 있어야 합니다.
- Logic: 현재 시간보다
reservation_time이 작거나 같고,is_sent가 0인 데이터를 필터링합니다.
Step 2: 비즈니스 로직 구현 (cron.php)
이 파일은 크론에 의해 1분마다 호출됩니다.
- Fetch: 발송 대상 리스트를 가져옵니다.
- Push: 각 유저의 엔드포인트로 알림을 전송합니다.
- Update: 발송이 완료된 레코드는
is_sent = 1로 업데이트하여 중복 발송을 원천 차단합니다.
Step 3: 인프라 레벨의 자동화 (Crontab 설정)
서버 터미널에서 crontab -e를 통해 단 한 줄의 설정으로 자동화 레이어를 완성합니다.
Bash
# 매 분마다(1m) cron.php를 실행하고 로그를 기록함
* * * * * php /var/www/html/routi/cron.php >> /var/www/html/routi/cron.log 2>&1
3. 전문가의 제언: 바이브코딩과 POC의 가치
이번 프로젝트에서 제가 느낀 가장 큰 인사이트는 “기술은 도구일 뿐, 중요한 것은 실행 속도”라는 점입니다.
- PHP는 레거시하지만, AI(LLM)가 가장 방대한 학습 데이터를 보유한 언어 중 하나입니다. 바이브코딩 시 코드의 정확도가 매우 높습니다.
- Crontab은 복잡한 큐(Queue) 시스템 없이도 서버 자원을 최소화하며 기능을 구현하게 해 줍니다.
복잡한 아키텍처를 고민하느라 시간을 허비하기보다, 이처럼 명확한 도구들을 활용해 아이디어를 시장에 빠르게 던져보는 것이 진정한 전문가의 자세가 아닐까 합니다.
“위에서 설명해 드린 PHP와 Crontab 기반의 알림 아키텍처를 실제로 적용해본 결과물입니다. 아이디어가 어떻게 실제 서비스로 빠르게 가시화되었는지 궁금하시다면 아래 링크에서 확인해 보세요.”
🔗 [루티(Routi) POC 프로토타입 바로가기] > https://push.loonshotstudio.com
함께 보면 좋은 글

OS별 UX의 차이: 안드로이드의 ‘설치 버튼’과 iOS의 ‘공유 버튼’ 사이에서 – 홈스크린 등록하고 푸시알림 받기
웹 서비스를 앱처럼 사용하게 만드는 과정에서 가장 큰 허들은 역시 ‘홈 화면에 추가(Add to Home Screen)’ 유도입니다. 이번 루티(Routi) POC를 진행하며 안드로이드와 iOS 두 진영의 극명한 정책 차이를 다시 한번 실감했습니다. 1. Android: 사용자 친화적인 자동 설치 유도 안드로이드는 일정 조건(Manifest 파일, Service Worker 등)을 갖추면 브라우저가 직접 beforeinstallprompt 이벤트를 발생시킵니다. 이를 활용해 서비스 내에…

2026년, 거창한 결심보다 ‘작은 조각’에 집중해야 하는 이유
많은 사람이 새해 목표로 “10kg 감량”, “외국어 마스터” 같은 큰 덩어리를 가져옵니다. 하지만 우리 뇌는 갑작스러운 큰 변화를 위협으로 간주합니다. 시스템이 과부하에 걸려 금방 포기하게 만드는 것이죠. 1. 1%의 복리 효과 매일 딱 1%만 나아진다고 가정해 봅시다. 아주 미미해 보이지만, 이 1%가 1년 동안 쌓이면 수학적으로 약 37배 성장한 자신을 만나게 됩니다. 이런 ‘사소한 승리(Small…

아무 문제가 없다는 건, 아무것도 하지 않았다는 뜻일지도 모른다
큰 사고 없이 성실하게 지냈는데 왜 인정은 늘 다른 사람 몫일까. 문제는 원래 무언가를 시도하는 사람에게만 생긴다. 흔적은 크기가 아니라 빈도로 남는다는 이야기.

I stopped trying to change my life overnight.
“Change all your habits.”Honestly… that’s way too hard. Work out more.Sleep earlier.Eat better.Do everything at once? That’s why I started differently —just one small check a day. Did I drink more water today?Did I walk for 10 minutes?Did I skip late-night snacks? Just one small thing. Small checks…

매 분마다 다른 문학 작품이 시간을 말해주는 ‘문장의 시간’ 제작기
1440개의 문학 작품 문장으로 하루를 채우는 독특한 시계 웹 서비스 제작 과정. PoC 프로젝트로 시작한 아이디어 실현기. TL;DR ; 한줄요약 프로젝트 개요: 왜 ‘문장의 시간’인가? 아이디어의 시작 우리는 하루에 수십 번, 시계를 본다. 그런데 매번 보는 건 같은 형태의 숫자들뿐이다. “만약 숫자 대신 문학 작품 속 문장이 시간을 말해준다면?” 이 질문에서 ‘문장의 시간(Time of Sentences)’…

[위치 기반] 맛집 메모 앱, ‘다음에 뭐 먹지?’ 고민 끝! 음식점 재방문 필수 기록 앱 📝
📌 “그 집에서 뭘 먹었더라?” 더 이상 고민하지 마세요! 맛집을 다시 찾았을 때, ‘지난번에 뭘 먹었었지?’, ‘다음에는 어떤 메뉴를 시도해 볼까?’ 하는 고민은 모든 미식가들의 공통된 페인 포인트입니다. 일반 노트 앱이나 방대한 블로그 검색으로는 찾기 힘들었던 개인화된 식사 기록을 이제 ‘Food Note App’에서 위치 기반 알림으로 가장 정확한 순간에 만나보세요. 🚀 3일 만에 POC 완성!…