# 유명 BaaS 정리 및 비교

TIP

구 블로그에 남겨둔 기록을 옮겨왔다.

# 서두

개발자인 아는 지인분에게 Crashlytics라는 서비스를 듣게 되었다. 모바일 앱에서 크래시 리포트를 저장해주고 통계내주고 보여주는 서비스였다. 특히 안드로이드는 기기가 다양해서 많은 예외들이 발생할텐데, 리포트를 수집해주는 서비스가 있다니 참 유용한 서비스라고 생각된다.

나도 한때 10여년간 웹게임 운영하면서 사용자들의 에러 로그를 수집할 필요성이 상당했었다. 그래서 자체적으로 클라이언트 로그를 저장했다가 가끔 서버로 수집해서 보여주는 기능도 만들고 했었는데... 이젠 이런 BaaS 들이 많이 생겨나서 정말 개발자는 운영적인 측면의 부담을 많이 덜게 된 것 같다.

각설하고, Crashlytics라는 서비스가 알고보니 트위터가 제공하는 Fabric이라는 서비스의 일부분이더라. 같은 개념으로 이미 많은 서비스들이 생기고 없어졌더군. Kinvey(?)라는 서비스도 있는것 같고, 페이스북은 Parse라는 서비스를 인수했다가 내년 초에 종료한다고 들었다. 아마도 아직은 투자 대비 수익이 나기 어려운 시기이기 때문으로 보인다.

아, BaaS란 Backend as a Service이다. IaaS나 PaaS가 전통적인 서버 인프라를 대체 하는 수준이었다면 BaaS, FaaS는 조금 더 나아가서 서버 운영 자체를 대행해주는 수준까지 발전한 것이다. 인디 앱 개발자들은 웬만한 서버 기능들은 실제 서버구성 없이도 데모나 알파테스트가 가능한 서비스를 만들 수 있을 것이다. 역설적으로 서버 개발자들은 중소기업의 수요는 줄어들겠지만, 대기업 위주의 플랫폼 개발쪽 수요가 많이 늘어날것 같다. 아마도 실력에 따라 부익부 빈익빈 현상이 더 심화되지 않을까 싶다. 마치 구멍가게 상인들이 프랜차이즈 상점으로 바뀌는 것처럼, 앱에서 발생하는 수익의 표면적인 일정 할당량만 개발자가 가져가고, 숨겨진 수익의 대부분은 대기업이 가져가게 될 것이다. XaaS의 대략적 개념은 아래 글을 참고.

http://blog.naver.com/doonibest/220861308003

현재 가장 유명한 BaaS는 내가 찾아본 바로는, 트위터의 Fabric, 야후의 Flurry(?), 구글의 Firebase, 아마존의 MobileHub등이 있다. 야후는 제외하기로 하고, 올 여름 Google I/O에서 Firebase라는게 나왔다더라라는 얘기만 들었었는데 BaaS인줄은 이제야 알게 되었다. 이번 글에서는 각 서비스들의 기능들과 과금 정책을 정리해볼까 한다.

# 트위터의 Fabric

https://fabric.io

# 주요 기능

  • Crashlytics: 크래시 리포트 기능. Android, IOS. 무료. 단순히 몇줄 코드에 넣어주는 것만으로도 크래시 발생시에 서버로 정보를 전송하여, 통계 및 실제 크래시 정보를 조회할 수 있다.
  • Answers: 사용자 통계 기능. Android, IOS, OSX, tvOS. 무료. 역시 단순 몇줄의 코드만으로 사용자의 사용정보를 통계화 할 수 있다.
  • Twitter: 트위터 API. Android, IOS. 무료.
  • Digits: 전화번호 인증 기능. Android, IOS. 무료. 전화번호 없는 기기는? 심카드 바꿨을 경우는? 이런 내용은 더 확인이 필요.
  • MoPub: 광고 플랫폼. Android, IOS. 무료.
  • Amazon Cognito Sync: 사용자 데이터용 DB. Android, IOS. 무/유료. AWS의 cognito 서비스를 래핑한것 같다. 패브릭이 제공하는건 딱히 없는데 자기네 것인 마냥 해놓은게 좀 이상하다. 결국 AWS의 인증키를 넣어야하고 지불도 AWS에 하는건데...
  • Appsee: UX 통계 기능. Android, IOS. 유료. Answers랑 비슷한데 실제 사용자가 어느 화면 어느 터치를 했는지까지 기록하는것 같다.
  • Branch: 앱 사용 추적 기능. Android, IOS. 무료. 개념을 정확히 이해한건진 모르겠지만 설명해보자면, 제공된 API를 사용해서 콘텐츠를 다른 앱으로 전달(주로 사진 공유버튼 같은거?)할 수 있고, 그 흐름을 통계로 제공해줌. 예를 들어, 앱이 어떤 경로를 통해서 기동된건지(아이콘 터치해서 실행한건지, 다른 앱에서 공유기능으로 타고 온건지 등)를 알 수 있게 해줌.
  • GameAnalytics: 사용자 통계 기능. Android, IOS, Unity, Unreal, Xamarin, HTTP. 무료. Answers와 유사한데 지원하는 플랫폼이 다양하다. REST까지 있으므로 뭐 그냥 오픈 플랫폼이라고 봐도 될듯.
  • Mapbox: 지도 관련 기능. Android, IOS, Web. 무/유료. 맵뷰를 제공하며, 맵을 커스터마이징 할 수 있고, 관련 통계까지 제공해주는 서비스. 지도 관련 통계까지 수집해주니 관련 서비스 만들때는 유용할 것 같다.
  • Nuance: 음성 인식, 음성 조합 기능. Android, IOS, HTTP. 무/유료. 많이 들어본 '뉘앙스'사. 음성을 문장으로 변환, 반대로 문장을 음성파일로 변환해준다. 목록을 보니 한국어도 있다. 꽤 많은 언어가 지원된다. 다만 인공지능이라면 문맥 파악 기능이 필요할텐데 그건 다루지 않는것 같다. 안드로이드 기본 TTS, STT랑 차이가 많이 나는건지는 비교해봐야 알듯. 그래도 실시간 네트워크 사용하니까 더 낫긴 하겠지?
  • Optimizely: 실시간 변수 기능. 클라이언트, 서버 대부분 플랫폼. 유료. 이게 말하기 나름인데 Cognito랑도 유사하다. 쉽게 말해서 설정값 같은 변수를 클라이언트에 넣는게 아니라 서버쪽에서 제공하고 조절하는 기능이다. 정보가 서버측에 저장되고 서버쪽에서 제어가 가능하다는 점은 같지만 Cognito는 사용자 측면에서 데이터를 저장하는 방식을 설명하고 있고, Optimizely는 서비스 제공자 측면이다. A/B 테스팅이랄지 사용자 분석등을 설명하고 있다. 단점은 무료 서비스가 없다는 것. 까놓고 말해서 사이트에서 포장을 멋지게 해놓은 것 뿐이라고 느껴진다.
  • PubNub: 메시지 브로커. 클라이언트, 서버 대부분 플랫폼. 무/유료. MQ 브로커라고 보면 된다. RabbitMQ, Kafka, AWS SQS, CloudMQTT 모두 비슷한 기능이다. 1:1, 1:n, n:n 통신 중개 서버라고 보면 됨.
  • Stripe: 결제 기능. Android, IOS, 대부분 플랫폼. 유료. 3%정도 수수료를 떼간다.

# 구글의 Firebase

https://firebase.google.com

# 주요 기능

  • Analytics: 통계 기능. Android, IOS. 무료. 사용자 이벤트나 사용자 정보등의 통계를 수집하고 보여준다. 기존 구글 아날리틱스의 변형으로 보인다.
  • FCM(Firebase Cloud Messaging): 푸시와 메시징 기능. Android, IOS, HTTP, XMPP. 무료. 기존 푸시인 GCM이다. 메시지 브로커처럼도 사용이 가능할 것이다. XMPP 프로토콜을 지원하기 때문에. 베타때 써보고 안써봐서 좀 더 살펴봐야겠다.
  • Auth: 각종 인증 기능. Android. IOS. HTTP. 무료. 패브릭과 다르게 전화번호 인증은 없지만 이메일 인증, 구글, 페이스북, 트위터, 깃헙 인증 연동, 써드파티 연동도 지원한다.
  • Database: 실시간 DB. Android, IOS, HTTP. 무/유료. Cognito와 유사하다. 다만 네트워크 상태에 관계없이 뒷단에서 동기화하고, 앱에서는 로컬 데이터 사용하듯 사용하면 된다.
  • Storage: 파일 저장소. Android, IOS, HTTP. 무/유료. 설명이 불필요 ㅎ. AWS S3와 동일하다고 보면 된다.
  • Hosting: 정적 웹 호스팅 기능. HTTP. 무/유료. 정적 웹 리소스만 호스팅 가능하다. CDN을 통해 글로벌하게 빠른 제공이 가능함. 요즘같은 Ajax 환경에선 쓸모가 많음.
  • Remote-Config: 원격 설정 기능. Android, IOS. 무료. Cognito와 유사하다. 구글 설명으로는 설정값은 Remote-Config를 사용하고, 상태나 메세지같은 데이터류를 데이타베이스로 사용하라고 써있다.
  • Test-Lab: 가상 테스팅 환경. Android. 유료. 가상의 기기 환경을 제공하여 테스트를 만들어두면 여러가지 가상의 기기에서 테스트가 가능하다. 테스트를 작성하지 않아도 자동으로 어느정도 테스트를 생성해준다고 한다.
  • Crash: 크래시 리포트 기능. Android, IOS. 무료. Crashlytics와 유사한 기능. 베타를 벗어난게 겨우 한달전이기 때문에 Crashlytics보다는 기능이 부족하다고 한다. 다만 구글꺼라서 크래시 정보는 더 세밀하다고. 조만간 비슷한 수준의 기능으로 무장하지 않을까 예상됨.
  • App-Indexing: 검색 연동 기능. Android, IOS. 무료. 구글에서 검색시에 바로 앱으로 이동하거나 설치를 유도할 수 있다.
  • Dynamic-Lnks: 앱 연동 기능. Android, IOS. 무료. 패브릭의 Branch와 유사한 기능이다.
  • Invites: 소셜 기능. Android, IOS. 무료. 이메일이나 SNS로 다른 사람을 초대할 수 있도록 해준다.
  • Adwords: 광고 기능. Android, IOS. 유료. 다른 광고를 내 앱에 실어서 돈을 버는게 아니라 거꾸로 내 광고를 만들어서 검색창에 띄워주는 기능. 근데 국내 시장은 대부분 네이버이기 때문에 구글광고를 싣는 경우는 글로벌 시장을 노릴때일 것이다.
  • AdMob: 광고 플랫폼. Android, IOS. 무료. 설명이 필요한가? ㅎ

# 아마존의 AWS MobileHub

https://aws.amazon.com

아마존은 있을건 다 있고, 없을건 다 없는 화개장터 같은 곳이다. 통계라면 Pinpoint, 인증과 사용자 데이터는 Cognito, 메시징은 SQS, SNS, Pinpoint, 데이터베이스나 스토리지는 너무 유명해서... 다만 무료가 거의 없고 초기비용부터 모두 유료이며 단가가 꽤 비싼편이다. 패브릭이나 파이어베이스에 없는 경우만 AWS에서 찾아 쓰는걸로. 결론을 내보자면, 패브릭은 그저 각자 흩어져있는 모바일용 BaaS들을 묶어놓은 이름일 뿐이다. 다 각자의 사업자와 사이트가 있고, 파이어베이스는 구글이라는 통제하에 한 화면으로 다 제어가 가능하고, 그건 AWS도 마찬가지. 완성도는 패브릭이 제일 높은것 같고, 파이어베이스도 무섭게 쫒아가는것으로 보인다. 구글은 역시 안드로이드 소유자 답게 푸시나 메시징쪽이 가장 연동하기 편하고 GCP(Google Cloud Platform)와 연동이 수월한 장점이 있다. 아마존은 다양하지만 완성도가 좀 떨어지고 가격은 비싼편이다.

# 총평

  • 가성비: Fabric > Firebase > MobileHub
  • 완성도: Fabric > Firebase = MobileHub
  • 개발편의: Fabric = Firebase = MobileHub
  • 관리: Firebase = MobileHub > Fabric

앞선 내용들은 개인 정리차원에서 다룬 것들이므로 참고 정보로만 활용하시길 바랍니다.

최종 수정: 2021-1-7 15:25:10