이름은 완전한 거짓말이에요. 서버는 분명히 있어요. 있을 수밖에 없죠. 코드가 실행되려면 어딘가가 필요하니까요.
"서버리스"의 진짜 의미는 이거예요. 내 서버가 아니고, 내 문제가 아니라는 것.
모텔 복도의 조명과 주차장 동작 감지 조명을 떠올려 보세요. 복도 조명은 아무도 지나가지 않아도 밤새 켜져 있고, 그 시간 내내 누군가 비용을 내요. 주차장 조명은 꺼져 있다가 발을 들이는 순간 켜지고, 볼일이 끝나면 다시 꺼지죠. 발자국에 돈을 내는 거지, 건물 유지비를 내는 게 아니에요.
이게 핵심 변화예요. 24시간 돌아가는 기계를 빌리는 대신, 코드가 실제로 무언가를 하는 순간에만 비용을 내는 방식이에요.
기존 방식 — 차이를 느껴 보세요. 서버(창고 어딘가에 있는 상시 가동 컴퓨터)를 빌리면 이제 내 것이 돼요. 듣기엔 좋지만 "내 것"이 무엇을 의미하는지 생각해 보면:
- 서버는 24시간 돌아가고, 새벽 3시에 아무도 앱을 쓰지 않아도 그 24시간 전부 비용이 나가요.
- 서버가 다운되면 내 호출기가 울려요.
- 보안 업데이트가 필요하면 내 주말이 사라지죠.
- 트래픽이 몰리면 미리 더 큰 서버를 빌려뒀어야 해요. 그렇지 않으면 서버가 쓰러져요.
간헐적인 방문객을 위해 건물을 밤새 밝히고 난방하는 건물주 신세예요.
서버리스 방식은 건물을 빌리지 않아요. Vercel, Cloudflare, AWS 같은 공급자에게 작은 코드 조각 하나를 맡기는 거예요. 하나의 작업만 처리하는 함수 하나. 예를 들면:
- 이 이미지를 리사이즈하라
- 이 확인 이메일을 보내라
- 이 쿠폰이 유효한지 확인하라
그리고 자리를 떠나면 돼요. 누군가가 실제로 그 작업을 실행하면 다음 순서로 진행돼요:
요청이 들어와요. "방금 결제가 완료됐다. 영수증을 보내라."
공급자가 모두를 위해 준비해둔 대형 공유 풀에서 기계를 하나 꺼내요.
내 함수가 그 기계에서 실행되고, 영수증을 보내고, 종료돼요.
기계는 다음 사람을 위해 바로 풀로 돌아가죠.
어떤 기계인지 고른 적도, 이름을 붙인 적도, 알 방법도 없어요. 그리고 요금은 코드가 실제로 작동한 0.5초 동안만 발생해요.
비개발자에게 이게 왜 중요할까요? 두 가지 이유예요. 돈과 마음의 편안함.
- 대기 시간이 아닌 사용 시간만큼만 내요. 한 달에 방문자 열 명인 사이드 프로젝트는 비용이 거의 없어요. 아무도 없을 때 아무것도 실행되지 않으니까요. 매시간 청구되는 서버와 비교하면, 소규모나 트래픽이 들쑥날쑥한 서비스에서는 몇 센트와 실제 월정액의 차이예요.
- 트래픽 급증이 더 이상 공포가 아니에요. 어딘가에 소개되어 한꺼번에 천 명이 몰려도, 공급자가 풀에서 기계 천 대를 꺼내 함수를 천 번 실행하고 모두 돌려보내요. 미리 대비하지 않아도, 아무것도 업그레이드하지 않아도 확장이 돼요. 애초에 기계 한 대가 아니었으니까요.
알아둘 솔직한 단점이 하나 있어요. 콜드 스타트(cold start)라고 불러요. 주차장 조명이 걸어 들어가는 순간 켜지는 걸 기억하시나요? 거의 그 정도로 빠르지만, 완전히 같지는 않아요. 함수가 한동안 실행되지 않았다면 공급자가 기계를 꺼내 깨우는 시간이 필요하고, 첫 번째 요청에 미세한 지연이 생겨요. 계속 실행되면 모든 게 따뜻하게 유지되어 빠릿하죠. 오래 쉬다가 다시 실행하면 다음 방문자가 잠깐 기다려요. 대부분은 느끼지 못하는 차이예요. 밀리초가 중요한 서비스라면 조명을 항상 켜두기 위해 약간의 비용을 더 내면 돼요.
이게 전부예요. 밤새 빈 건물을 밝히는 건물주가 아니에요. 누군가 들어올 때만 불이 켜지고, 발자국에만 돈을 내는 방식이에요.