티스토리 뷰
728x90
📦 OpenFaaS란?
OpenFaaS (Functions as a Service) 는 서버리스(Serverless) 애플리케이션을 컨테이너 기반으로 손쉽게 구축하고 배포할 수 있게 해주는 오픈소스 플랫폼입니다.
"Docker/Kubernetes 위에 서버리스" 를 구현하는 대표적인 솔루션이라고 할 수 있습니다.
핵심 키워드:
- 서버리스(Serverless) 아키텍처
- 컨테이너(Container) 기반
- 이벤트 기반 실행 (HTTP, Kafka, Cron 등 트리거 가능)
- 멀티언어 지원 (Python, Java, Node.js, Go, Bash Script 등)
- 자체 호스팅 가능 (완전한 On-Premise 가능)
- 오픈소스 (Apache 2.0 라이선스)
🎯 OpenFaaS 주요 특징
컨테이너 기반 함수 | 작성한 함수를 컨테이너 이미지로 패키징 |
간단한 배포 | faas-cli를 통해 매우 빠르고 쉽게 함수 배포 |
멀티 클러스터 지원 | Kubernetes, Docker Swarm 등 다양한 클러스터 위에 설치 가능 |
스케일 아웃/인 자동화 | 요청 수에 따라 함수 인스턴스가 자동으로 늘어나거나 줄어듦 |
이벤트 트리거 | HTTP API 호출, Kafka 메시지, CronJob 등 다양한 트리거 지원 |
플러그인 가능 아키텍처 | 인증, 로깅, 모니터링 플러그인 추가 가능 |
Gateway 제공 | OpenFaaS Gateway가 모든 함수 관리를 중앙에서 처리 |
Dashboard 제공 | 웹 UI를 통해 함수 배포 상태, 요청 수, 에러 등 모니터링 가능 |
커뮤니티와 상업 지원 | 오픈소스 버전 + 상업용 지원(OpenFaaS Pro) 존재 |
🏗️ 기본 아키텍처 구성
[사용자/시스템]
↓ HTTP 요청
[OpenFaaS Gateway]
↓
[Function Watchdog + 사용자 함수 (컨테이너)]
↓
[Docker / Kubernetes 클러스터]
주요 컴포넌트
- Gateway: 함수 호출을 관리하고, 오토스케일링과 인증 기능 담당
- Watchdog: HTTP 요청을 함수 내부로 전달하고 결과를 반환하는 lightweight 프록시
- Function Pod/Container: 실제 사용자가 작성한 비즈니스 로직 함수
- Queue Worker (옵션): 비동기 이벤트(예: Kafka 메시지) 처리
🛠️ OpenFaaS 주요 설치 환경
플랫폼 | 설치 여부 |
Kubernetes | O (Helm 차트 또는 YAML 배포) |
Docker Swarm | O |
K3s | O (초경량 Kubernetes) |
Nomad | O (HashiCorp Nomad 지원) |
Standalone | 실험적 |
🔥 OpenFaaS를 왜 쓸까?
- 쿠버네티스 같은 복잡한 플랫폼에서도 간단하게 서버리스 환경 구축 가능
- 직접 클러스터 통제 가능 (AWS Lambda 같은 외부 의존성 없음)
- 컨테이너 기술을 그대로 재사용 (도커 이미지 형태로 함수 빌드)
- 초경량 + 빠른 부팅 (따라서 엣지 컴퓨팅에도 적합)
- Event-Driven Architecture 쉽게 구현
- 운영/모니터링을 커스터마이징 가능 (Prometheus 통합 기본 지원)
🧩 OpenFaaS 생태계
- faas-cli: OpenFaaS 함수 생성, 빌드, 배포, 관리 명령줄 툴
- faas-netes: Kubernetes 환경에서 OpenFaaS 운영을 지원하는 컨트롤러
- faas-idler: 요청이 없는 함수를 자동으로 스케일-다운 시키는 도구
- faas-provider: 다양한 백엔드 (K8s, Docker, Nomad)에 맞춘 pluggable provider
✨ 요약
항목 | 내용 |
정의 | 컨테이너 기반 오픈소스 서버리스 프레임워크 |
주요 목적 | Docker/Kubernetes 위에서 서버리스 실행 환경 제공 |
장점 | 자체 호스팅, 멀티언어, 초경량, 빠른 스케일링 |
사용 사례 | 엣지 컴퓨팅, 마이크로서비스 확장, 이벤트 기반 처리 등 |
728x90
'쿠버네티스' 카테고리의 다른 글
쿠버네티스 설치후 StorageClass 설치 방법 (0) | 2025.04.12 |
---|---|
MetalLB와 물리 장비 연동을 통한 Kubernetes LoadBalancer 구성 정리 (0) | 2025.04.06 |
쿠버네티스 클라우드 네이티브 오토스케일링 방법 (0) | 2025.04.06 |
ConfigMap을 활용한 유용한 응용 팁 (0) | 2025.04.06 |
Kubernetes ConfigMap을 이용해서 데이터를 마운트 (0) | 2025.04.06 |