검수요청.png검수요청.png

FaaS

위키원
이동: 둘러보기, 검색

FaaS(Function-as-a-Service)는 서비스형 함수라고도 하며 개발자가 자체 인프라를 유지관리할 필요 없이 애플리케이션 패키지를 기능으로 빌드, 실행, 관리할 수 있게 해주는 일종의 클라우드 컴퓨팅 서비스이다. 이 모델을 따라 애플리케이션을 빌드하는 일은 서버리스 구조를 수행하는 한 방법이며 마이크로서비스 애플리케이션을 빌드할 때 일반적으로 사용된다.

FaaS는 PiCloud 등 2010년 경 다양한 스타트업 기업들에 의해 처음 제공되었다.

AWS 람다는 대형 퍼블릭 클라우드 벤더가 제공하는 최초의 FaaS 기능이었으며 이에 이어 네이버클라우드플랫폼의 Cloud Functions, 구글 클라우드 펑션, 마이크로소프트 애저 펑션, IBM/아파치의 오픈휘스크 (오픈 소스, 2016년), 오라클 클라우드 Fn (오픈 소스, 2017년)가 잇따랐다.

개요[편집]

FaaS는 사용자가 지정한 이벤트에 따라 동작하는 함수로 사용자 애플리케이션을 실행하는 클라우드 서비스이다.

서비스형 함수(FaaS) 플랫폼에서는 애플리케이션 개발에 필요한 프로그램, 네트워크, 스토리지 등 기반 환경을 모두 서비스하기 때문에, 개발자는 컴퓨터 서버(가상서버, 웹서버 등)를 따로 구축하거나 운영 체계(OS), 메모리 등 자원(resource)을 추가·관리할 필요가 없다. 그리고 소스 코드를 함수(function) 단위로 제공하여 개발자는 필요한 함수를 찾아 사용하면 된다.

즉, 개발자는 FaaS에 접속하여 서비스되는 함수를 이용하여 프로그램 코드만 작성하면 된다. 이에 FaaS를 서버가 없는 컴퓨팅(serverless computing)이라고도 한다.

FaaS 이용료는 플랫폼상에서만 제공되는 함수(function) 구동(호출) 횟수 또는 시간에 따라 청구된다.

아마존 AWS(Amazon Web Services) 람다(Lambda)에서 처음 FaaS를 제공하였고, 구글 클라우드 펑션(Google Cloud functions), 마이크로소프트 애저 펑션(MicrosoftAzure Functions) 등이 FaaS를 제공한다.

  • IBM Cloud Functions
  • Amazon의 AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions(오픈소스)
  • OpenFaaS(오픈소스)

사용 사례[편집]

온디맨드 기능은 FaaS 환경에 매우 적합한 전반적인 사용 모델이다. 온디맨드 설정에서는 기능이 간헐적으로 신속하게 켜지고 꺼진다. FaaS 사용자는 기능이 활성화되어 있는 시간에 대해서만 비용을 지불하므로 온디맨드 모델은 FaaS를 경제적으로 사용하는 사례이다.

대화형 웹 사이트는 특히 백엔드 실행에서 온디맨드 사용 모델의 예이다. 이 경우 FaaS는 최종 사용자가 웹사이트를 클릭하고 간단한 이벤트를 트리거 할 때만 활성화된다. 온라인 미디어 출판사 및 전자 상거래 사이트는 사용자가 예측할 수 없는 일정에 따라 사이트에 액세스하므로 유연성을 위해 FaaS 모델을 활용한다. 예를 들어, 스트리밍 미디어 제공 회사는 사용자 메뉴 및 추천 영상을 CSP의 FaaS 플랜에 두고 기본 사이트를 관리할 수 있다.

데이터 처리 및 검증 작업은 FaaS 모델에 성공적으로 적용될 수 있다. 한 가지 사용 사례를 보면 분석을 위해 간헐적으로 센서 데이터를 클라우드에 보내는 사물 인터넷(IoT) 설치가 이에 해당된다.

개발 워크로드가 간헐적이라면 소프트웨어 개발을 FaaS 설정에서 배포할 수도 있다.

소프트웨어 배포는 마이크로서비스 제공을 위한 FaaS 모델에 적합할 수 있습니다. 서비스로서의 소프트웨어(SaaS) 제공업체 역시 새로운 사용자가 빠르게 추가되고 소프트웨어가 불규칙한 온&오프 반복 패턴으로 사용되는 스타트업 단계에서 FaaS 기반으로 자체 운영을 실행할 수도 있습니다.

PaaS 애플리케이션 호스팅 서비스와의 비교[편집]

PaaS(Platform as a Service) 애플리케이션 호스팅 서비스는 개발자로부터 "서버"를 숨기기도 한다는 점에서 FaaS와 유사하다. 그러나 이러한 호스팅 서비스는 일반적으로 외부 요청을 수신하는 하나 이상의 서버 프로세스를 항상 실행한다. 확장은 개발자가 일반적으로 직접 비용을 청구하는 더 많은 서버 프로세스를 부팅함으로써 이루어 진다. 결과적으로, 확장성은 개발자가 볼 수 있는 상태를 유지한다.

반면에, FaaS는 지속적으로 실행되는 서버 프로세스를 필요로 하지 않는다. 초기 요청은 애플리케이션 호스팅 플랫폼보다 처리하는 데 시간이 더 오래 걸릴 수 있지만(최대 몇 초[6]), 캐싱을 통해 후속 요청을 밀리초 이내에 처리할 수 있다. 개발자는 기능 실행 시간(프로세스 유휴 시간 없음)에 대해서만 비용을 지불하기 때문에 더 높은 확장성으로 낮은 비용(지연 비용)을 달성할 수 있다.

FaaS와 서버리스[편집]

FaaS는 서버리스(serverless) 컴퓨팅을 구현하는 방식으로, 개발자가 비즈니스 로직을 작성하면 플랫폼이 관리를 전담하는 Linux 컨테이너에서 이를 실행한다.

이 모델은 일반적으로 클라우드 컴퓨팅 서비스를 사용하는 클라우드 컴퓨팅 플랫폼이지만 확장을 통해 온프레미스 및 하이브리드 배포까지도 포괄하고 있다.

서버리스는 개발자의 서버 및 리소스 할당 관리 또는 프로비저닝과 같은 인프라 문제를 추상화하고 이를 플랫폼(예: Red Hat® OpenShift®)에 적용하므로 개발자는 코드 작성과 비즈니스 가치 제공에 집중할 수 있다.

기능이란 운영 체제에서 비즈니스 로직을 실행하는 소프트웨어 요소를 말한다. 애플리케이션은 여러 기능으로 구성될 수 있다.

FaaS 모델 사용은 서버리스 아키텍처로 애플리케이션을 구축하는 한 가지 방식이지만 서버리스 패러다임의 인기가 높아지면서 개발자들은 서버리스 마이크로서비스와 스테리트리스 컨테이너 구축을 지원하는 솔루션을 찾고 있다.

FaaS와 서버리스의 차이

원래 FaaS와 서버리스는 거의 같은 의미로 사용되었으나, 서버리스는 FaaS에 인코딩된 맞춤형 비즈니스 로직과 함께 공통 서비스를 광범위하게 사용하는 대규모 아키텍처 패턴 및 프랙티스를 의미하는 것으로 확장되었다.

마이크로서비스는 물론 전통적인 애플리케이션도 컨테이너화되어 동적 확장 및 상태 관리 요건을 준수하는 한 서버리스를 사용할 수 있다.

"서버리스"라는 용어는 데이터베이스와 메시징 시스템과 같은 관리형 서비스를 가리키는 데도 사용되며, 클라우드 제공업체 또는 타사가 해당 시스템을 관리하므로 개발자나 관리자는 이를 운영할 필요가 없다.

주로 이벤트 기반 아키텍처를 통해 연결된 일반적인 백엔드 서비스(예: 데이터베이스, 메시징 및 인증)와 FaaS가 결합되면서 서버리스 개발자는 최적의 이점을 얻을 수 있게 되었다.

작동 방식[편집]

FaaS는 개발자에게 서버를 관리할 필요 없이 이벤트에 대응하여 웹 애플리케이션을 실행하도록 지원하는 추상화 기능을 제공한다. 예를 들어, 파일을 업로드하면 다양한 형식으로 파일을 트랜스코딩하는 사용자 지정 코드를 트리거할 수 있다.

FaaS 인프라는 주로 이벤트 기반 실행 모델을 통해 서비스 제공업체가 온디맨드로 미터링하는 것이 일반적이므로, 필요한 경우 사용 가능하지만 서비스로서의 플랫폼(Platform-as-a-service, PaaS)처럼 서버 프로세스를 백그라운드에서 계속 실행할 필요는 없다.

현대적인 PaaS 솔루션은 개발자가 애플리케이션을 배포하는 데 사용할 수 있는 일반적인 워크플로우의 일부로 서버리스 기능을 제공하여, PaaS와 FaaS 간 구분이 모호해졌다.

실제로 전체 애플리케이션은 기능, 마이크로서비스, 지속 실행 서비스 같은 여러 솔루션이 혼합된 형태로 구성된다.

동영상[편집]

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 FaaS 문서는 자동차 전장에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.