서버리스
☁️ 서버리스 (Serverless)
서버리스는 개발자가 서버를 직접 관리할 필요 없이 애플리케이션을 개발하고 실행할 수 있도록 하는 클라우드 컴퓨팅 모델입니다. 서버가 정말로 없는 것이 아니라, 서버의 존재를 신경 쓸 필요가 없을 정도로 클라우드 제공업체(CSP)가 서버의 프로비저닝, 스케일링, 관리를 모두 추상화한 것입니다.
서버리스는 주로 'BaaS(Backend as a Service)'와 'FaaS(Function as a Service)' 두 가지 형태로 나뉩니다.
🚀 FaaS (Function as a Service)
FaaS는 서버리스의 핵심 모델로, 개발자가 작성한 개별 함수(Function) 단위로 코드를 실행하는 방식입니다. 특정 이벤트가 발생했을 때만 함수가 실행되고, 실행된 시간만큼만 비용을 지불합니다.
- 동작 방식 : 이벤트 발생 → 함수 실행 → 결과 반환 (실행이 끝나면 자원은 사라짐)
- 장점 :
> * 비용 효율성: 코드가 실행되지 않을 때는 비용이 전혀 발생하지 않습니다. > * 자동 확장성: 요청이 급증하면 클라우드 제공업체가 알아서 함수 실행 환경을 자동으로 확장합니다. > * 개발 집중: 개발자는 인프라 걱정 없이 오직 비즈니스 로직(함수)에만 집중할 수 있습니다.
- 대표 서비스 : AWS Lambda, Google Cloud Functions, Azure Functions
⚖️ 서버리스의 장단점
- 장점 :
> * 서버 관리 부담 제로 > * 유연하고 자동화된 확장성 > * 사용한 만큼만 지불하는 비용 효율성
- 단점 :
> * 콜드 스타트 (Cold Start): 오랫동안 호출되지 않은 함수는 처음 실행될 때 컨테이너를 준비하는 데 시간이 걸려 응답이 지연될 수 있습니다. > * 제한된 실행 환경: 실행 시간, 메모리 등 클라우드 제공업체가 정한 제약이 있습니다. > * 상태 관리의 어려움: 함수는 상태 없이(Stateless) 실행되므로, 상태를 유지하려면 별도의 데이터베이스나 캐시가 필요합니다.
💡 개발자 핵심 Point
- 서버리스는 이벤트 기반의 비동기적인 작업 처리에 매우 적합합니다.
- 이미지 리사이징, 데이터 처리 파이프라인, 챗봇, 간단한 API 백엔드 등 특정 이벤트에 의해 촉발되는 짧은 작업을 구현하는 데 널리 사용됩니다.
- 항상 실행되어야 하는 대규모 애플리케이션보다는, 필요할 때만 잠시 실행되는 보조적인 기능들을 구현하는 데 더 효과적일 수 있습니다.