기고 원문 - wordpress.com — get a free blog here

10
g.na[특특 - SaaS] 누누누 누누 누누 누누누 누누 누누 Service Service 누누누 누누누 (SaaS (SaaS 누 누누 누 누 누누 누 ) ) SaaS (Software as a Service)특 특특특 특특특특 특특특특특 특특? Service 특 특특특 특특특특특 특특특 특 특특특 특특특 특특특특, SaaS 특특특특특특특 특특특특 특특 특특특 특특특 특특특특특특특 특특특특 특특 특특특특 특특특 특특특. ---------------------------------------------------- 누누누 [email protected] | 특특특특 Architecture 특특특 Microsoft MVP 특 특특 특특특, 특특특특특 특특 특특특특 Devpia Eva 특 특특특특. 특특특 특특특 특특특특특 특특특특특특 특특특 특특특 특특 특특 특특 특특특특 ‘특특’특특 특특특특 특특특 특특특특 특특특특특특 특특특 특특특 특특특 특특. Pattern 특특특특 특특 특특 특특특특특, 특특 특특 PLOP 특 특특 Pattern 특특특 특특특 특특특 특특 특 특특 특특. --------------------------------------------------------------------------- 특특특 SaaS(Software as a Service)특 특특 특특 특특 2003 특 IEEE Computer 특특 특특특 “Turning Software into a Service”[1] 특특 특특특특특. 특특 특특특특 SaaS 특 Delivery Platform 특특 ASP (Application Servie Provider)특 특특 특특특 특특특특 특특특. 특 특특특특 특특특 특특특특 SaaS 특 특특특특 특특 특특특 특특특. SaaS 특 Delivery Platform 특 특특특 특특 특특특특 특특특 특특. 특특특 특특 특특특 특특 SaaS 특 특특 특특특 특특특 특특특 특특특 특특특 특특특 특특 특특특 특특 특특특 특 특특특특 특특 특특특특 특특특특 특특특 SaaS 특 특특특특 특특특 특특특특특 특특특특 특특 특특특 특특 특특특 특특특 특특. 특 특특특 특특특 특특 특특특특특특 SaaS 특 특특특특 특특 특특특특특 특특 특특특특 특특특 특특특 특특특 특특 특 특특특특특 특특 특특 Service 특특특특 특특특특특 특특특특특. Service Service SOA SOA 누누 누누 Software as a Service 특 특 특특특 특특 특특특특특특 특특특특특특특. 특특 특특특특 Service 특특 특특특 특특 SOA(Service Oriented Architecture)특 특특 특특특특 특특 특 특특 특특특? 특특 특특 특특특 “Service 특 특특특특?”특 특특특 특특특 특특특 특 특특특 특특. Web Service 특 특특특특특, Microsoft 특 특특 특특 특특특특특특 Windows Communication Foundation 특 특특특특 Don Box 특 특특(Object)특 특특특특(Component)특 특특 특특특특 특특특(Service) 특 특특특특 특특.

Upload: rinky25

Post on 28-Nov-2014

949 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 기고 원문 - WordPress.com — Get a Free Blog Here

g.na[특집 - SaaS]

누구도 듣지 못한 누구도 듣지 못한 Service Service 이야기 이야기 (SaaS(SaaS 로 가는 길로 가는 길))

SaaS (Software as a Service)를 어떠한 시선으로 바라보아야 할까? Service 의 기원과 밴더들간의 숙명을 건 정치적 배경을 살펴보고, SaaS 어플리케이션을 개발하기 위해 기술적 그리고 아키텍쳐쪽으로 고려해야 되는 측면들을 나누어 보겠다.

----------------------------------------------------

손영수 [email protected] | 데브피아 Architecture 시삽과 Microsoft MVP 로 활동 중이며, 소프트웨어 공학 스터디인 Devpia Eva 의 리더이다. 여전히 실력이 부족하다고 자평하면서도 자신의 지식을 남과 나눌 때는 누구보다 ‘부자’라는 자부심을 가지고 온라인과 오프라인에서 왕성한 활동을 펼치고 있다. Pattern 전도사가 되기 위해 노력중이고, 이와 함께 PLOP

와 같은 Pattern 학회를 국내에 만들기 위해 힘 쏟고 있다. ---------------------------------------------------------------------------

필자가 SaaS(Software as a Service)를 처음 들은 것은 2003 년 IEEE Computer 에서 발표한 “Turning Software into a Service”[1] 라는 논문이었다. 대형 밴더들은 SaaS 를 Delivery

Platform 또는 ASP (Application Servie Provider)의 진화 모델로 설명하고 있는데. 위 논문과는 상이한 관점으로 SaaS 를 이야기를 하고 있다는 점이다. SaaS 는 Delivery Platform 그 이상의 많은 애기들이 숨겨져 있다. 필자는 이번 특집을 통해 SaaS 가 우리 컴퓨팅 환경에 미치는 영향과 그안에 숨겨져 있는 밴더들 간의 숙명을 건 애기들과 다른 기술관의 상관관계 그리고 SaaS 를 구축하기 위해서 개발자들이 준비해야 되는 것들에 대해 이야기 하고자 한다.  이 논문에 담겨져 있는 플랫폼으로써 SaaS 가 성공하기 위해 고려되어야 하는 조언들과 필자의 부족한 지식을 합쳐 그 누구에게도 듣지 못한 Service 이야기를 여러분에게 전달하겠다.

ServiceService 와 와 SOA SOA 정의정의Software as a Service 를 말 그대로 하면 서비스로써의 소프트웨어이다. 왠지 모르지만 Service

라는 단어를 보니 SOA(Service Oriented Architecture)와 무슨 연관성을 있을 것 같지 않은가?

그럼 우린 여기서 “Service 가 무엇인가?”에 초점을 맞추어 생각해 볼 필요가 있다.

Web Service 의 아버지이자, Microsoft 의 통합 통신 프레임워크인 Windows Communication

Foundation 의 설계자인 Don Box 는 객체(Object)와 컴포넌트(Component)의 연장 선상으로 서비스(Service)를 설명하고 있다.

Page 2: 기고 원문 - WordPress.com — Get a Free Blog Here

그림 1. 재사용 패러다임의 진화! Service

그림 1을 보면 한 시대를 풍미한 객체(Object), 컴포넌트(Component) 그리고 요즘 종종 듣게 되는 서비스(Service)가 나와있다. 다양한 측면에서 이들의 의미를 살펴볼수 있겠지만 재사용의 관점에서 바라보도록 하자.

1980년대부터 1990년대 중반의 객체 지향 시대에서 가장 큰 화두는 역시 재사용이었다. 상속과 조합이라는 기법을 어떻게 적절히 조합하여 좋은 객체들을 만들 수 있을지를 많은 개발자들과 학자들이 고민했다. 하지만 객체의 재사용 범위를 생각해 보자. 객체의 재사용 범위는 언어에 종속적이다. C++로 만든 객체는 C++에서 사용 가능하고, Java에서 만든 객체는 Java에서만 활용할 수 있는 것이다. 따라서 이와 같이 언어 종속적인 재사용성을 극복하기 위해, 1990년대 초부터 2000년대 초까지 재사용을 위한 모듈로 컴포넌트가 대두되었다.

컴포넌트는 언어 종속적인 재사용성을 탈피하기 위해 IDL(Interface Description Language) 같은 메타데이터를 활용하므로 다양한 언어에서 사용할 수 있다. 실제로 마이크로소프트 플랫폼에서는 COM으로 만들기만 하면 언어에 상관없이, 즉 Visual Basic이나 Visual C++등을 구분하지 않고 사용할 수 있었다. 그러나 컴포넌트 역시 재사용 범위가 플랫폼에 종속적이라는 문제점이 제기되었다. COM (Component Object Model)이라는 기술은 마이크로소프트 플랫폼에만 적용될 수 있고, Java 역시 JVM이 설치된 Java 플랫폼에서만 재사용할 수 있었다. 결국 많은 개발자와 학자들은 언어와 플랫폼에 종속족이지 않는 재사용성 가능한 모듈을 꿈꿔왔다.

이것이 바로 서비스이다. 다시 말해 서비스는 ‘언어와 플랫폼에 독립적인 재사용 가능한 모듈’이라고 정의할 수 있다. 이 얼마나 명쾌하고 깔끔한 정의인가?

Service 의 정의를 내린 김에 SOA의 의미를 파악해 보자. SOA (Service Oriented Architecture)를 말 그대로 정의하면 “서비스의 세상을 실현시키기 위한 아키텍쳐”이다. 서비스들만 조합하여 하나의 Application을 만드는 서비스 기반의 플랫폼을 구축하는 것이 SOA의 궁극적인 목표인데, 그러기 위해서는 보안, 트랙잭션, 통합인증 등 여러가지 복잡한 문제들을 해결하기 위한 아키텍쳐를 제공해야 된다. 현재 가장 큰 힘을 얻고 있는 기술이 Metadata 기반의 표준을 꿈꾸는 WS - * 이며 그 이외에 Semantic Web Service, OpenSOA의 SCA (Service Component Architecture)등 다양한 기술들이 경합하고 있다.

---- 메타데이터 기반의 통합의 의미 ----------------------------------------------

Page 3: 기고 원문 - WordPress.com — Get a Free Blog Here

기존의 SOA 세상을 실현하기 위해 많은 기술들이 존재했다. 그 대표주자로 CORBA를 예를 들수 있다. OMG에서는 CORBA의 능을 추가하기 위해 함수명과 파라미터까지 다 정의해야 하므로, 각 플랫폼의 특성과 장점들을 포기하고 랩핑(Wrapping)하는 등의 부가적인 작업을 요구하게 된다. 하지만 이런 불편함을 간파한 XML 웹 서비스의 창시자 Don Box는 주고받는 데이터 포맷인 SOAP와 몇 가지 규약(WSDL, WS-Policy 등)들만을 지키고, XML 웹 서비스의 구현은 여러 벤더들이 각 플랫폼의 특성을 살려 개발할 수 있도록 유도했다. 다시 말해 CORBA와 달리 각 플랫폼을 존중하는 철학이 있었기에 널리 Web Service가 널리 이용되는 큰 연할을 했다.----------------------------------------------------------------------------

SaaSSaaS 의 탄생 배경 의 탄생 배경 –– SOA SOA 와 와 Web 2.0 Web 2.0 플랫폼 친구인가플랫폼 친구인가? ? 적인가적인가??

SaaS가 요즘 컴퓨팅 환경에 대두된 이유는 무엇일까? 그 이유를 쉽게 이해하기 위해서는 밴더들간에 얽혀 있는 플랫폼 전쟁 애기를 뺄수 없다. 2000년 초에 많은 대형 IT 밴더들은 차세대 성장 동력으로 SOA를 선택했다. 2000년 초만 해도 SOA의 정의는 매우 간단했다. 서비스를 널리 배포하기 원하는 공급자 (Publisher)가 UDDI와 같은 중계자(Broker)에 자신의 서비스를 등록하면, 특정 서비스에 관심이 있는 고객(Consumer)은 중계자를 통해서 자신이 원하는 서비스를 찾은후 직접 공급자의 서비스를 이용한다는 것이다. 새로운 Application을 만들기 위해 모든 기능을 구현하는 것 보다는 존재하는 Service들을 조합해 손쉽게 만들 수 있는 이상적인 세상을 꿈꾸워 왔다.

이러한 접근 방법은 Home Networking 기반의 JINI에서 사용된 방법으로, Lookup Service가 대표적인 예이다. 간단한 예를 들어보겠다. 여러분이 퇴근후 집에서 뉴하트를 시청하기 위해 텔레비젼을 켰는데 고장이 났다고 하자. 드라마 매니아인 여러분은 답답해하며 누군가 인터넷으로 녹화 동영상을 올려주길 기다리고 있을 것이다. 하지만 여러분 집이 JINI 시스템으로 구축되어 있다면 텔레비젼의 대체 제품인 프로젝터를 여러분 집안에서 발견하고 뉴하트를 볼수 있는 환경을 제공해 줄수 있는 것이다. JINI 가 꿈꿔왔던 SOA는 바로 이런것이다. 특정 서비스가 고장나면 그것을 대신할 만한 서비스를 검색하여 홈네트워킹이 자동화하는 것이다. 이것은 전자 제품이라는 협소한 도메인에 속한 업체들간의 약속으로만 충분히 SOA의 세상을 만들수 있었다.

Web Service 기반 SOA 역시 이러한 아이디어를 차용해 UDDI라는 중계자를 만들고 성공을 꿈꿨다. 그러나 대형밴더들이 꿈꾸던 SOA 세상은 위기를 맞게 된다. 그 이유는 UDDI가 제공하는 키워드 기반의 검색이다. 과연 실세계의 광범위한 도메인에서 실제 내 입맞에 딱 맞는 서비스를 찾는다는 것이 가능할까? 만약 중국집에서 짜장면을 시켰는데 중국 북경에 있는 중국집에서 짜장면을 배송하는 서비스를 실행했다면 여러분은 불어터지고 부폐한 짜장면을 받게 될것이다. 결국 밴더들의 꿈인 서비스를 기반의 가상 OS를 만드는 작업은 빈약한 키워드 기반의 검색으로 인해 실패하게 된다.

하지만 새로운 성장동력이 필요로하는 밴더들은 SOA를 재해석 하게된다. 기존에 메인프레임과 Enterprise 환경에 강세를 보이는 밴더들(IBM, SUN, Oracle등)은 Business Process Management System과 Enterprise Service Bus를 기반으로 이질적인 컴퓨팅 환경의 극복하고 변화의 유연함과 시스템의 안정성을 보장하는 형태인 B2B 위주의 SOA 전략을, Microsoft를 비롯한 Consumer 시장에 강세를 보이고 있는 회사들은 B2C 기반의 SOA 전략(Microsoft 같은 경우 Software + Service)에 무게를 실어 SOA 시장의 혈전을 벌였다. 이렇게 기존의 대형 밴더들이 레드오션인 SOA 시장을 장악하기 위해 서로 혈전을 벌이고 있을때, 예상치 못한 블루오션인 Web 플랫폼에서 비약적으로 성장한 회사들이 속속 등장했다. 인터넷의 길목이라고 할수 있는 검색시장을 장악한 Google과 Social Networking 에 강세를 보이는 몇몇 회사들은 기존 IT 밴더들이 주력하고 있는 사업에 직,간접적인 영향을 미침으로써 대결구도 양상을 만들었다. 실례로 Web 플랫폼의 선두주자인 Google은 Web 플랫폼을 기반으로 E-Mail, Office 솔루션, Mobile 플랫폼 그리고 Cloud Computing등으로 전통적인 IT 밴더들과 치열한 전쟁을 하고 있다.

Page 4: 기고 원문 - WordPress.com — Get a Free Blog Here

그림 2. Web 2.0 과 SOA 친구인가? 적인가?

기존 IT 밴더들이 강세를 보이고 있는 SOA 플랫폼과 새로운 신흥 세력인 Web 플랫폼간의 충돌이 발생하게 되고 이것은 다소 복잡하면서도 재미난 상황을 연출하게 된다. SOA 가 성장하기 위해서는 Web 플랫폼의 접근성이 필요하고 Web 플랫폼의 활성화를 위해서는 SOA에서 제공하는 상호 운영성의 산물인 Mashup을 필요로 하게 된다. 많은 분들이 둘다 쌍생 할 것이라고 보고 있지만 엄격히 말하면 Web 2.0이 주가 된 상황에서 단지 Mashup의 수단으로 SOA를 사용하는 형태로 플랫폼이 진화하느냐? 아니면 SOA가 주가 된 상황에서 Web 2.0의 접근성을 얻는 형태로 진화하느냐에 따라서 밴더들간의 운명이 달려있다고 해도 과언이 아니다.

이러한 상황에서 SOA 플랫폼에 강세를 둔 대형 IT 밴더들은 어떻게 대응해야 될까? 그 대답이 바로 SaaS (Software as a Service)이다. 자 그럼 SaaS에 대해서 좀더 자세히 살펴보도록 하자.

SaaSSaaS 의 정의와 분류의 정의와 분류Service의 전문가 Mark Turner는 IEEE Computer Journal을 통해 SaaS를 다음과 같이 정의했다.

“Software deployed as a hosted service and accessed over the Internet. (호스팅된 서비스로서 운영되어지고 인터넷을 통해 접근할수 있는 소프트웨어)”

아마 가장 좋은 예가 Windows Live Service(http://get.live.com/wl/all) 와 Google이 제공하는 서비스(http://www.google.com/intl/ko/options/index.html)일 것이다. 백문이 불여일견 직접 방문해보길 바란다.

SaaS는 기존 패키지 소프트웨어가 중요시 여겼던 소유와 사용의 관점을 불리함으로써, 전통적인 패키징 기반의 소프트웨어와는 다른 형태의 라이센싱 모델을 구축할수 있다.

예를 든다면 우리의 서비스를 호출할 때마 돈을 받는 트랜젝션 기반의 가격정책과 1년이라는 기간을 두고 소프트웨어를 사용할 수 있는 Subscription 정책 그리고 Service는 무료이지만 광고기반의 수익을 벌어 들이는 방법이 있을것이다. 이것은 서비스 제공자 입장에서는 불법 복제을 원천적으로 방지할 뿐만 아니라 개별 고객의 요구사항에 따라 맞춤 서비스를 제공할 수 있는 장점을 가지고 있어 잠재적인 고객들을 끌어 낼수 있는 장점을 가지고 있다.

소비자의 입장에서는 합리적인 구매를 할수 있다. 여러분이 사진 편집을 위해 Photoshop의 일부 기능을 이용하기 위해 어쩔수 없이 구입해야 되는 상황이 패키지 소프트웨어에서는 발생했지만 SaaS는 일부 기능만을 사용할 수 있거나 1년에 겨우 몇번 쓰는 사람들을 위해 저렴한 비용으로

Page 5: 기고 원문 - WordPress.com — Get a Free Blog Here

소프트웨어를 사용할 수 있게 된다. (물론 불법 복제 천국인 우리나라에서는 그리 합리적이지 않을수도 있다. ^^)

전문가들은 SaaS의 시장이 크게 세가지 형태로 분류될 것으로 예상하고 있다.

1) Enterprise LOB (Line of Business) SaaS - 기존의 B2B 영역에서 ASP (Application Service Provider) 시장을 대체및 확장할 것으로 보이며, 대형 IT 밴더들의 혈전의 장소가 될것이며, 영세한 중소 기업들이 뛰어들기에는 다소 무리가 있을것으로 생각된다. 이미 CRM 기반의 강자인 세일즈포스닷컴 (SalesForce.com)이 버티고 있고, 다양한 기능의 소프트웨어를 사고 팔수 있는 앱익스체인지를 제공한데 이어, Apex라는 새로운 개발툴을 제시함으로써 SaaS 플랫픔 회사로서 변모를 시도하고 있다. 이에 Microsoft사 역시 기존 업계 평균가격의 절반수준으로 Dynamic CRM 서비스를 제공함으로써 맞대응하고 있다.

2) Web 2.0을 기반으로한 일반 사용자들을 위한 SaaS실제 우리가 관심을 가져아 하는 분은 진입 장벽이 낮은 일반 사용자(B2C)를 위한 Web 2.0 기반의 SaaS 이다. Web 2.0 이 제공하는 접근성을 기반으로 마치 PC 에서 수많은 Utility 를 쏟아낸 것처럼 인터넷에 수많은 SaaS 어플리케이션이 쏟아져 나올 것이다. 위에서 언급한 Windows Live Service 와 Google 이 제공하는 서비스가 여기에 해당되어진다.

3) 전통적인 Software 들과 Service 의 조합Microsoft 가 주도적으로 밀고 있는 Software + Service 의 전략의 핵심은 Web 2.0 기반의SaaS 와 동시에 기존 Software 들과 Service 를 결합하는 방식을 취하고 있다.우리들이 쉽게 사용하는 Office 제품군에 CRM 과 같은 서비스들을 결합함으로써, 마치 Local 에 설치된 프로그램처럼 친숙한 인터페이스로 쉽게 사용할수 있다.

UXUX 와 와 SaaS SaaS 조합조합, , 그리고 시장 개방으로 그리고 시장 개방으로 GoogleGoogle 에게 반격을 가하는 에게 반격을 가하는 ITIT 밴더들밴더들Microsoft, Sun 과 같은 회사들은 Google 의 성장이 그리 달갑지는 않을 것이다. Google 의 검색엔진은 휼룡한 성능, 사용자들의 경험과 선호도가 이미 패턴화 되어 있어서 뺏아오기는 힘들지만 Google 의 Web 플랫폼 기반의 SaaS 독주를 막을 필요가 있다.

그 해답은 무엇일까? 그것은 바로 UX(사용자의 경험을 극대화하는)와 맞춤 서비스에 달려있다.

그림 3. Google Docs 과 Microsoft Word

여러분이 워드 프로세서를 사용해야 된다면 Microsoft Word 또는 Google Docs 을 사용할수 있을 것이다. 여러분은 어떠한 것을 사용하고 있는가? 그건 여러분의 상황에 따라서 결정되어 진다.

Page 6: 기고 원문 - WordPress.com — Get a Free Blog Here

여러분의 PC 에 Microsoft Word 가 깔려 있다면 당연히 Word 를 사용할 것이다. Google Docs 보다 다양한 기능을 제공하고, 이미 여러번 사용한 경험이 있기 때문에 쉽게 컨트롤 할수 있기 때문이다.

하지만 여러분이 잦은 출장으로 인해 이동이 잦고 다양한 PC 를 사용해야 되는 경우라면 모든 컴퓨터에는 Microsoft Word 가 깔려있나 걱정해야 될 것이고, USB 와 같은 저장 매체를 들고 다녀야 하는 번거로움 때문에 기능성보다는 어디서나 쉽게 접근할 수 있는 Google Docs 을 선호하게 될 것이다. 이것은 접근성과 기능성의 대결이라고 할수 있다.

이러한 것을 간파한 기존 IT 밴더들은 SOA 시장의 성장을 그대로 이어갈수도 있으면서, Google 의 Web 플랫폼 독주을 견재하기 위해 RIA 기반의 UX 기술과 함께 더욱 세련된 SaaS 를 누구나 만들수 있는 환경을 제공하고 있다. 이것은 웹플랫폼 개방성을 이용한 예이다. 실례로 오픈마루에서 만든 Springnote(http://www.springnote.com)는 Google Docs 보다 훨씬 다양하고 강력한 기능을 제공한다. 만약 Springnote 를 아는 사람이 굳이 Google Docs 를 사용할까? 웹은 이렇게 누구나 쉽게 접근할수 있는 개방성으로 인해 누구나 쉽게 새로운 신규 서비스를 만들어 진입할 수 있다. 기존 밴더들은 RIA 를 쉽게 제공할 수 있는 플랫폼을 제공함으로써 누구나 SaaS 시장에 쉽게 들어올 수 있게 진입 장벽을 낮춘다면 구글의 검색 기술은 따라잡지 못하더라도 SaaS 시장의 확장을 막을수 있을 것이다. 그렇기 때문에 기존 IT 밴더들은 UX 플랫폼(Microsoft 의 WPF 와 Silverlight , Adobe

의 AIR 와 Flex3, Sun 의 JavaFX)을 경쟁적으로 제공하고 있다.

그리고 추후 언급할 SaaS 의 장점인 특정 회사나 개인에게 제공하는 맞춤형 서비스를 제공할수 있는 구조(Customizaton)를 가지고 있다. 먼저 고객의 유형을 파악해 보자.

그림 4. 일반인들의 다양한 구매 유형

위 그림은 일반인들의 제품을 구매하는 유형을 나타낸 것이다. 이노베이터(Innovator)와 얼리어뎁터(Early Adapter)로 대변되는 젊은 이 같은 경우는 새로운 신제품과 기능에 열광하는 사람들이다.

집에 MP3 Player 가 있더라도, 마음에 드는 제품이 나오면 언제든지 구입하는 기능과 디자인에 열광하는 고개들이다. 반면에 오른쪽에는 중장년층으로 대변되는 안정성과 가격등을 고려하는 합리적인 구매를 하는 유형들이 있다. 문제는 이 두 계층간에 큰 간극 (Chasm)이 존재한다는 것이다.

그래서 제품을 만들때 어느 쪽으 타겟으로 해서 만들것인지 초기부 결정한후 설계해야 한다. 흔히 말해 베스트 셀러나 밀리언 셀러로 불리는 대박 제품들은 이 간극을 무너뜨리고 다양한 계층들에게 빨리는 제품을 말한다. 지금은 휴대폰 업게 3 위로 밀려났지만 불과 몇년전만 해도 Motorola 의

Page 7: 기고 원문 - WordPress.com — Get a Free Blog Here

Lazer 시리즈의 인기는 선풍적이었다. 젊은 세대는 섹시한 여성이 힘들게 청바지를 입은 다음 아주 쉽게 뒷주머니에 Lazer 휴대폰을 넣는 광고를 보고 Lazer 에 슬립함에 감탄을 했고, 중장년 세대는 큼직큼직한 버튼과 Tree UI 에 매력을 느껴 구입함으로써 두 계층에게 꾸준히 팔린것이 그 원인이 되었다.

Lazer 처럼 하나의 제품이 모든 고객을 만족시킬수 있다면 좋겠지만 제일 좋은 해답은 개별 고객들에게 특화된 서비스를 제공하는 것이 중요하다. 이것에 대한 교훈은 CSS[4] 라는 것을 통해서 이미 대다수가 알고 있을 것이다.

그림 5. CSS의 교훈

위 그림처럼 동일한 페이지라도 감수성이 풍부한 사람에게는 편지와 같은 첫번째 형태로,

신세대에게는 활기찬 모습이 느껴지는 두번째 형태로, 중후한 느낌을 좋아하는 사람에게는 세번째 형태로 정보를 제공한다면 사용자들을 쉽게 공략할수 있을 것이다. 쇼핑몰 같은 경우 입력받은 개인 선호도, 연령, 구매 패턴을 파악하여 특화된 형태의 페이지를 제공한다면 고객과 판매자 모두 만족하는 시스템이 될것이다.

이러한 개별 맞춤화의 중요성을 파악한 Microsoft 는 Multi User Interface 를 쉽게 지원하기 위해 Metadata 기반의 XAML(WPF)을 만들었다. 이것은 초창기 부터 개발자와 디자이너간의 협업을 쉽게 할수 있는 SaaS 를 염두한 설계라고 해도 과언이 아니다.

(http://www.valil.com/winfx/Valil.Chess.WinFX.xbap)에 가면 좋은 예가 있으니 방문해 보길 바란다.

지금까지 SaaS 를 탄생배경과 역사(숨겨져 있는 대형 밴더들간의 플랫폼 전쟁) 이야기가 들을만했는지 모르겠다. 이제부터 기술적인 관점으로 SaaS Application 을 만들기 위해 어떠한 면들을 고려해야 할지 언급하겠다.

지금까지 SaaS 를 탄생배경과 역사(숨겨져 있는 대형 밴더들간의 플랫폼 전쟁) 이야기가 들을만했는지 모르겠다. 이제부터 기술적인 관점으로 SaaS Application 을 만들기 위해 어떠한 면들을 고려해야 할지 언급하겠다.

성공적인성공적인 SaaS SaaS 시스템을 만들기 위해서 만나야 되는 세가지 이슈시스템을 만들기 위해서 만나야 되는 세가지 이슈..

SaaS를 기존의 ASP(Application Service Provider) 많은 비교를 하게 되는데 그 중 가장 핵심이 되는 Keyword가 Multi Tenant Architecture이다.

Page 8: 기고 원문 - WordPress.com — Get a Free Blog Here

그림 6. ASP와 SaaS의 차이

기존의 ASP 업체는 SanDisk와 같이 각 고객( 제조업체)들의 요구 사항에 맞쳐 다양한 Memory Card(Micro SD, MiniSD, SD, XD, CF Card, MemoryStick)를 다 만들듯이 고객 개개인 별로 특화된 서비스들을 다 만들어야 했다. 하지만 그림과 같이 SanDisk는 하나의 제품에 다양한 고객의 요구사항을 수용할수 있게 여러개의 기능을 제공함으로써 제품 생산 라인이 하나로 줄게 되었다. 바로 이것이 Multi-Tenet Architecture의 좋은 예이다. 하나의 인스턴스 (Single Instance)만으로 다양한 고객의 요구사항(Multi-Tenant)을 만족하는 것이 핵심이다. 많은 사람들이 이것이 SaaS의 장점이라고 한다. 하지만 시스템을 구축하는 아키텍트나 개발자 입장에서 새로운 요구사항이 발생해도 이것을 쉽게 수용할 수 있는 형태로 소프트웨어를 만드는 것이 과연 쉬운 일 이라고 할수 있을까?

그림 7. SaaS 시스템을 구축할때 만나는 머리가 세개인 드래곤

만약 여러분이 SaaS Application을 만든다면 세개의 머리를 가진 괴물[5]과 만나게 될것이다.

Page 9: 기고 원문 - WordPress.com — Get a Free Blog Here

1) Multi-Tenant Efficiency (Multi-Tenant 구조를 지원하면서 효율성을 보장하는 법)SaaS 를 제공할때 얻을수 있는 또 하나의 장점은 long tail 원칙에 의거해 잠재적인 고객을 끌어낼수 있다는 점이다. 파레토의 법칙, 즉 2대 8의 법칙 (예를 들어 20%의 고객의 백화점 전체 매출의 80%에 해당하는 만큼 쇼핑하는 현상)의 의거해

2) Customization (고객의 특화된 요구사항에 따라 시스템을 구축하는 법)3) Scalability (확장성 – 사용자 수의 증대를 대응하기 위해 확장성있게 구축하는 법)

Multi-tenant efficiency:

One of the appealing factor of offering software as a service is to be attractive to the "long tail", i.e. the small and medium businesses, small shops in China, India etc. In order to successfully do so, one has to lower the barrier to entry for these new software buyers. A subscription model (as opposed to a up front perpetual license) helps, but from an architecture perspective to lower the barrier, it is critical to maximize the infrastructure (hardware, database, etc.) Multi-tenant efficiency is the principle that promote the optimization of the underlying infrastructure.  

Customization (while being multi tenant efficient):

Being multi-tenant efficient often implies running a single instance of the code (or a pool of identical code instances); in this situation, customization cannot be done through custom code. Customization is performed via metadata and a metadata service. As part of the architecture, a design time (authoring) experience is needed for the creation of the metadata and a runtime engine (metadata service) is required for the application to behave according to the metadata.

Scale:

Typical "on premise" solutions are designed for several hundreds to a few thousand concurrent users. If now, as part of software as a service, you start hosting your software for all your customers then the number of concurrent clients will grow dramatically (e.g. 1000 customers with each on average 1000 concurrent users, could lead to a potential of 1'000'000 concurrent users). The application architecture has to take this into account.

세개의 머리는 Multi Tenant 구조를 지원하면서 효율성 보장하는 법, 사용자 수의 증대에 대응할 수 있는 확장성 그리고 고객의 특화된 요구사항에 따라 시스템을 구축 (Customization) 하는 문제이다. 보기만 해도 답답한 위 문제들을 어떻게 해야 할까? 필자의 부족한 지식을 공유하도록 하겠다. 필자 역시 SaaS Application을 구축한 적이 없는 이론으로만 무장되어 있는 부족한 자이다. 수박 겉핡기로 아는 지식이지만 부족한 지식이 씨앗이 되어 필자보다 뛰어난 분들이 세일즈포스닷컴 못지않는 SaaS 시스템 구축하고 그 지식을 공유해 주길 바란다.

SaaS 구축의 핵심 키워드! Metadata 지향적인 설계

Page 10: 기고 원문 - WordPress.com — Get a Free Blog Here

---------------------------------------

참고 자료참고 자료[1] “Turning Software into a Service” : Mark Turner, David Budgen, Pearl Brereton: IEEE Computer 36(10): 38-44 (2003)

[2] A Practical application of SOA :http://www.ibm.com/developerworks/webservices/library/ws-soa-practical/?S_TACT=105AGX55&S_CMP=content

[3] Windows Live vs. Google Pack: http://blog.tmcnet.com/voip-crm/voip-crm/gadgetry-and-geekery/windows-live-vs-google-pack.asp

[4] CSS Zen Garden : http://www.csszengarden.com/

[5] “SaaS Architecture”, Gianpaolo’s blog, http://blogs.msdn.com/gianpaolo/archive/2006/10/01/SaaS-Architectures.aspx

7. James C. Hu, Douglas Schmidt, 『JAWS: A Framework for High-Performance Web

Servers, Domain-Specific Application Frameworks: Frameworks Experience By Industry』, John Wiley & Sons, October, 1999.

8. Pattern 을 이용한 고성능 웹서버 만들기, 손영수 : blog.naver.com/only2u4u/120037867234

9. Eric Gamma et al, 『Design Patterns : Elements of Reusable Object Oriented

Software』 , Addison Wesley-----------------------------------