서버리스 (Vercel/Netlify)
- 요청이 올 때만 함수가 잠깐 깨어나 실행 → 끝나면 사라짐
- 장점: 안 쓸 때 비용 0, 자동 확장
- 단점: 상시 연결(WebSocket)·긴 작업·백그라운드 크론 어려움
상시 서버 (Render/Railway)
- 컨테이너가 24시간 계속 켜져 있음 (전통적인 서버 방식)
- 장점: Express 그대로 실행, 무엇이든 가능
- 단점: 안 써도 켜져 있으니 비용 발생(무료 티어는 슬립 걸림)
그래서 경계가 흐릿합니다
- Vercel도 서버리스로 백엔드를 돌릴 수 있고,
- Render/Railway도 정적 프론트를 올릴 수 있습니다.
서버리스가 아닌 상시 서버가 꼭 필요한 기능
- 실시간 양방향 통신 및 스트리밍: 소켓(WebSocket)이나 WebRTC를 활용한 실시간 채팅, 영상 스트리밍, 원격 제어, 멀티플레이어 게임 서버 등은 클라이언트와 지속적인 연결(Stateful)을 유지해야 하므로 상시 서버가 필수적입니다. [1]
- 장기 실행 백그라운드 작업: 1회 실행 제한 시간(예: AWS Lambda 기준 최대 15분)을 초과하는 대용량 데이터 처리, 배치 작업(Batch Processing), 머신러닝 모델 학습 및 데이터 백업 등은 상시 구동되는 서버가 필요합니다.
- 상태 정보(State) 유지 및 캐싱: 로그인 세션 정보나 실시간 게임 상태 등 지속적으로 메모리에 유지되어야 하는 상태 값을 다루는 기능입니다. 서버리스는 요청마다 상태가 초기화되기 때문에 연속적인 데이터 관리에 불리합니다. [1, 2]
- 엄격한 실시간 응답 (지연 시간 최소화): 서버리스는 첫 요청 시 서버가 초기화되는 '콜드 스타트(Cold Start)'로 인해 응답 지연이 발생할 수 있습니다. 금융 거래, 자율주행 데이터 처리, 실시간 입찰 시스템처럼 0.001초의 지연도 치명적인 기능은 상시 서버를 사용해야 합니다. [1]
- 특정 OS 및 하드웨어 제어: GPU가 반드시 필요한 작업이거나, 시스템 레벨의 커널 설정 및 특정 운영체제(OS)의 라이브러리를 직접 수정해야 하는 기능은 클라우드 제공업체의 통제를 받는 서버리스 환경에서 구현할 수 없습니다.
Vercel/Netlify 같은 정적 호스팅, 백엔드는 별도 서버(Render/Railway 등)???
네 곳 모두 코드를 올리면 인터넷에 띄워주는 호스팅입니다. 차이는 어떤 실행 방식을 주력으로 미느냐입니다.
| 서비스 | 주력 방식 | 잘 맞는 것 |
|---|---|---|
| Vercel / Netlify | 정적 파일 + 서버리스(요청 올 때만 실행) | 프론트엔드, Next.js, 가벼운 API |
| Render / Railway | 상시 켜진 서버(항상 돌아감) | Express, DB, WebSocket, 크론, 무거운 작업 |

