서비스형 백엔드

**서비스형 백엔드**(Backend as a service, **BaaS**) 또는 **서비스형 모바일 백엔드**(Mobile Backend as a Service, **MBaaS**)는 웹 앱 및 모바일 앱 개발자에게 프론트엔드 애플리케이션에 대한 백엔드를 쉽게 구축할 수 있는 방법을 제공하는 서비스이다. 사용 가능한 기능에는 사용자 관리, 푸시 알림, 소셜 네트워킹 서비스와의 통합이 포함된다. 이러한 서비스는 맞춤형 소프트웨어 개발 키트(SDK)와 애플리케이션 프로그래밍 인터페이스(API)를 통해 제공된다. BaaS는 클라우드 컴퓨팅 분야에서 비교적 최근에 개발된 것으로, 대부분의 BaaS 스타트업은 2011년 이후에 시작되었다. 가장 인기 있는 서비스 제공업체로는 AWS 애플리파이(AWS Amplify)와 파이어베이스가 있다.

## 목적
웹 및 모바일 앱은 알림 서비스, 사회 연결망과의 통합, 클라우드 스토리지 등 백엔드에서 유사한 기능 세트를 필요로 한다. 이러한 각 서비스에는 개별적으로 앱에 통합되어야 하는 자체 애플리케이션 프로그래밍 인터페이스가 있으며, 이 과정은 앱 개발자에게 시간이 많이 소요되고 복잡할 수 있다. BaaS 제공자는 통합된 API와 SDK를 통해 애플리케이션의 프론트엔드와 다양한 클라우드 기반 백엔드 사이의 다리 역할을 한다.

백엔드 데이터를 관리하는 일관된 방법을 제공함으로써 개발자는 앱이 액세스해야 하는 각 서비스에 대해 자체 백엔드를 다시 개발할 필요가 없으며, 잠재적으로 시간과 비용을 절약할 수 있다.

서버리스 컴퓨팅, 서비스형 소프트웨어(SaaS), 서비스형 인프라스트럭처(IaaS), 서비스형 플랫폼(PaaS)과 같은 다른 클라우드 컴퓨팅 비즈니스 모델과 유사하지만, BaaS는 앱을 클라우드 서비스에 연결하는 통합된 수단을 제공함으로써 웹 및 모바일 앱 개발자의 클라우드 컴퓨팅 요구 사항을 특별히 해결한다는 점에서 이러한 다른 서비스와 구별된다.

## 기능
BaaS 제공자는 다양한 기능 세트와 백엔드 도구를 제공한다. 가장 일반적인 기능 중 일부는 다음과 같다.

* **[[데이터베이스]] 관리**. 대부분의 BaaS 솔루션은 애플리케이션을 위한 SQL 및 NoSQL 데이터베이스 관리 서비스를 제공한다. 개발자는 데이터베이스를 직접 배포하고 관리할 필요 없이 앱 데이터를 저장할 수 있다. BaaS는 일반적으로 프론트엔드가 데이터베이스와 상호 작용할 수 있도록 클라이언트 SDK, REST 및 GraphQL API를 제공한다.
* **파일 스토리지**. BaaS 제공자는 종종 미디어 파일, 사용자 업로드 및 기타 이진 데이터를 위한 스토리지 솔루션을 제공한다. 애플리케이션은 제공된 SDK 및 API를 통해 파일을 업로드, 다운로드 및 삭제할 수 있다.
* **인증 및 권한 부여**. 일부 BaaS는 개발자가 앱 사용자를 쉽게 관리할 수 있도록 인증 및 권한 부여 서비스를 제공한다. 여기에는 사용자 가입, 로그인, 비밀번호 재설정, OAuth를 통한 소셜 미디어 로그인 통합, 사용자 그룹 및 권한 관리 등이 포함된다.
* **알림 서비스**. 파이어베이스 및 AWS Amplify와 같은 일부 BaaS 제공자는 사용자에게 사용자 지정 이메일을 보내고 모바일 플랫폼에서 기본 알림을 푸시할 수 있는 알림 서비스를 가지고 있다. 이는 메시지, 알림 및 미리 알림을 보내야 하는 애플리케이션에 특히 유용하다.
* **클라우드 함수**. 일부 BaaS는 개발자가 서버리스 함수를 배포하고 실행할 수 있도록 허용한다. 함수는 일반적으로 상태 비저장이며 HTTP 요청, SDK 호출, 백그라운드 서버 이벤트 및 클라우드 예약 실행을 포함한 다양한 방법으로 트리거될 수 있다. 다양한 제공자는 다양한 언어에 대한 런타임 지원을 제공하며, 인기 있는 언어 중 일부는 자바스크립트/타입스크립트 (Node.js, Deno), 파이썬, 자바/코틀린이다. 클라우드 함수는 개발자가 앱을 위한 사용자 지정 기능을 작성할 수 있도록 허용하여 BaaS의 잠재력과 유연성을 확장하며, 기존 REST API 백엔드 프레임워크와 유사한 방식으로 작동한다.
* **사용량 분석**. 애플리케이션 사용량에 대한 분석 데이터는 종종 BaaS에 포함된다. 이를 통해 개발자는 사용자 행동을 모니터링하고 마케팅 전략 및 성능 최적화에 따라 결정을 내릴 수 있다.
* **UI 디자인**. AWS Amplify 및 Backendless와 같은 일부 BaaS 제공자는 개발자가 웹 및 모바일 앱의 프론트엔드 UI를 디자인하는 데 도움이 되는 사용자 인터페이스 디자인 도구를 제공한다. 이는 소규모 팀과 개별 개발자에게 유용할 수 있지만, UI 디자인 지원은 백엔드 인프라의 범위를 넘어서기 때문에 BaaS에서 일반적이지 않을 수 있다.

* **실시간**. BaaS 플랫폼의 실시간 기능은 모든 클라이언트에서 데이터 업데이트 및 동기화가 즉시 발생하여 변경 사항이 사용자에게 즉시 보이도록 보장한다. 이는 웹소켓과 같은 기술을 사용하여 지속적인 서버-클라이언트 연결을 유지하는 라이브 채팅 및 협업 도구와 같은 애플리케이션에 중요하다.

## 서비스 제공자
BaaS 제공자는 광범위한 초점을 가지고 있으며, 다양한 기술 스택을 가진 여러 플랫폼에서 앱 개발에 작동하는 SDK 및 애플리케이션 프로그래밍 인터페이스를 제공한다. 예를 들어, 웹 앱용 자바스크립트, 플러터, 자바/코틀린 (안드로이드 앱용), 스위프트/오브젝티브-C (iOS/MacOS/WatchOS/TvOS 앱용), 닷넷 (윈도우용) 등이 있다. BaaS 제공자도 다양한 유형으로 제공되어 다양한 요구를 가진 개발자에게 적합하다.

### 클라우드 기반 BaaS
대부분의 BaaS 제공자는 백엔드 플랫폼을 자체 클라우드 서버에 호스팅한다. 또한 플랫폼의 인프라, 보안 및 확장성을 관리한다. 개발자는 웹 인터페이스 또는 제공된 API를 통해 백엔드 서비스에 액세스할 수 있다. 클라우드 기반 BaaS의 예로는 파이어베이스 (구글 클라우드 플랫폼에 호스팅), AWS Amplify (아마존 웹 서비스에 호스팅), 마이크로소프트 애저 모바일 앱 (마이크로소프트 애저에 호스팅) 등이 있다.

### 자체 호스팅 BaaS
자체 호스팅 BaaS는 개발자가 자체 서버에 백엔드를 호스팅할 수 있도록 하여, 종종 마이그레이션이 더 어려운 클라우드 기반 BaaS에 비해 더 많은 유연성과 사용자 지정 가능성을 제공한다. 그러나 개발자는 또한 서버의 인프라, 보안 및 확장성을 관리해야 한다.

### 모바일 BaaS
서비스형 모바일 백엔드 (MBaaS)는 모바일 시스템에 배포된 애플리케이션을 위한 BaaS의 한 유형이다. 일부 참고 자료에서는 MBaaS를 BaaS와 상호 교환적으로 사용하지만, BaaS는 웹 앱 및 데스크톱 앱과 같은 더 넓은 범위의 지원을 가질 수 있다.

## 비즈니스 모델
BaaS 제공자는 다양한 방식으로 서비스에서 수익을 창출하며, 종종 프리미엄 모델을 사용한다. 이 모델에서 클라이언트는 매월 특정 수의 무료 활성 사용자 또는 API 호출을 받고, 이 한도를 초과하는 사용자 또는 호출에 대해 요금을 지불한다. 또는 클라이언트는 매월 더 많은 호출 또는 활성 사용자를 허용하는 패키지에 대해 정해진 요금을 지불할 수 있다. 가격 책정을 더 예측 가능하게 만드는 고정 요금제도 있다. 일부 제공업체는 무료 플랜 내에서 무제한 API 호출을 제공한다. 많은 BaaS 제공업체에서 사용되는 또 다른 비즈니스 모델은 PAYG(pay as you go)인데, 이는 개발자의 데이터베이스, 스토리지, 대역폭, 함수 호출, 사용자 수 등의 사용량에 따라 유연한 비용이 책정된다.

## 같이 보기
* 서비스형
* 로 코드 개발 플랫폼
* 고속 응용 프로그램 개발

## 각주

분류:모바일 소프트웨어 개발
분류:서비스형
분류:웹 개발
분류:웹 애플리케이션
분류:응용 소프트웨어
분류:클라우드 애플리케이션
분류:소프트웨어 산업