💡 개요
프론트 강의를 듣다가 간단한 함수를 서버리스(Serverless)로 구현하는 것을 보고 흥미를 느껴 이를 정리해보았습니다.
서버리스
📚 서버리스란?
서버리스(Serverless)란 "서버가 없다"는 뜻이 아니라, 서버 관리의 부담이 개발자에게 없도록 클라우드 서비스가 이를 대신 처리해주는 방식을 의미합니다.
즉, 개발자는 애플리케이션 로직 작성에만 집중할 수 있고, 서버의 설정, 유지보수, 확장 등을 신경 쓰지 않아도 됩니다.
서버리스는 다음과 같은 경우에 특히 유용합니다:
- 사이드 프로젝트 또는 MVP(최소 기능 제품)를 빠르게 개발할 때.
- 사용량에 따라 비용을 절약하고 싶을 때.
- 이벤트 기반 프로세스를 간단히 처리하고 싶을 때.
다양한 서버 구축 방법
🏠 On-Premise
On-Premise는 물리적 하드웨어와 소프트웨어를 모두 직접 관리하는 방식을 의미합니다.
이 방법은 높은 초기 비용과 유지보수 비용이 들지만, 보안이나 성능 같은 특정 요구 사항을 만족시키기에 적합합니다.
- 특징:
- 하드웨어와 소프트웨어를 모두 직접 설치 및 운영.
- 완전한 제어권 보장.
- 유지보수 비용과 초기 투자가 큼.
- 적합한 상황:
- 데이터 보안이 최우선인 금융, 의료 산업.
- 인터넷 연결 없이도 운영이 필요한 환경.
☁️ Cloud
Cloud는 물리적인 하드웨어 관리를 클라우드 제공자가 대신하고, 개발자가 소프트웨어 관리에만 집중할 수 있는 방식입니다.
- 특징:
- 인프라(하드웨어)는 클라우드 제공자가 관리.
- 필요에 따라 자원을 쉽게 확장 가능.
- 사용한 만큼 비용을 지불(종량제).
- 적합한 상황:
- 동적으로 확장이 필요한 애플리케이션(예: 전자상거래).
- 초기 비용을 절약하고 싶을 때.
🪄 서버리스
서버리스는 클라우드 방식에서 더 나아가, 하드웨어와 소프트웨어 관리 모두를 클라우드 제공자가 담당하는 방식입니다.
개발자는 함수(Function)나 애플리케이션 코드만 작성하여 서버리스 플랫폼에 등록하고, 필요한 순간에만 함수가 실행됩니다.
- 특징:
- 하드웨어와 소프트웨어 관리 필요 없음.
- 요청이 있을 때만 함수가 실행됨(이벤트 기반).
- 사용량에 따라 자동 확장/축소.
- 예시:
- AWS Lambda
- Google Cloud Functions
- Azure Functions
- 적합한 상황:
- 간헐적인 트래픽이 예상되는 애플리케이션.
- 이벤트 중심의 데이터 처리(예: 이미지 변환, 로그 분석).
서버리스의 장단점
장점
- 비용 효율성:
- 사용한 만큼만 비용을 지불(Idle 상태일 때 비용 발생 X).
- 빠른 개발:
- 자동 확장성:
- 유지보수 최소화:
단점
- 실시간 서비스에는 부적합:
- 요청 시 함수가 실행되기 전 콜드 스타트로 인해 지연 발생 가능.
- 복잡한 워크로드 관리 어려움:
- 큰 규모의 애플리케이션은 관리가 복잡할 수 있음.
- 벤더 종속성:
- 특정 클라우드 플랫폼에 종속될 위험이 있음(예: AWS Lambda).
🪄 결론
서버리스는 빠른 개발과 비용 절감에 매우 적합한 방식으로, 특히 초기 프로젝트나 이벤트 기반 애플리케이션에서 유용합니다.
다만, 실시간 응답이 중요한 서비스나 대규모 애플리케이션에는 적합하지 않을 수 있으니, 요구 사항에 따라 적절한 서버 구축 방식을 선택하는 것이 중요합니다.
📌 Reference
- 🌐 서버리스(ServerLess) 개념 💯 정리 (BaaS / FaaS)