RSS

카테고리 보관물: BaaS

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 website

parse.com website

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

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

국내에서도 이러한 BaaS서비스를 준비하고 있는 업체들이 있습니다. 이들에 대한 이야기는 다음 포스팅에서 이야기 해보겠습니다.

baas.io

baas.io

최피디 드림

 

 
댓글 21개

게시자: 켬 2012년 8월 16일 in BaaS