auth 체크가 어디서 일어나? 두 아키텍처 패턴 — 뭔가 잘못됐을 때 blast radius 가 와일드하게 달라.
| 패턴 | 체크 위치 | 장점 | 단점 |
|---|---|---|---|
| Perimeter | 네트워크/프록시 layer (VPN, firewall, reverse proxy) | 앱이 auth 알 필요 없음 | 한 layer = 한 실수로 전체 노출 |
| Per-request | 각 앱 안 (middleware, route decorator) | defense in depth; 한 라우트 우회해도 다른 라우트 우회 안 됨 | 로직 반복, 새 엔드포인트에 잊기 쉬움 |
솔로 개발자 현실: 둘 다, layered
이게 "값싼 자물쇠 두 개" 모델의 이유 전부:
- Tailscale = perimeter — tailnet 안 디바이스만 host 도달 가능. (Track 4)
- PIN middleware = per-request — tailnet 안 디바이스도 non-public 엔드포인트 치려면 session 쿠키 필요. (Track 5)
per-request auth 어디 둘지
FastAPI, Express, Flask, 어떤 모던 웹 프레임워크든: middleware, route 별 체크 X. middleware 는 모든 요청이 핸들러 도달 전에 돌아 — 새 라우트에 추가 잊을 수 없어.