BaaS(Backend as a Service)의 제공하는 미래적 가치

 On 07 Nov, 2012

BaaS(Backend as a Service)이란 무엇인가?

클라우드 환경의 접속 장치로 PC보다는 iPhone이나 Android 같은 모바일 디바이스가 보편화되고 있다. 앞으로의 클라우드 애플 리케이션의 주역은 모바일 디바이스에서 움직임이 일어날 가능성이 크다는 의미도 포함하고 있는 것이다. 그래서 작은 틈새 시장중에 하나인 모바일 애플 리케이션에 특화된 클라우드 형태로 BaaS(Backend as a Service)라는 서비스가 등장하고 있다. 백엔드 플랫폼을 아웃소싱한다는 생각이 현실화 되고 있는 듯 하다.

‘BaaS엔 어떤 기능들이 있나?

BaaS에 포함되는 기능들은 일반적으로 모바일 응용 프로그램의 백 엔드로 자주 요구되는 데이터 저장소, 푸시, 사용자 관리/억세스 제어, 자체 인증/소셜 인증 등 소셜 연계, Location 연계, 분석 및 통계 정보, 빌링 등을 포함하고 있다.

BaaS의 목표는 이런 기능들을 모바일 응용 프로그램에서 API를 써 호출하는 서버 측 코드를 작성하지 않고도 클라우드와 연동해 모바일 응용 프로그램을 효율적으로 개발할 수 있는 환경을 제공하는 것이다.

모바일 기반의 클라우드 서비스 개발자들이 연동해서 사용하고 픈 서비스들의 인기도를 나타낸 위 그림을 보면 위치, 노티, 위치 관련 서비스들이 많은 것으로 보아 BaaS의 역할이 중요해 보인다.

속속 등장하는 BaaS와 가속화 되는 BaaS  시장

‘Appcelerator Acquires Cocoafish’ 기사를 통해 BasS 중에 하나인 Cocoafish가 Titanium Mobile을 운영하는Appcelerator에 인수 되었고, Parse도 공개 베타 종료하고 정식 서비스 오픈한다고 발표했다.

Baas의 움직임이 가속화되어 가는 듯 하다. 아래는 Mobile BaaS Ecosystem Map을 나타낸다.

위 BaaS 에코시스템 맵에서 보듯이 많은 BaaS 플랫폼들이 속속 등장하고 있다. Cocoafish, Parse이외에도 StackMob, Kinvey, Buddy, CloudMine, iCloud, RhoMobile, FeedHenry Astrum Space,CloudyRec, Applicasa, QuickBlox, mobDB, Netmera 등…

일 예로 Parse는 1개의 데이터 저장소, 푸시 통신, 사용자 관리, Twitter 나 Facebook 등 소셜 연계, 위치 서비스와 연계 기능 등을 제공한다. iOS 용과 Android의 SDK를 제공하며, REST API도 제공하고 있다. 요금제 는 월 100만의 API 호출, 100만 푸시, 1GB 이내의 파일 저장 등이라면 무료, 1500 만 회 이내로, 500만 푸시, 10GB 이내의 파일 저장하면 월간 199 달러 지불하게 되어 있다.

apigee.com 처럼 API 종류도 많이 확보하면 더 좋은 무기가 될 듯 하다. 세상은 자신의 자산 확보의 가치보다는 연결의 가치가 더 빛을 발할 수 있는 시대가 되었구나.

BaaS가 제공하는 가치

SaaS, IaaS, PaaS 등의 “as a service”로 끝나는 용어가 IT 필드의 사람들에게는 그다지 낯선 단어는 아닙니다. 하지만 ‘그게 뭔가요?’ 물어보면 어떻게 대답해야 할 지 당황스럽기도 한 단어이기도 합니다. 제 나름의 이해로 정리해보자면 다음과 같습니다.

SaaS (software as a service) 서비스로 소프트웨어를 ‘제공’한다는 의미는, 우리 웹 어플리케이션을 브라우저로 접속해서 소프트웨어를 사용하도록 서비스합니다는 것이죠. on demand software, asp 같은 것들이죠.IaaS (infra as a service) 인프라는 IT인프라로 서버, 스토리지, 네트워크 등 ‘물리적’인 자원들을 서비스 형태로 제공하니, 그걸 직접 사서 “소유하지말고 이용하라”는 이야기네요. 아마존 AWS나 KT uCloudBiz 같은 게 이런 콘셉이 되겠습니다. PaaS (platform as a service) 여기서 말하는 플랫폼은 Java VM이나 Ruby VM 같은 특정 소프트웨어 동작하기 위한 실행환경(runtime)을 가리키는 것 같네요. 소프트웨어를 개발할 때 소스코드의 저장소만 건내주면 서비스화 된 플랫폼이 그걸 가져가서 컴파일하고 빌드해서 실행까지 해주겠다는 의미로 보입니다. 예를 들면 구글의 app engine이나 heroku 같은 서비스가 이런 류인 것 같습니다. 간단할 뿐만 아니라 자의적인 개념 정리라서 수긍가지 않는 분들도 있겠습니다. 댓글로 의견 주시면 공부에 도움이 되겠습니다.

오늘 이야기 하려는 주제는 위 세가지 단어와 생김새가 비슷한 BaaS입니다. Backend as a service라고 풀어 쓰며 backend라는 것은 frontend라는 말과 대칭되는 개념입니다. 그럼 front와 back 어떻게 구분될까요? 그건 서비스를 제공받는 사용자입장에서 눈에 보여지는 면이 frontend이고 그 내부에 감춰진 것이 backend라고 보면 될 것 같아요. 예로 쉽게 전달하자면, 웹사이트를 생각해보면, html과 javascript, image같은 것으로 유저들의 웹브라우저에 보여지는 부분이 frontend이고 눈에 보이지 않는 웹서버, 어플리케이션서버, 데이터베이스 등은 backend 겠지요.

여기까지 읽으신 분들은 아마 “클라이언트-서버”라는 개념에서 클라이언트가 frontend고 서버가 backend라고 봐도 되는지 궁금하실 겁니다. 맞습니다. 그렇게 보면 될 것 같습니다. iOS나 android 앱을 개발한다고 칩시다. 그럼 이 단말에 들어가는 앱은 frontend 기술로 만들어 집니다. 하지만 iOS에서 로그인하거나 사진을 업로드하면 그걸 받아서 처리해주는 부분이 바로 backend 영역이고 java나 c#, php, python, ruby등 다양한 개발 환경이 존재합니다.

‘그래, 그럼 backend는 좀 알겠다. 눈에 안보이는 서버 쪽 프로그램들이란 말이지?’ 네 맞습니다. 이런 backend 프로그램을 ‘서비스’로 제공하겠다는 것이 바로 BaaS입니다. backend를 ‘소유’하지 말고 ‘사용’하라는 메시지가 담겨있는 것이죠. 소유하지 말고 사용하라는 말은 as a service 사업모델의 기저에 깔려있는 철학같은 것입니다. 이 말은 소유의 종말로 번역된 Jeremy Rifkin의 저서 ‘The Age of Access’의 주제와 맥을 같이 합니다. “서비스 제공자가 모두 준비해 두었으니 접속해서 사용하시면 됩니다.” 이게 BaaS사업자들이 돈벌기 위해 제공하는 ‘가치 제안’입니다.

그러면, 이런 backend 기능들이 뭐가 있는지 구체적으로 들어가 볼까합니다. 우리동네 착한 가게를 추천해주는 모바일 앱을 하나 만든다고 해봅시다. 그러면 만들어야 할 사용자 스토리를 생각해보면

사용자는 우리 동네에서 착한 가게 목록을 볼 수 있어야 한다.

 이런 사용자 스토리가 있다고 가정해보면, 단말에서 처리할 부분이 있는 반면 서버에서 처리해줘야 할 내용들이 있습니다. 느슨하게 구분해보면 이렇게도 가능하겠지요.

단말 : 단말의 현 위치를 기준으로 서버에 착한 가게 목록을 요청한다. 사용자들에게 로그인 정보를 받아서 서버에 요청한다. 착한 가게 사진을 찍어서 서버로 업로드 요청한다. 착한 가게에 체크인 정보를 서버로 요청한다.

서버 : 로그인 정보를 받아 합당한 유저인지 판단하여 로그인 성공여부를 알려준다. 관리자인이 일반 사용자인 지 판단하여 권한을 제한한다. 회원가입한다. 특정 위경도 주변에 있는 POI 목록을 보내준다. 업로딩 된 사진을 파일 저장소에 저장한다. 체크인 정보를 DB에 저장한다

실제 상황에서는 이 보다 훨씬 다양한 내용들이 있을 수 있겠지만 이 정도로 정리하고 진도를 나가보겠습니다. 서버에 해당하는 스토리를 처리하기 위해서는 backend 프로그램을 개발해야 하는데, 보통 웹 개발자, 서버개발자들이 담당하게 됩니다. backend 개발에 소요되는 비용은 일반적으로 frontend 개발에 드는 비용을 훨씬 상회하지요. 유저의 증가에 따른 확장성까지 고려한다면 이 비용은 더욱 가파르게 상승하게 됩니다.

BaaS가 해결하고자 하는 것은 무엇일까요? 바로 위에서 말한 backend 개발 비용을 획기적으로 줄여보자 것이지요. backend 서버 로직 중에 공통으로 많이 쓰이는 것들이 뭐가 있을까요? 다음과 같은 것이 떠오르는 군요.

회원관리 push notification 클라우드 기반의 파일 시스템

이 외에도 더 많이 생각해볼 수 있겠습니다. BaaS가 이런 backend 기능을 모아서 비교적 쉽게 frontend에서 사용할 수 있는 API와 SDK를 제공한다면, 단말개발자들은 서버 개발자 없이도 풍부한 기능의 앱을 만들 수 있지 않을까요? 서버 개발자들도 매번 똑같은 바퀴를 새로 만들 필요 없이, 서비스별 차별화 요소에 더욱 집중할 수 있는 여유를 만들 수 있겠습니다.

parse.com 이라는 구글 출신의 엔지니어들이 만든 BaaS업체가 있습니다. 다양한 기능을 제공하고 SDK까지 제공하고 있기 때문에, iOS/Android 개발자라면 누구나 쉽게 push메시지를 보낼 수 있고, 간단한 key-value 형태의 데이터를 서버에 저장할 수 있으며, 파일을 공유할 수 있게 되었습니다. 이런 API 사용에 초반에는 비용이 없습니다. 무료로 시작할 수 있고, 특정 사용량을 넘어서게 될 때에 비로소 과금하게 되는데, 이 역시 쓴 만큼만 비용을 내는 합리적인 가격체계를 갖추고 있습니다.

BaaS는 단말 개발자들에게 서버개발자 없이도 멋진 앱을 만들 수 있는 자유를 줬습니다. UX/UI에 더욱 집중하고 나머지 뒷단의 일은 BaaS에게 맡기세요. 게다가 서비스가 어느 정도 커져서 시장에 반응이 나타날 때까지 무료로 해볼 수 있다는 점이 무척 매력적이네요.

국내에서도 이러한 BaaS서비스를 준비하고 있는 업체들이 있습니다.

1995년, Clayton Christenson 는 “파괴적 기술 : 흐름을 잡아라.” 라는 논문에서 처음으로 “파괴적 혁신”이라는 단어를 사용했다. 그의 주장은 시장에 나타나는 새로운 제품이나 서비스들은 너무 혁신적이어서 현재 기술들을 구식으로 만들어버린다는 것이다.

“Backend as a Service”라고 일컬어지는 영역의 발생도 이러한 사례라고 볼 수 있다.

“BaaS 는, 모바일과 웹 앱을 만들기 위해 전통적으로 의존적이고 기능 중심의 서버환경을 대체하고 있다.”

경쟁에서 빗겨서다.

현재 기술들의 지지자들은 처음에는 새로운 혁신이 그냥 새로운 것 이상은 아닐거라고 생각했을 수 있다. 파괴적 혁신의 힘 말일다!

포드모델 T 는 20세기에서 찾아볼 수 있는 훌륭한 사례이다. 처음에 시장의 채택은 느렸다. 그러나, 차의 가격과 편의성은 결국 운송의 표준이었던 마차를 밀어내고 말았다. 더 최근에, 카세트 테입이 8트랙 기술을 대체했고, iPod는 워크맨을 대체했고, iPhone은 iPod를 대체하고 있다.

왜 BaaS가 개발자들에게 좋은가?

전통적으로, 백엔드를 세팅하는 것에 앱개발 기간의 절반 또는 그 이상을 사용한다. 구축에 몇 달이 걸리고, 특정 개발팀을 필요로하기도 한다. BaaS의 잇점을 이용한다면, 개발자들은 이전보다 훨씬 빨리 앱을 만들 수 있다. 많은 경우 50% 이상이 빨라진다. 개발자의 시각에서 BaaS는 모바일이나 웹앱을 만들기 위한 가장 힘든 파트를 잘라내는 것이다. BaaS는 그냥 앱과 통신할 수 있는 또다른 API이기 때문에, 만일 당신이 이미 RESTful API를 사용하고 있다면, 이미 절반은 간 셈이다. 즉, 우리는 프론트엔드 개발자들이 모든 종류의 서버기반의 이해할 수 없는 상황에 꼼짝달싹할 필요가 없다는 뜻이다. 나는 그들이 리눅스, 아파치, 톰캣서버와 데이터베이스를 세팅하기 위해 걱정해야만 하게 하고 싶지 않았다. BaaS는 이미 그것을 API로 풀어버렸다. 한 명의 개발자로서 , 나는 가장 중요한 것에 집중할 수 있게 되었다. – 앱 그자체에 말이다.

개발자가 모바일 백엔드에서 필요한 기능들과 서비스들은 무엇일까?

오늘날, 사용자들은 충분한 품질과 매우 우수한 사용 경험들을 요구한다. 그들은 기기나 다른 사람들과의 교류하고 싶어한다. 그런 기대를 충족시키려면, 개발자들은 사용자 정보나, 관리, 개인형 데이터 공간, 롤 관리, 이벤트 추적, 지오로케이션, 분석, 사회적 통합 등에 대한 최적화된 접근방법을 필요로 하게된다.

BaaS 사업자들은 모바일 앱개발자들을 위해 이러한 문제점을 풀기 위한 플랫폼을 만들었다.

열기가 오르다.

지난 6개월 동안 12개 업체 이상이 이 분야에서 런칭했고, 분석가들은 BaaS 가 웹호스팅처럼 흔해질 것이다고 예측하고 있다. 웹호스팅, 아니 이제 클라우드컴퓨팅은 언젠가는 산업표준 솔루션이 될 것이다. 물론, 기업들은 여전히 유휴장비를 선택할 수도 있다. 하지만, 대부분은 그렇게 하지 않을 것이다. 왜? 아마존의 EC2 와 같은 서비스는 정말 합리적인 가격에 모든 기능의 솔루션을 제공하고 있다 !!! 똑같은 내용이 BaaS에도 적용된다.

“서비스가 성숙해지고 진화함에 따라, 모든 기업과 개발자들이 스스로 그것들을 구축하는 것은 사업적으로 합리적이지 않다.”

경쟁력을 높여주다.

좋은 소식은 BaaS의 채택율이 빠르게 증가하고 있지만, 산업적으로는 거의 초기상태에 있다. 많은 개발자들과 회사들은 아직 그들의 프로젝트가 돈을 많이 벌 수 있을지 알지 못하면서도 내부에 많은 서버들을 구축하고 있다. 이것은 BaaS를 이용하는 개발자들은 경쟁환경 하에서 시작부터 우위를 얻을 수 있다는 뜻이다. 그들은 절반의 시간과 일부비용으로만 앱개발을 시작할 수 있다.

필자의 생각은 이러한 BaaS의 기반을 정부에서 공공데이타와 백엔드에서 제공할 수 있는 것들을 모아 제공한다면, 상당한 의미있는 플랫폼으로 정부가 진화할 것 같고, 여러 참여개발자들의 다양한 어플로 인한 좀 더 정보에 풍요로운 세상을 만들어 가수 있을 것이라고 확신한다.

[참고 사이트]

The Rise of Mobile Cloud Services: BaaS Startups Grow Up Bringing Enterprise Data to Your Mobile Workers 출처 : Baas, The mobile backend is now a Service 저자 : Rod Simpson, 2012.7.4

세상을 바꾸는 클라우드

http://cloudnyou.wordpress.com/%EB%AA%A9%EC%B0%A8/

목차
* 순서대로 책의 내용을 채워나갈 예정입니다. 가능하면 일주일에 챕터 한개씩 글을 쓰려고 하지만, 사정상 미뤄질수 있음을 양해해 주세요.

클라우드 소개
CH 1. 클라우드- 새 술을 담는 부대 (클라우드 기술의 출현 배경, 이점들) 링크 1 링크 2
CH 2. 클라우드의 추상화 (서비스와 IaaS, PaaS, SaaS)

아마존 웹서비스(AWS) 프로그래밍하기
CH 3. AWS 개요
CH 4. AWS 기초 지식 (보안 모델, API, 웹서비스)
CH 5. 아마존 S3 (Simple Storage Service)
CH 6. EC 2 기본 (이미지, 인스턴스 관리)
CH 7. EC 2 고급 (EBS, Security Group 등)
CH 8. Elastic Load Balancer
CH 9. 최신 AWS 기술들

하이브리드 클라우드 만들기
CH 10. 프라이빗 클라우드 기술들 (Eucalyptus, Openstack 등)
CH 11. Eucalyptus의 구조
CH 12. Eucalyptus로 프라이빗 클라우드 구축하기
CH 13. Eucalyptus – AWS 연동하기

클라우드 어플리케이션 만들기
14. AWS에서 운영하는 웹 서비스
15. AWS-Eucalyptus 하이브리드 어플케이션

16. 결론

Appendix

Index