요즘 코더들이여, 프론트엔드 쓰레기(FE Slop)를 만드는 걸 멈추고 대신 Telegram 그룹을 사용하세요
요약
AI로 생성된 복잡한 프론트엔드 대신 Telegram 봇을 인터페이스로 활용하는 효율적인 개발 스택을 제안합니다. FastAPI, SQLite, ngrok을 결합하여 인프라 비용과 복잡성을 최소화하는 실용적인 접근법을 다룹니다.
핵심 포인트
- 복잡한 프론트엔드 대신 Telegram 그룹을 UI로 활용
- FastAPI와 SQLite를 이용한 초경량 백엔드 구성
- Telegram의 chat_id를 활용한 라우팅 및 인증 구현
- 인프라 비용 절감 및 node_modules 없는 개발 환경
우리는 알고 있습니다. 정말 잘 알고 있습니다. AI가 npm install을 외치기도 전에 당신의 React 프론트엔드를 쓰레기(slop)처럼 빠르게 찍어내고 있다는 것을요. Tailwind 컴포넌트, shadcn 복사-붙여넣기, v0 스크린샷, 이 모든 파이프라인 말입니다. 친구, 당신의 "프론트엔드"는 이제 그냥 분위기(vibes)와 의존성(dependencies) 덩어리일 뿐입니다 😮💨
하지만 진지하게 말해봅시다 — 당신에게 정말로 웹 인터페이스가 필요한가요, 아니면 그저 백엔드(backend)와 상호작용할 무언가가 필요한 것뿐인가요?
자리에 앉으세요. 미드-시니어 풀스택 개발자(mid-senior fullstack dev)로서, 당신이 Vercel에 배포했던 모든 사이드 프로젝트를 의심하게 만들 치트키를 전수해 드리겠습니다. 펜과 종이를 준비하세요, 친구. 딱 한 번만 말할 테니까요.
당신의 프론트엔드는 Telegram 그룹입니다.
농담이 아닙니다. 노트북을 내려놓으세요. 이 말을 충분히 곱씹어 보시기 바랍니다.
스택 (고민할 필요 없는 버전)
자, 여기 전체 구성입니다:
- FastAPI — 당신의 백엔드(backend). 깔끔하고 빠르며, 이미 알고 계실 겁니다.
- SQLite — 당신의 데이터베이스(database). 파일 하나. 당신의 디스크에. 끝.
- ngrok — 당신의 로컬호스트(localhost)를 세상에 노출합니다. 무료 티어가 존재합니다.
- Telegram Bot — 당신의 전체 프론트엔드(frontend), UX, 알림 시스템(notification system), 그리고 인증 계층(auth layer).
인프라 비용? 당신의 구린 PC와 ngrok뿐입니다. 그게 전부예요. 전기가 갑자기 끊기지 않기만을 기도하세요.
좀 더 멋을 내고 싶다면, 5달러짜리 VPS에 올려보세요. 그러면 프로덕션급(production-grade) 취미용 설정을 운영하게 되는 겁니다. 뭐, 상관없습니다. 핵심은 월말에 당신의 주말을 망칠 AWS 청구서가 날아오지 않는다는 것입니다.
9개의 서비스가 포함된 Docker compose 파일도 없습니다. CI/CD 파이프라인도 없습니다. SSD의 400MB를 잡아먹는 node_modules 폴더도 없습니다. 새벽 2시에 울리는 "배포 실패(deployment failed)" 알림도 없습니다.
그저:
uvicorn main:app --reload
ngrok http 8000
이렇게 하면 라이브 상태가 됩니다. 진심으로요.
사실 그룹이 곧 페이지입니다
여기 당신의 사고방식을 긍정적인 방향으로 완전히 뒤바꿔 놓을 관점의 전환이 있습니다.
당신의 봇이 초대된 모든 Telegram 그룹 = 당신 앱의 페이지 하나입니다.
🗂️ #dashboard → /bind overview
📦 #orders → /bind orders
🔥 #logs → /bind monitor
...
봇은 자신이 어떤 "페이지"에 있는지 어떻게 알까요? 바로 chat_id입니다. 그게 전부입니다. 모든 그룹은 고유한 chat_id를 가집니다. 당신의 봇은 메시지를 받으면 chat_id를 확인하고, 해당 ID에 어떤 서비스가 바인딩(bound)되어 있는지 찾아본 뒤 그에 따라 라우팅(routing)합니다.
당신은 코드 한 줄 없이 **URL 라우팅 (URL routing)**을 구축한 것입니다. Telegram이 이를 당신에게 제공했습니다.
그리고 그 위에 추가로 무료로 얻게 되는 것들을 보세요:
- 인증 (Auth) — Telegram 사용자가 곧 그들의 계정입니다. JWT도, OAuth도, "비밀번호 찾기" 흐름도 필요 없습니다. 그들은 존재하고, 그룹에 있으며, 인증된 상태입니다.
- 푸시 알림 (Push notifications) — 그룹에
sendMessage를 보내기만 하면 됩니다. 그것이 바로 알림입니다. - 파일 처리 (File handling) — 이미지, PDF, CSV. 업로드와 다운로드가 그냥 작동합니다.
- 버튼 (Buttons) — 인라인 키보드 (inline keyboards). CSS도, 클릭 핸들러 (click handlers)도, 상태 관리 (state management)도 필요 없습니다. 그저 콜백 (callbacks)이 포함된 문자열 리스트일 뿐입니다.
- 모바일 + 데스크톱 (Mobile + Desktop) — Telegram은 어디서나 실행됩니다. 당신의 "반응형 디자인 (responsive design)"은 이제 Telegram의 문제입니다.
- 감사 로그 (Audit log) — 채팅 기록이 곧 당신의 활동 로그입니다. 봇이 게시한 모든 내용은 타임스탬프가 찍혀 있으며 검색 가능합니다. 그것도 무료로 말이죠.
- 협업 (Collaboration) — 다중 사용자? 그냥 그룹에 초대하면 됩니다. 그것이 당신의 RBAC (역할 기반 액세스 제어)입니다.
당신은 이 중 그 어떤 것도 직접 만들지 않았습니다. 그저 그곳에 있었을 뿐입니다.
하나의 봇, 여러 마이크로서비스 (의도치 않은 아키텍처)
자, 이제부터 정말 통제 불능의 영역으로 들어갑니다.
이를 더 확장할 수 있습니다. 동일한 봇 인스턴스를 사용하되, 서로 다른 그룹을 만들고, 각 그룹을 **완전히 다른 마이크로서비스 (microservice)**에 바인딩하는 것입니다.
Telegram
│
├── group #A (chat_id: 111) ──► Service A :8001
...
당신의 봇은 말 그대로 **라우터 (router)**일 뿐입니다. 봇은 서비스가 무엇을 하는지 알지 못합니다. 그저 Telegram 이벤트를 HTTP 호출로 변환하고, 다시 Telegram 메시지로 변환할 뿐입니다. 각 서비스는 단순합니다. 그저 "무엇을 말할지"를 반환할 뿐이죠. 깔끔한 분리입니다. 어떤 서비스도 Telegram에 대해 전혀 알지 못합니다.
그리고 결정적인 점은 이것입니다: 당신의 서비스들은 독립적으로 모든 것을 수행합니다. 독립적인 SQLite, 독립적인 FastAPI 인스턴스, 독립적인 배포. 결제 서비스를 업데이트하고 싶나요? :8002를 재시작하면 됩니다. 당신의 "앱" 나머지 부분은 눈 하나 깜짝하지 않습니다.
사람들은 서비스 디스커버리 (Service Discovery), 라우팅 (Routing), 격리 (Isolation)를 수행하는 인프라를 위해 실제 돈을 지불합니다. 당신은 그룹 채팅을 다르게 생각함으로써 이를 얻어냈습니다. 당신의 우연한 마이크로서비스 아키텍처 (Microservices Architecture)에 축하를 보냅니다. 당신의 이력서(CV)에 적어두세요.
채팅 삭제 = 페이지 새로고침
이 부분이 제가 가장 좋아하는 부분입니다.
가끔 UI가 너무 지저분하다고 느껴질 때가 있죠? 화면에 상태 (State)가 너무 많고, 오래된 메시지가 너무 많아 압도되는 느낌 말입니다.
당신은 관리자(Admin)입니다. 그냥 채팅 기록을 삭제하세요.
아무런 부작용이 없습니다. 봇 (Bot)은 신경 쓰지 않습니다. FastAPI도 신경 쓰지 않습니다. SQLite는 DEFINITELY (절대로) 신경 쓰지 않습니다. 당신의 앱의 실제 상태는 데이터베이스 (Database)에 살아있습니다. 채팅은 단지 렌더 버퍼 (Render Buffer)일 뿐입니다. 언제든 지워버리세요.
마치 프로세스를 종료하지 않고도 clear 할 수 있는 터미널을 가진 것과 같습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기