Function as a Service(FaaS)는 개발자가 함수라고 하는 작고 모듈화된 코드 조각을 개발하고 클라우드 제공업체가 특정 이벤트에 대한 응답으로 이를 실행하는 클라우드 컴퓨팅 모델입니다. 이 모델에서는 서버리스 런타임이 인프라를 관리하므로 코드 로직에만 집중할 수 있습니다. 클라우드 제공업체는 물리적 하드웨어, 운영체제, 웹 서버 소프트웨어를 처리합니다.
이는 기존 서버 기반 애플리케이션 또는 모놀리식 아키텍처와는 다릅니다. 이러한 이전 모델에서는 애플리케이션을 사용하는 사람이 없더라도 지속적으로 실행되는 서버를 관리해야 했습니다. FaaS를 사용하면 특정 이벤트가 트리거될 때만 플랫폼에서 코드를 실행합니다. 필요한 경우에만 리소스를 사용하므로 애플리케이션을 효율적으로 빌드할 수 있습니다.
FaaS를 Platform as a Service(PaaS) 및 Infrastructure as a Service(IaaS)와 같은 다른 클라우드 서비스 모델과 어떻게 다른지 이해하는 것이 좋습니다. FaaS는 제공업체가 서버를 관리하는 더 광범위한 '서버리스' 카테고리에 속하지만, 고유한 수준의 추상화를 제공합니다. 서버리스는 데이터베이스, 스토리지, 컴퓨팅 등 제공업체가 서버를 관리하는 모든 서비스를 포괄합니다. FaaS는 이벤트에 대한 응답으로 코드를 실행하는 서버리스의 컴퓨팅 부분입니다.
기능 | FaaS(Function as a Service) | PaaS(Platform as a Service) | IaaS(Infrastructure as a Service) |
기본 단위 | 단일 함수(작은 코드 스니펫) | 전체 애플리케이션 | 가상 머신(VM) |
확장성 | 요청당 즉각적인 확장(Scale-to-zero 포함) | 느림, 구성된 규칙에 따라 확장 | 수동 또는 사전 구성된 자동 확장 |
가격 책정 모델 | 실행 시간(밀리초)당 지불 | 실행 중인 리소스(업타임)에 대한 비용 지불 | 할당된 리소스(크기/시간)에 대한 비용 지불 |
유지보수 | 없음(제공업체가 모든 것을 관리) | 낮음(공급업체가 OS/런타임 관리) | 높음(OS, 업데이트, 패치 관리) |
권장 | 이벤트 기반 작업, 결합 코드, 데이터 처리 | 웹 앱, 장기 실행 서비스 | 기존 앱, 복잡한 커스텀 인프라 |
기능
FaaS(Function as a Service)
PaaS(Platform as a Service)
IaaS(Infrastructure as a Service)
기본 단위
단일 함수(작은 코드 스니펫)
전체 애플리케이션
가상 머신(VM)
확장성
요청당 즉각적인 확장(Scale-to-zero 포함)
느림, 구성된 규칙에 따라 확장
수동 또는 사전 구성된 자동 확장
가격 책정 모델
실행 시간(밀리초)당 지불
실행 중인 리소스(업타임)에 대한 비용 지불
할당된 리소스(크기/시간)에 대한 비용 지불
유지보수
없음(제공업체가 모든 것을 관리)
낮음(공급업체가 OS/런타임 관리)
높음(OS, 업데이트, 패치 관리)
권장
이벤트 기반 작업, 결합 코드, 데이터 처리
웹 앱, 장기 실행 서비스
기존 앱, 복잡한 커스텀 인프라
FaaS 워크플로는 단순하고 효율적일 수 있습니다. 이러한 모델은 종종 이벤트 기반 모델에 의존하며, 여기서 작업이 코드를 트리거합니다.
FaaS는 다재다능하며 많은 최신 애플리케이션 아키텍처에 잘 맞습니다.
복잡한 애플리케이션을 이벤트로 통신하는 작고 독립적인 조각으로 나눌 수 있습니다.
FaaS는 사용자가 이미지를 업로드한 직후에 이미지 크기를 조정하거나 데이터가 도착하는 즉시 정리하는 등의 작업에 적합합니다.
함수를 사용하면 모바일 앱의 로직을 강화하거나 사물 인터넷(IoT) 기기의 데이터를 처리할 수 있습니다.
동영상 인코딩과 같이 많은 소규모의 동시 작업으로 분할할 수 있는 작업은 FaaS에서 매우 효율적으로 실행됩니다.
특정 시간에 실행되어 유지보수를 수행하거나 보고서를 생성하는 함수로 기존의 예약된 작업을 대체할 수 있습니다.
FaaS 클라우드 기술을 도입하면 개발자와 비즈니스에 여러 가지 이점이 있습니다.
즉각적인 자동 확장
수동으로 아무것도 구성할 필요 없이 애플리케이션이 한 명의 사용자부터 수천 명의 사용자에 이르기까지 트래픽의 급격한 증가를 처리할 수 있습니다.
우수한 비용 관리(사용한 만큼만 지불)
코드가 실행될 때만 비용을 지불하므로 유휴 서버에 대한 비용을 지불하는 것과 비교해 비용을 크게 절감할 수 있습니다.
개발자 속도 향상
개발자는 서버 관리나 인프라 설정에 시간을 들이지 않고도 코드를 작성하고 빠르게 배포할 수 있습니다.
인프라 관리가 아닌 애플리케이션 코드에 집중
팀은 서버 패치나 운영체제 관리에 에너지를 쏟는 대신 고객을 위한 가치 창출에 집중할 수 있습니다.
고가용성 및 복원력
FaaS 플랫폼은 일반적으로 여러 영역에서 코드를 실행하므로 한 영역에 장애가 발생하더라도 애플리케이션이 계속 작동합니다.
개발자가 FaaS에서 가장 흔하게 겪는 문제 중 하나는 '콜드 스타트'입니다. 함수가 한동안 실행되지 않으면 클라우드 제공업체는 리소스를 절약하기 위해 환경을 가동 중지합니다. 다음에 이벤트가 해당 함수를 트리거하면 시스템이 환경을 설정하고 코드를 로드하는 동안 약간의 지연이 발생합니다. 콜드 스타트라고 하는 이 지연은 애플리케이션 속도를 저하시킬 수 있습니다.
애플리케이션에 즉각적인 응답이 필요한 경우 다음 단계를 사용하여 지연 시간을 최소화할 수 있습니다.
Function as a Service는 클라우드 컴퓨팅 모델을 설명하며, Cloud Run Functions는 이 개념을 실현하는 Google Cloud 제품입니다. 서버 관리 없이 코드를 실행할 수 있는 확장 가능한 종량제 FaaS 솔루션 역할을 합니다.
Cloud Run Functions를 선택하면 Google Cloud가 기본 인프라를 처리하는 서버리스 접근방식을 채택하게 됩니다. 개발자가 코드를 제공하면 플랫폼이 실행 환경, 운영체제 업데이트, 자동 확장 기능을 관리합니다. 이 통합을 통해 단일 가상 머신을 프로비저닝하지 않고도 HTTP 요청이나 데이터 변경과 같은 이벤트에 응답하는 단일 목적의 함수를 배포할 수 있습니다.
이 서비스는 함수 배포의 단순성과 Cloud Run 기술의 강력한 기능을 결합합니다. 개발자는 Python, Node.js, Go, Java, .NET, Ruby 등의 언어를 사용하여 이벤트 기반 애플리케이션을 빌드할 수 있습니다. Google의 강력한 인프라에서 실행되므로 수요에 따라 함수를 0개에서 수천 개의 인스턴스로 자동으로 확장할 수 있습니다.
Function as a Service와 서버리스 컴퓨팅에 대해 자세히 알아보려면 다음 리소스를 살펴보세요.