FaaS, BaaS

2 분 소요

서버리스 컴퓨팅에 대해 정리하다가 FaaSBaaS에 대한 언급이 잦아 정리해보려고 한다.

Function as a Service

AWS Lambda가 대표적인 FaaS의 예시다. 아래는 AWS Lambda의 공식 홈페이지 설명을 가져와봤다.

AWS Lambda lets you run code without provisioning or managing servers. … With Lambda, you can run code for virtually any type of application or backend service ) - all with zero administration. Just upload your code and Lambda takes care of everything required to run and scale your code with high availability. You can set up your code to automatically trigger from other AWS services or call it directly from any web or mobile app.

  1. FaaS 근본적으로는 long-lived 서버 어플리케이션 혹은 서버 시스템을 관리 없이 실행 가능한 백엔드 코드이다. long-lived 서버는 어플리케이션 컨테이너나 PaaS와 같은 모던 아키텍쳐 트렌드와 비교할 때 중요한 차이점이다.

  2. FaaS는 특정 프레임워크나 라이브러리의 코딩을 필요로 하지 않는다. 예를 들어 AWS Lambda 함수는 Javascript, Python, Go, 모든 JVM 언어(Java, Clojure, Scala 등) 또는 에 "first class" 를 구현할 수 있다. 심지어 람다 함수는 deployment artifact와 함께 제공되는 번들로 다른 프로세스를 실행할 수 있다. 즉, 모든 언어를 사용할 수 있는 것이다.
    FaaS 함수는 특히 상태 및 실행 시간에 관항 경우 구조적인 제약이 있다.

  3. 배포시에는 기존 시스템 구조와 매우 다른데, 구동시킬 서버 어플리케이션이 존재하지 않기 때문이다. FaaS 환경에서는 코드를 FaaS 제공자에게 업로드하고, 제공자가 리소스 프로비저닝, VM 인스턴스화, 프로세스 관리 등에 필요한 모든 작업을 수행한다.

  4. 수평 스케일링은 완전히 자동적이고 탄력적이며, 제공자에 의해 관리된다. 만약 시스템이 100개의 리퀘스트를 병렬처리 해야 한다하자 어떤 추가적인 작업없이 해당 요청을 처리할 수 있다. compute container는 일시적으로 생성되는 함수이며, FaaS 제공자가 요구되는 시간에 생성하고 삭제한다. 가장 중요한 것은 FaaS를 통해 벤더가 모든 기본 리소스 프로비저닝 및 할당을 처리한다는 점이다. 즉, 사용자가 클러스터나 VM을 관리할 필요가 전혀 없다.

  5. FaaS내 함수는 제공자에게 정의된 전형적인 이벤트 타입의 함수다. 아마존 S3업데이트, Scheduled tasks, messages bus 등이 이에 대한 예시다.

  6. 대부분의 제공자는 인바운드 HTTP 리퀘스트에 대한 응답으로 함수가 트리거 되는 것을 허용한다. AWS에서는 API 게이트웨이를 사용하여 이를 가능하게 한다. 함수는 플랫폼에서 제공된 API를 통해 직접적으로 포함될 수 있지만, 이는 자주 사용되지는 않는다.

Mobile Backend as a Service

  1. BaaS로도 많이 알려진 이름이다. 웹앱과 모바일앱 개발자에게 어플리케이션에서 노출되는 백엔드 클라우드 스토리지 및 API에 어플리케이션을 연결하는 동시에 사용자 관리, 푸시 알림, 소셜 네트워크 서비스의 통합 등의 기능을 제공하는 모델이다. 이는 커스텀 SDKsAPIs를 통해 제공될 수 있다.

  2. 웹과 모바일 앱은 운영을 위해 알림 서비스, 소셜네트워크 통합, 클라우드 저장소 등 백엔드의 비슷한 기능을 필요로한다. 각각의 앱과 상호작용 하기 위한 API를 가지며 개발자에게 많은 시간을 소모하게 한다. BaaS 제공자는 프론트엔드와 클라우드 베이스의 백엔드를 API와 SDK를 통해 제공한다.

  3. 백엔드 데이터를 일관성 있게 관리할 수 있는 방법을 제공한다는 것은 개발자가 앱에서 접근해야할 각 서비스에 대해 재개발 하지 않아도 되는 것을 의미한다. 이는 시간과 비용을 모두 절약할 수 있다.

  4. 클라우드 컴퓨팅 비지니스 모델인 SaaS, IaaS, PaaS와 비슷해 보이지만, BaaS는 자사 앱을 클라우드 서비스에 연결하는 통일된 수단을 제공함으로써 웹 및 모바일 앱 개발자의 클라우드 컴퓨팅 요구를 구체적으로 해결한다는 차별점이 존재한다.

Refernce
  • https://martinfowler.com/articles/serverless.html#unpacking-faas
  • https://en.wikipedia.org/wiki/Mobile_backend_as_a_service