Function as a Service(FaaS)란 무엇인가요?

Function as a Service(FaaS)는 개발자가 함수라고 하는 작고 모듈화된 코드 조각을 개발하고 클라우드 제공업체가 특정 이벤트에 대한 응답으로 이를 실행하는 클라우드 컴퓨팅 모델입니다. 이 모델에서는 서버리스 런타임이 인프라를 관리하므로 코드 로직에만 집중할 수 있습니다. 클라우드 제공업체는 물리적 하드웨어, 운영체제, 웹 서버 소프트웨어를 처리합니다.

이는 기존 서버 기반 애플리케이션 또는 모놀리식 아키텍처와는 다릅니다. 이러한 이전 모델에서는 애플리케이션을 사용하는 사람이 없더라도 지속적으로 실행되는 서버를 관리해야 했습니다. FaaS를 사용하면 특정 이벤트가 트리거될 때만 플랫폼에서 코드를 실행합니다. 필요한 경우에만 리소스를 사용하므로 애플리케이션을 효율적으로 빌드할 수 있습니다.

FaaS, PaaS, IaaS 비교

FaaS를 Platform as a Service(PaaS) 및 Infrastructure as a Service(IaaS)와 같은 다른 클라우드 서비스 모델과 어떻게 다른지 이해하는 것이 좋습니다. FaaS는 제공업체가 서버를 관리하는 더 광범위한 '서버리스' 카테고리에 속하지만, 고유한 수준의 추상화를 제공합니다. 서버리스는 데이터베이스, 스토리지, 컴퓨팅 등 제공업체가 서버를 관리하는 모든 서비스를 포괄합니다. FaaS는 이벤트에 대한 응답으로 코드를 실행하는 서버리스의 컴퓨팅 부분입니다.

  • FaaS는 이벤트 기반 코드에 중점을 둡니다. 개발자가 파일 업로드와 같은 이벤트에 대한 응답으로 특정 작업을 수행하는 단일 함수를 배포합니다. 플랫폼은 자동으로 확장되며 유휴 상태일 때는 0까지 축소되는 경우가 많습니다.
  • PaaS는 전체 애플리케이션을 빌드하고 실행할 수 있는 플랫폼을 제공합니다. PaaS는 하드웨어와 운영체제를 관리할 필요가 없도록 해주지만, 일반적으로 애플리케이션을 계속 실행하면서 사용자 요청을 기다립니다. 개별 이벤트 트리거보다는 완전한 웹 애플리케이션에 가장 적합합니다.
  • IaaS는 가장 많은 제어 기능을 제공하지만 가장 많은 관리가 필요합니다. 가상 머신(VM)과 스토리지를 대여하지만 운영체제, 런타임, 미들웨어는 직접 관리해야 합니다.

클라우드 서비스 모델 비교

기능

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, 업데이트, 패치 관리)

권장

이벤트 기반 작업, 결합 코드, 데이터 처리

웹 앱, 장기 실행 서비스

기존 앱, 복잡한 커스텀 인프라

Function as a Service 작동 방식

FaaS 워크플로는 단순하고 효율적일 수 있습니다. 이러한 모델은 종종 이벤트 기반 모델에 의존하며, 여기서 작업이 코드를 트리거합니다.

  1. 코드 배포: 단일 작업을 수행하는 작은 코드 또는 함수를 작성하여 클라우드 제공업체에 업로드합니다.
  2. 이벤트 트리거링: 사용자가 버튼을 클릭하거나, 스토리지에 파일을 업로드하거나, 메시지가 큐에 도착하는 등의 이벤트가 발생합니다.
  3. 리소스 할당: 클라우드 제공업체는 이벤트를 확인하고 필요한 실행 환경을 즉시 프로비저닝합니다.
  4. 함수 실행: 코드가 실행되고, 작업을 수행하며, 데이터 처리 또는 알림 전송과 같은 결과를 생성합니다.
  5. 비활성화 및 결제: 작업이 완료되면 리소스가 즉시 해제되며, 코드가 실행된 밀리초 단위로만 요금이 청구됩니다.

FaaS의 일반적인 사용 사례

FaaS는 다재다능하며 많은 최신 애플리케이션 아키텍처에 잘 맞습니다.

복잡한 애플리케이션을 이벤트로 통신하는 작고 독립적인 조각으로 나눌 수 있습니다.

FaaS는 사용자가 이미지를 업로드한 직후에 이미지 크기를 조정하거나 데이터가 도착하는 즉시 정리하는 등의 작업에 적합합니다.

함수를 사용하면 모바일 앱의 로직을 강화하거나 사물 인터넷(IoT) 기기의 데이터를 처리할 수 있습니다.

동영상 인코딩과 같이 많은 소규모의 동시 작업으로 분할할 수 있는 작업은 FaaS에서 매우 효율적으로 실행됩니다.

특정 시간에 실행되어 유지보수를 수행하거나 보고서를 생성하는 함수로 기존의 예약된 작업을 대체할 수 있습니다.

FaaS 도입의 주요 이점

FaaS 클라우드 기술을 도입하면 개발자와 비즈니스에 여러 가지 이점이 있습니다.

즉각적인 자동 확장

수동으로 아무것도 구성할 필요 없이 애플리케이션이 한 명의 사용자부터 수천 명의 사용자에 이르기까지 트래픽의 급격한 증가를 처리할 수 있습니다.

우수한 비용 관리(사용한 만큼만 지불)

코드가 실행될 때만 비용을 지불하므로 유휴 서버에 대한 비용을 지불하는 것과 비교해 비용을 크게 절감할 수 있습니다.

개발자 속도 향상

개발자는 서버 관리나 인프라 설정에 시간을 들이지 않고도 코드를 작성하고 빠르게 배포할 수 있습니다.

인프라 관리가 아닌 애플리케이션 코드에 집중

팀은 서버 패치나 운영체제 관리에 에너지를 쏟는 대신 고객을 위한 가치 창출에 집중할 수 있습니다.

고가용성 및 복원력

FaaS 플랫폼은 일반적으로 여러 영역에서 코드를 실행하므로 한 영역에 장애가 발생하더라도 애플리케이션이 계속 작동합니다.

일반적인 개발자 문제: '콜드 스타트'

개발자가 FaaS에서 가장 흔하게 겪는 문제 중 하나는 '콜드 스타트'입니다. 함수가 한동안 실행되지 않으면 클라우드 제공업체는 리소스를 절약하기 위해 환경을 가동 중지합니다. 다음에 이벤트가 해당 함수를 트리거하면 시스템이 환경을 설정하고 코드를 로드하는 동안 약간의 지연이 발생합니다. 콜드 스타트라고 하는 이 지연은 애플리케이션 속도를 저하시킬 수 있습니다.

콜드 스타트 줄이는 방법

애플리케이션에 즉각적인 응답이 필요한 경우 다음 단계를 사용하여 지연 시간을 최소화할 수 있습니다.

  1. 코드 크기 줄이기: 코드를 검토하고 엄격하게 필요한 경우가 아니면 큰 라이브러리나 종속 항목을 삭제합니다. 함수가 작을수록 더 빠르게 로드됩니다.
  2. 지연 로드 사용: 함수가 시작될 때 즉시 로드하는 대신 함수 로직 내에서 실제로 필요할 때만 무거운 변수나 연결을 로드하도록 코드를 구성합니다.
  3. 최소 인스턴스 구성: 대부분의 주요 클라우드 제공업체는 '최소 인스턴스' 수를 설정할 수 있도록 지원합니다. 이렇게 하면 항상 하나 이상의 함수 인스턴스가 웜 상태로 유지되고 즉시 실행될 수 있으므로 시작 지연이 발생하지 않습니다.
  4. 더 빠른 런타임 선택: Go 또는 Python과 같은 일부 프로그래밍 언어는 일반적으로 Java와 같은 다른 언어보다 빠르게 시작됩니다. 속도가 중요한 경우 지연 시간에 민감한 함수를 더 가벼운 언어로 작성하는 것이 좋습니다.

Google Cloud로 비즈니스 문제 해결

신규 고객에게는 Google Cloud에서 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.

FaaS 및 Cloud Run Functions

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와 서버리스 컴퓨팅에 대해 자세히 알아보려면 다음 리소스를 살펴보세요.

다음 단계 수행

$300의 무료 크레딧과 20여 개의 항상 무료 제품으로 Google Cloud에서 빌드하세요.

Google Cloud