187. FaaS (Function as a Service / Serverless) - 인프라 관리 위임 함수 단위 코드 배포 호출 과금 AWS Lambda 콜드 스타트 클라우드 아키텍처
핵심 인사이트: (215번 서버리스와 완벽히 동일한 내용) 거대한 웹 서버를 24시간 켜두는 건 미친 전기세 낭비다. "야! 앱 코드 10만 줄을 다 묶어서 띄우지 마!
회원가입(),결제하기(),사진_자르기()처럼 100줄짜리 작은 함수(Function) 단위로 토막 내서 아마존(AWS) 창고에 쑤셔 박아! 평소엔 숨도 안 쉬고 죽어 있다가, 유저가 '결제 버튼'을 누르는 그 찰나의 1초에만 허공에서 결제 함수 코드가 뿅 튀어나와 연산하고 0.1초 만에 다시 죽어 증발해 버리게 만들어!! 서버가 없으니(Serverless) 관리가 필요 없고, 딱 함수가 돌아간 '0.1초' 치의 전기세(요금)만 내면 되잖아!!" 함수 하나로 세상을 찢은 극강의 짠돌이 클라우드 혁명, FaaS다.
(이 문서는 4과목 SE 215번 [서버리스 아키텍처]와 본질적으로 100% 같은 개념을 다루며, 클라우드 컴퓨팅(ICT) 맥락에서 재정리한 것입니다.)
Ⅰ. 클라우드 과금의 마지막 병목 (PaaS/IaaS의 한계)
- 183번 IaaS(깡통)나 184번 PaaS(환경)는 편하긴 하지만, 어쨌든 24시간 내내 클라우드 상에 '내 가상 서버 머신(VM)'이 켜져서 윙윙 돌아갑니다.
- 새벽에 손님이 단 한 명도 안 와도(트래픽 0), 나는 아마존에게 한 달 치 서버 대여료 10만 원을 꼬박꼬박 내야 하는 '가동 시간(Uptime)' 기반의 억울한 과금 체계였습니다.
Ⅱ. FaaS (Function as a Service)의 탄생 🌟
- 개념: 개발자는 서버 운영체제나 컨테이너를 아예 구경할 수도 없습니다. 오직 특정 작업(이벤트)을 수행하는 짧은 소스 코드 조각인 **단일 함수(Function)**만을 클라우드에 업로드(배포) 해두고, 그 함수가 호출(Trigger)될 때만 찰나에 실행 환경이 배정되어 코드를 돌린 뒤, 즉시 소멸시켜 '순수하게 함수가 실행된 시간(밀리초)'만큼만 과금하는 클라우드 최종 마법입니다. (대표작: AWS Lambda, Google Cloud Functions)
Ⅲ. FaaS를 지배하는 3대 절대 법칙 🌟 핵심 기출 🌟
1. 상태가 없다 (Stateless) - "기억 상실증"
- FaaS의 함수 1만 개가 동시에 뜨려면 몸이 극도로 가벼워야 합니다.
- 함수 안의 변수에
장바구니 = 사과라고 저장해 봤자, 함수가 끝나면 0.1초 만에 람다 컨테이너가 펑 터져(Kill) 소멸하므로 데이터가 우주의 먼지로 사라집니다. - 해결책: 함수가 계산한 결과값(영수증)은 함수가 자결하기 전에 무조건 밖의 영구 저장소인 S3나 DynamoDB로 던져놓고 죽어야만 저장이 유지됩니다.
2. 이벤트 주도 (Event-Driven) 생태계의 중심
- FaaS 함수는 24시간 대기하며 소켓을 열고 기다리지 못합니다(죽어있으니까요).
- 누군가 잠자는 람다의 뺨을 때려 깨워주는 **'트리거(Trigger/Event)'**가 필수입니다.
- S3 웹하드에 사진 파일이 하나 업로드됨 ➜ (이벤트 찰칵) ➜ 함수가 깨어나 사진을 압축하고 죽음.
- API Gateway로
/loginHTTP 주소가 찔림 ➜ (이벤트 찰칵) ➜ 함수가 깨어나 로그인 처리하고 죽음.
3. 무한대의 오토 스케일링 (1초 만에 1만 개 복사)
- 이벤트(클릭)가 10번 들어오면 람다 함수가 10개 뜹니다.
- 1초 만에 클릭이 10만 번 폭주하면? 아마존 허공에서 내 함수 코드가 복제된 람다 컨테이너 10만 개가 0.1초 만에 동시에 빡! 하고 병렬로 떠서 작업을 다 처리하고 동시에 장렬히 전사합니다. (개발자가 트래픽 폭주로 서버 터질까 봐 떨 필요가 0%인 진정한 인프라 해방.)
Ⅳ. 핏빛 대가: 콜드 스타트 (Cold Start) 지연 🌟
- FaaS의 영원한 적입니다.
- 함수가 처음 호출될 때, 아마존 지하에서 컨테이너를 하나 파고, 그 안에 언어(Node.js)를 깐 다음, 내 함수 코드를 밀어 넣고 켤 때까지 **약 1~2초의 로딩 딜레이(Cold Start)**가 필연적으로 발생합니다. (한 번 켜지고 나면 당분간 Warm 상태라 빠름)
- 제약: "0.01초라도 늦으면 죽어!" 하는 생명 유지 장치나 실시간 금융 주식 거래 서버의 뼈대로 이 서버리스(FaaS)를 쓰면 지연 시간 때문에 회사 말아먹습니다. 그냥 상시 켜져 있는 도커 컨테이너(PaaS)를 써야 합니다.
📢 섹션 요약 비유: 기존의 PaaS(플랫폼) 클라우드는 사장님이 식당에 **'정규직 요리사 1명'**을 고용해 24시간 동안 주방에 앉혀둔 것입니다. 손님이 오든 안 오든, 밤이든 낮이든 1시간에 1만 원씩 월급(서버 유지비)이 무조건 줄줄 샙니다. **FaaS(함수 대여 서비스, 서버리스)**는 요리사를 다 해고하고 주방을 비워버린 극강의 효율입니다. 평소엔 주방이 텅 비어 인건비가 **'0원'**입니다. 그러다 손님이 키오스크에서 "불고기버거!(이벤트 발생)" 버튼을 누르는 순간! 허공에서 '용병(Function 함수)' 한 명이 0.1초 만에 텔레포트해서 나타나 패티만 쓱 굽고 햄버거를 건넨 뒤, 다시 연기처럼 펑 사라져버립니다. 손님이 100명 오면 허공에서 용병 100명이 튀어나와 패티를 굽고 동시에 증발합니다. 사장님은 한 달 뒤에, 이 용병들이 나타나서 패티를 굽는 데 쓴 **'단 몇 초'**라는 순수 노동 시간의 시급(초 단위 과금)만 계산해서 아마존 용역 업체에 동전 몇 개만 계좌이체 해주면 끝나는, 우주 최고의 스타트업 짠돌이 아키텍처입니다.