제가 요즘 여러가지 고민으로 왠간하면 집과 사무실을 나서지 않읍니다. 그런데 6월 13일 금요일에는 외부 마을에 좀 나가야 할 일이 생겼습니다. SaaS Forum에서 PaaS(Platform As As Service)에 대한 발표가 있기 때문입니다. SaaS 분야의 분들이 모이시는 자리라 공유하면 도움이 될 것 같아 준비를 했습니다. 관심있는 여러분들로 함께 PaaS에 대해 알아보세요!



Posted by 박재현
,

SaaS = AaaS + PaaS(DaaS + IaaS)
AaaS = Application As A Service
DaaS = Development As A Service
IaaS = Infra As A Service

 
초기 SaaS는 CRM이나 웹 오피스 그리고 그룹웨어 등 기존 데스크탑 기반의 애플리케이션을 웹 서비스로 제공하고 사용한 만큼 비용을( Pay as you go ) 지불하는 모델을 의미했다. 최근 들어, SaaS는 애플리케이션의 범위를 넘어 그 영역을 확대하고 있다. 특히, 웹 애플리케이션을 손쉽게 개발, 테스팅, 배포, 관리하는 분야를 서비스하는 분야를 비롯하여 컴퓨팅 리소스와 데이타베이스, 그리고 파일 시스템 등 서비스의 인프라 자체를 서비스하는 분야가 확산되고 있는 실정이다.

이러한 추세를 반영하여 SaaS를 다시 3계층으로 분류해 보았다. SaaS는 크게 애플리케이션 서비스, 플랫폼 서비스로 구분하고 , 다시 플랫폼 서비스는 개발 지향플랫폼 서비스와 인프라 서비스로 분류해 보았다. 특히, 개발 플랫폼 서비스의 경우 구글 앱 엔진번지 커넥트 처럼모든 개발 환경을 종합적으로 제공하는  접근 방법과  페이스북의 F8세일즈포스의  앱익스체인지처럼 서비스의 통합 플랫폼을 지향하는 것으로 구분해 볼 수 있다.

사용자 삽입 이미지

PaaS의 서비스 스택

웹을 플랫폼으로 서비스를 제공하는 SaaS의 특성상  실제 SaaS서비스를 개발,운영하는 데 에는 많은 비용이 발생하다. 이러한 문제를 해결하고 웹 플랫폼 자체에서 직접 서비스를 개발,운영하는 PaaS는 일반적으로 다음과 같은 서비스 스택을 지향한다.

사용자 삽입 이미지

기존의 손쉽게 설치하고 운영할 수 있어 널리 사용되고 있는 LAMP ( Linux - Apache - MySQL - PHP ) 환경과 스토리지와 서비스를 위한 네트웍 밴드위스 등 컴퓨팅 자원을 서비스화 하여 제공하고 있다.


사용자 삽입 이미지
구글 앱 엔진


PaaS 중에서 구글앱 엔진의 서비스 스택은  다음과 같다. 구글의 대용량 인프라인 빅테이블로 구성된 스토리지 중 500MB와 서비스를 위한 네트웍 밴드위스를 제공한다. 개발 환경으로는  Physon 런타임과 웹 응용 서버 그리고 SDK를 제공하여 각종 관리 환경과 Deplay환경을 제공하고 있다.

개인적으로 토이 프로그램을 작성하여 테스트 하면서 기존의  LAMP보다는 훨씬 편하고 손쉽게 서비스를 개발하여 Deplay할 수 있었다. 특히, 내부 웹 애플리케이션 서버도 중앙의 브로커에 RequestHandler를 개발하여 이를 등록하면 자동으로 처리되는 Front Controller 패턴으로 되어 있어 구조를 이해하기 무척 쉬웠다. 구글 웹 엔진과 동일한 패러다임의 서비스로는 번지 커넥트가 있다.

사용자 삽입 이미지

구글 웹 엔진과 달리 페이스북 F8은 웹 개발 종합 플랫폼을 제공한다기 보다 페이스북의 정보를 활용할 수 있는 API 및 질의어를 제공하고 이렇게 개발된 외부 서비스를 들을 페이브북에 통합할 수 있는 구조를 제공하고 있다. 세일즈포스의 앱 익스체인지도 페이스북 F8과 동일한 구조이다.

Posted by 박재현
,

새로운 것이 나타나서 일반적인 것이 되기까지 많은 장벽과 과정이 필요하다. 지금은 흔하디 흔한 전화지만 전화도 최초 발명가로 알려진 벨이 고안한 이후 일반화 될 때 까지 생산화 단계를 거쳤다. 물론 이 과정에서 벨은 큰 돈을 벌지는 못했다고 알려졌지만...

XTech에서 만난 Simon Wardley는 이 과정을 다음과 같이 정리했다. 새로운 것을 발견하거나 발명한 후 제품화(Commoditisation) 과정을 거쳐 일반화된다.
사용자 삽입 이미지

발명가가 자신의 특허를 제품으로 양산하는 게 쉬운 일일까? 가장 큰 문제는 당연히 제품화를 할 만한 자금과 인프라가 없다는 것이다.  일반 제품 뿐만 아니라 새로운 인터넷 서비스의 창업자도 발명가와 같은 문제에 빠진다. 개발하여 서비스를 운영할 자금과 인력 등 인프라가 없다는 것이다.

온라인 서비스 발명가들에게 이러한 인프라를 가능하게 해주는 것이 바로  PaaS(Plaform As A Service)이다. 구글의 앱스 엔진이나 번지 커넥트는 직접 온라인 서비스를 개발에서 배포,관리까지 가능한 플랫폼을 제공하며 페이스북이나 Salesforce.com은 개발된 온라인서비스를 통합하여 상품화할 수 있는 플랫폼을 제공한다. 이 들 뿐만 아니라  MS의 오피스 라이브도 플랫폼 서비스를 제공하고 있고 어도비도 할 것으로 예상한다. 이들을 이용하면 능력만 된다면 글로벌 사업도 가능하다...

Posted by 박재현
,

어도비 시스템즈에서 온라인 포토샵 버전을 발표하겠다는 소식을 들었을 때  두가지 생각을 했었습니다. 하나는 기존의 킬러 패키지중의 하나인 포토샵의 매출에 어떤 영향이 있을 까? 라는 것과 데스크 탑용 포토샵의 기능 중 어느 정도까지 지원이 될까? 라는 것 이었습니다.

기대반,호기심반

27일 발표한 어도비의 Photoshop Express 서비스를 가입하여 사용한 순간, 궁금했던 것들에 대한 답을 어느 정도 스스로 정리할 수 있었습니다.

2Gbyte의 저장공간과 페이스북, 피카사, 포토버켓 사이트에 대한 매쉬업을 통해 해당 사이트등의 사진을 자동으로 import해줍니다. 또한 갤러리를 구성하고 다른 사람들과도 공유하게 해줍니다. 사용자마다 고유한 갤러리 URL을 제공해 줍니다.

사용자 삽입 이미지

또한 편집 기능에 있어 해당 사진에 대한 URL  추출 기능과  데스크탑 포토샵의  기본 기능  정도를 제공합니다.  앞으로도 계속 추가되겠지만 초보자인 제 수준으로는 크게 부족함이 없어 보입니다. 텍스트 입력 기능을 아무리 찾아도 없네요...

MS의 오피스 라이브를 보면 실제 오피스는 서비스로 제공하지 않습니다. 기존 데스크탑 상의 오피스와 웹상의 오피스 라이브(소프트웨어 + 서비스)라는 하이브리드 모델입니다. 이런 모델의 이면에는 온라인으로 오피스를 제공할 경우 기존 데스크탑용 오피스의 판매에 영향이 있기 때문입니다.

그런데 어도비에서 온라인용 포토샵을 제공하는 이유가 무엇일까요?
MS와 달리 어도비는 고가의 데스크탑용 포토샵과 온라인 포토샵은 서로를 잡아 먹는 식인종 관계로 생각하지 않는 것은 분명합니다. 온라인 포토샵 버전은 고가의 데스크탑 버전에 부감스러워하는 사용자에게 또 다른 선택의 자유를 준다고 생각합니다.

윈도우용 포토샵 버전 , 맥용 포토샵 버전 ,  웹용 포토샵 버전
이 중 가장 많이 판매될 버전이 웹용 포토샵 버전이 될 수도 있을 것 입니다.

최근 들어, MS에서도 오피스의 웹 버전을 만들어 발표한다는 소식이 들리는 것을 보면 조만간 오피스의 온라인 버전도 멀지 않아 선보일 것이 분명해 보입니다. 더구나 저가의 가격으로 !


Posted by 박재현
,

사용자 삽입 이미지
데스크탑용 소프트웨어 중 오피스가 꽃이라면 운영체제를 제외하고 DBMS는 서버 기반 소프트웨어의 꽃이라 할 수 있습니다. 개인적으로도 DBMS가 전공이고 1994년 부터 3년간 객체지향 DBMS를 개발한 경험이 있습니다. 돌이켜보면 아주 작은 프로토타이핑 수준이었지만 당시 객체지행 개념이 새롭게 나타나 주류가 되는 시점에시 기존 관계형 DBMS 의 한계와 단점을 극복하기 위한 노력은 아주 의미가 있었던 작업이었습니다.

DBMS는 초기 네트웍 DBMS, 현재 주류인 관계형  DBMS , 객체지향  DBMS 등 데이타를 다루는 모델에 따라 구분이 됩니다. 이러한 모델에 따라 각기 관계형  DBMS 는 SQL,  객체형 DBMS는 OQL등 데이타베이스에서 데이타를 꺼내는 언어를 제공하고 있습니다.  그러나 최근 들어, 인터넷  DB 또는 문서 기반  DB , REST DB 라는 개념의 데이타베이스 서비스와 클라이언트측에서 기존의 파일 시스템을 대체하며 손쉽게 쓸 수 있는 클라이언트측 DBMS가 등이 새롭게 나타나고 있습니다. 이러한 새로운  DBMS 의 키워드에 대해 정리해 봅니다.

1. 경량 DBMS

DBMS는 일반적으로 대용량의 데이타를 고성능으로 처리하기 위해 사용되는 고가의 엔진으로 알려져 있습니다. 이러한 엔진으로는 오라클, IBM DB2, MS SQLServer, Sybase등 외산이 주를 이루고 있습니다. 물론 국내의 경우 한국 컴퓨터 통신의 Unisql이 최초의 RDBMS이고 최근 들어,  Tmax 등이 RDBMS를 발표하여 판매를 하고 있습니다. ( 1990년 후반 당시, 제 기억으로는 이들 대용량 관계형 DBMS 엔진을 설계,개발할 수 있는 아키텍쳐가 몇몇 되지 않는 것으로 알고 있습니다. 그 중 Unisql은 그 분중 한분이자 한국의 김원 박사께서 개발한 제품입니다. )

개발자 입장에서 이러한 DBMS의 장점은 SQL(Structured Query Language)을 통해 원하는 데이타의 타입을 정의하고 , 값을 조작할 수 있다는 것 입니다. 이러한  SQL은 흔히 말하는 집합 개념(Set Theory)에 기초합니다. 쉽게 차집합, 합집합 등 집합 개념을 통해 원하는 집합을 얻어내는 것 입니다.  DBMS를 사용하지 않는다면 개발자는 직접 플랫 파일을 처리하거나 B-Tree같은 색인 시스템을 통해 직접 데이타를 처리해야 하며 , 데이타의 무결성을 지켜내야 합니다.

특히, 최근 들어 이러한 DBMS의 경량 버전이 각광받고 있습니다. 특히, 각종 임베디드 디바이스에서 데이타 관리나 모바일에서 오프라인 관리, 그리고 부하가 크게 없는 서비스에서 각종 사용자 데이타 관리 등에 경량 버전이 많이 사용되고 있는 상황입니다.

- Derby
자바 개발자에게 가장 좋은 경량 DBMS로는 Derby를 들 수 있습니다. 2MB 정도의 클래스 파일에 자바 힙 메모리도 4M 정도로 아주 작습니다. Derby는 본래 IBM에서 개발한 경량 DBMS로 Cloudscape라는 이름으로 개발되던 것을 2004년 8월에 Apache 재단에 contribution하면서 오픈소스화된 경량 DBMS입니다.  SQL92표준와 SQL99 표준의 일부를 지원하며 JDBC 기능을 제공하기 때문에 손쉽게 자바 프로그램내에 내장하여 사용할 수 있습니다. 특히, SQL 질의 최적화 또한 가격 기반으로 처리하는 등 첨단 DBMS의 최적화 기능을 제공하고 있습니다.

Cost-based query optimizer: join order, index selection, bulk fetching, join strategies (nested loop or hash), sort avoidance, lock escalation, subquery flattening, transitive closure, and many other query transformations. It uses a unique sampling technique that requires no intervention for statistical gathering, and also provides query plan overrides and statistics on actual query results.

내부 색인 구조는 멀티 컬럼 기반의 B-Tree 색인을 사용하기 때문에 대용량 지원은 가능한 구조입니다. 주요한 특징으로는 자바 언어로 트리거 , 스토어드 프로시져 그리고 SQL내에서 직접 자바 함수를 호출 할 수 있다는 것입니다. 더비는 자바 기반의 경량이지만 경량 이상의 기능과 성능을 제공하는 라이브러리보다는 경량 엔진으로 보입니다.

- SqlLite
자바 개발자에게 더비가 유용한 경량 DB 엔진이라면 TCL이나 C/C++개발자의 경우 SqlLite가 가장 좋은 경량 DBMS로 보입니다. SQL 최적화는 가격 기반이 아니라 SQL구문을 규칙에 의하여 최적의 상태로 변경하여 처리하는 방법을 사용하고 있습니다. 색인은 B-tree 를 사용하며 성능 최적화를 위해 페이지 단위의 캐싱을 합니다. 과거 제가 학생일 때 교제로 경량 DBMS 구축하는 과정을 소스코드 차원에서 가르쳐 주는 Requiem이라는 교제로 배웠었는데 실제 소스가 무척 유사하네요^-^(확인해 보니 Prentice Hall - Relational Database Management , M.Papazolou의 책입니다.). Sqllite의 아쉬운 점으로는 개발측면에서 ODBC나 JDBC 등을 지원하지 못한다는 점이지만 그 만큼 더 경량으로 데이타를 처리할 수 있다라는 장점도 있지 않나 싶습니다. 모바일이나 임베디드 H/W 장비 등에 사용할 경우 유용해 보입니다. 단, 기업용 응용 프로그램 처럼 너무 복잡한 모델에 적용하거나 대용량 처리를 바라는 것은 넌센스같습니다.

2. 서비스로서의 DBMS

SQL 방식이 아니라 기존의 REST나 SOAP 등 표준 웹 프로토콜에 기반하여 원하는 데이타를 구성하고 조작할 수 있는 방법은 없을까? 바로 이 방법이 서비스로서의 DBMS이다. 현재 이러한 방식으로 이용할 수 있는 것은 오픈 소스인 CouchDB 와 아마존의 SimpleDB가 있습니다. 이들 데이타 관리 서비스의 기능을 보는 것보다는 기본 모델을 이해하는 것이 중요하고 할 수 있습니다. 앞서 SQL이 행과 열의 관계로 구성된 테이블 이라는 2차원 구조에 기반한 모델인 데  반해 , 데이타 관리 서비스는 문서에 기반한 모델입니다. 하나의 문서를 만들고 이 문서에 필드를 생성하고 , 여기에 값을 넣고 수정하고 삭제하는 것을 가능하게 해주는 모델입니다. 예를 들어, 하나의 게시판 문서를 만들고 여기에 작성자, 제목, 본문, 작성일 등의 필드를 만들고 여기에 값을 다루는 것을 상상하면 됩니다. 과거 이러한 모델로 크게 성공한 시스템으로 현재 MS의 CTO인 레이 오지가 만든 로터스 노츠가 있습니다. 이 모델의 단점은 하나의 파일에 데이타와 뷰, 컨트롤러가 함께 있기 때문에 유지 보수 등에 있어 여러 문제들이 있다는 것 입니다. 한편으로는 게시판, 블러그, 각종 웹 폼 , 설문 등 현재 웹상에서 XML 등의 문서 기반의 응용에 적합한 모델입니다. 특히, 문서라는 특성으로 인해 버전 관리 등이 용이하기 때문에 이러한 특징을 살린 서비스 개발에 유리 합니다.  또한 검색엔진을 내장하여 대용량 문서에 대한 검색이 기존 DBMS 보다 강력하게 수행할 수 있습니다. 현재에도 CouchDB 에는 루씬 검색엔진이 통합되어 있습니다.

3. 검토 의견

실제 엔진의 기능으로 보면 Derby가 보다 성숙되었다고 할 수 있습니다. 그러나 SqlLite는 말그대로 아주 초경령이고 C로 개발되어 Derby에 비해 고성능을 내기 때문에 모바일 등의 하드웨어 등에 내장하여 사용하기에는 가장 적합하다 할 수 있습니다. 이 때문에 애플 아이폰 SDK를 비롯하여 모질라 등 여러 업체에서 이를 내장하고 있습니다. 이러한 엔진으로서의 DBMS가 보다 경량화되고  고가의 제품에서 일반화되는 것과 더불어  문서 기반의 DBMS 서비스 또한 다양한 용도로 사용될 것으로 보입니다. 게시판을 만드는 데 더 이상 복잡한 관계형 DBMS를 사용하는 것보다 REST 방식의 서비스를 사용하는 것이 보다 편리하고 쉬우며 가격도 저렴하기 때문입니다.

2008/03/23 - [SaaS] - 빌링 시스템에서 빌링 서비스로 II
2008/01/27 - [SaaS] - 빌링 시스템에서 빌링 서비스로! - Amazon DevPay


Posted by 박재현
,