FaaS(Function-as-a-Service)는 마이크로서비스 애플리케이션 구축 및 실행에 일반적으로 수반되는 복잡한 인프라를 관리하지 않고도 이벤트에 대한 응답으로 코드를 실행할 수 있는 클라우드 컴퓨팅 서비스입니다.
인터넷에서 소프트웨어 애플리케이션을 호스팅하려면 가상 또는 물리적 서버를 프로비저닝 및 관리하고, 운영 체제 및 웹 서버 호스팅 프로세스를 관리해야 하는 것이 일반적입니다. FaaS를 사용하면 클라우드 서비스 공급업체에서 물리적 하드웨어, 가상 머신 운영 체제 및 웹 서버 소프트웨어 관리까지 모두 자동으로 처리합니다. 이를 통해 개발자는 애플리케이션 코드의 개별 기능에만 집중할 수 있습니다.
서버리스와 서비스형 기능(FaaS)은 종종 서로 혼동되는 경우가 많지만, 사실 FaaS는 서버리스의 하위 집합입니다.
서버리스는 컴퓨팅, 스토리지, 데이터베이스, 메시징, API 게이트웨이 등 서버의 구성, 관리, 과금이 최종 사용자에게 보이지 않는 모든 서비스 범주에 초점을 맞추고 있습니다.
반면 FaaS는 서버리스 아키텍처에서 가장 핵심적인 기술이지만, 애플리케이션 코드 또는 컨테이너가 이벤트나 요청에 대한 응답으로만 실행되는 이벤트 중심 컴퓨팅 패러다임에 중점을 둡니다.
FaaS는 애플리케이션을 효율적이고 비용 효율적인 방식으로 클라우드로 마이그레이션 하려는 경우 유용한 툴입니다. FaaS는 다음과 같은 이점을 제공합니다.
다음과 같은 우수 사례를 따르면 FaaS를 더 쉽게 배포하고 더 효과적으로 사용할 수 있습니다.
FaaS는 트랜잭션을 쉽게 격리하고 확장할 수 있기 때문에 대용량의 병렬 워크로드에 적합합니다. 백엔드 시스템을 생성하거나 데이터 처리, 포맷 변환, 인코딩 또는 데이터 취합과 같은 작업에 사용할 수도 있습니다.
FaaS는 웹 앱, 백엔드, 데이터/스트림 처리 또는 온라인 챗봇이나 IoT 디바이스용 백엔드를 생성할 때도 유용한 툴입니다. FaaS는 타사 서비스를 관리하고 사용하는 데 도움이 될 수 있습니다. 예를 들어, 안드로이드 앱 개발을 고려하고 있다면 비용을 절감하기 위해 FaaS 방식을 채택할 수 있습니다. 일괄 처리와 같은 특정 기능을 위해 앱이 클라우드에 연결할 때만 비용이 부과되기 때문에 기존 접근 방식을 사용할 때보다 비용을 크게 절감할 수 있습니다.
FaaS는 또한 컴퓨팅 성능을 획기적으로 향상할 수 있습니다. 예를 들어, 최근 두 명의 학생이 IBM 엔지니어와 함께 IBM Cloud Functions를 활용하여 몬테카를로 시뮬레이션(예측하기 어려운 특정 사건의 미래 결과를 예측하는 데 사용되는 수학적 방법)으로 주가를 추정하는 방법을 연구했습니다. 몬테카를로 시뮬레이션은 중요한 고성능 컴퓨팅 워크로드로 간주됩니다. 팀은 몬테카를로와 IBM Cloud Functions의 조합을 통해 대규모 계산을 실행하고 비즈니스 논리에 집중할 수 있었습니다. 팀은 FaaS를 사용하여 1,000개의 동시 호출로 전체 몬테카를로 시뮬레이션을 약 90초 만에 끝냈습니다. 이에 비해 CPU 코어가 4개인 노트북에서는 동일한 흐름을 실행하는 데 247분이 걸렸으며 CPU 사용률이 거의 100%에 도달했습니다.
더 많은 FaaS 사용 사례를 보려면 "IBM Cloud Functions의 주요 이점 요약"을 확인하세요.
FaaS, PaaS(서비스형 플랫폼), 컨테이너, VM(가상 머신)은 모두 서버리스 에코시스템에서 중요한 역할을 합니다. FaaS는 서버리스 스택에서 가장 중심적이고 가장 명확한 요소인 만큼, FaaS가 현재 시장에 나와 있는 다른 일반적인 컴퓨팅 모델과 주요 속성이 어떻게 다른지 살펴볼 필요가 있습니다.
Kubernetes와 Knative는 FaaS를 뒷받침하는 '배관' 구현의 하나입니다. Kubernetes는 클라우드 애플리케이션 관리에 중요한 오픈 소스 컨테이너 오케스트레이션 툴입니다. Knative를 사용하면 Kubernetes 클러스터 내에서 서버리스를 실행할 수 있습니다.
Knative와 Kubernetes를 결합하면 모니터링, 보안, 로깅, 인증과 같은 Kubernetes 기능을 활용하고, 자동화된 컨테이너 빌드, 완전한 이식성, 여러 하이브리드 환경에서의 작업과 같은 Knative의 이점과 결합할 수 있습니다.
이 기술을 창시한 사람은 개발자가 클라우드 앱을 빌드할 때 서버리스와 컨테이너 중 하나를 선택할 필요가 없어야 한다고 생각했습니다. 목표는 서버리스의 강력한 확장성과 온디맨드 액세스를 통해 컨테이너의 가용성과 일관성을 높이는 것이었습니다.
Knative에 관해 자세히 알아보려면 다음 동영상을 시청하세요.
컨테이너 이미지, 배치 작업 또는 소스 코드를 서버리스 워크로드로 실행하므로 크기 조정, 배포, 네트워킹 또는 확장이 필요 없습니다.
FaaS(Functions-as-a-Service) 프로그래밍 플랫폼을 사용하여 온디맨드 방식으로 확장 가능한 경량 코드를 개발하세요.