'2010/09'에 해당되는 글 3건

  1. 2010.09.21 SaaS 와 Cloud Computing 3
  2. 2010.09.10 S/W의 사용성과 속도를 둘러싼 잔상 3
  3. 2010.09.09 Path way to real time mobile cloud 1


SaaS 와  Cloud  Computing



9월 중순 미국 샌프란시스코에서 개최된 오라클 오픈월드에서 오라 CEO인 래리 엘리슨은  아마존의 클라우드 컴퓨팅에 대한 정의에는 동의하나 Salesforce 에는 동의하지 못한다고  말했다.  CRM 분야에서 Salesforce가  SaaS 모델로  오라클의 기업용 CRM 시장에서 치열하게 경쟁하고 있는 것을 보면   그의  발언이 다소 정치고 영업적인 발언이라는 생각이 들 긴 하지만 이 기회에 SaaS와 Cloud 컴퓨팅에  대한  오해를 정리할 필요는 분명 있어 보인다.


필자는 과거 2000년 초 닷컴 버블 시절 그룹웨어 서비스를 ASP(Application Service Provider) 모델로 개발하여 서비스를 한 적이 있었다. 당시는 온라인으로 모든  것이 가능하다고 착각하던 시기였기 때문에 기존에 패키지나 인트라넷  형태로  구축. 제공되던  그룹웨어를  온라인으로  제공하고  월정액으로  받는 다는 모델은 많은 투자가와 벤터캐피털 등에게  관심을 끌었다.  그  결과 , 많은  투자도  유치했으며  무사히 서비스를  개발할 수 있었다.

그런데  당시 중요한 문제가 하나 숨어 있었다. 바로  다름 아니라  여러  기업  사용자들이  하나의  그룹웨어 서버를 공유하지 못했기 때문에 사용자가 증가할 수록 장비 투자를 계속해야 만 했었다.  특히, 당시 서버 장비는 고가의 선마이크로시스템즈 장비였고 소프트웨어 역시 오라클 등 고가의  소프트웨어를  사용할 수 밖에 없는 환경이었기 때문에 실제 투자 받은 자금 중 많은 부분을 장비 구매에 사용할 수 밖에 없었다.
또한 사용자의 개별적인 요구사항에 맞춰 서비스를 유연하게 변경하는 것도 불가능하였다. 이처럼 결국 사용자가 증가해도 손익분기점을 맞출 수 있는 인프라와 구조를 갖출 수 없었다.

결국 ASP 모델은  서비스의 구조적인 유연성과 인프라의 유연성 부족에서 실패할 수 밖에 없었다.

사용자 삽입 이미지

청계산 매봉에서 바라 본 구름

이후 필자는 2005년 다시 한번 유사한 모델의 서비스를 개발할 기회가 있었다.
씽크프리 오피스였다. 씽크프리 오피스는 기존에 데스크탑 패키지로 판매되던 워드 프로세스, 스프레드시트, 프리젠테이션 오피스를 온라인 웹 서비스를 통해  서비스로 판매하는 것이었다. 이 때 , 사람들은 이러한 서비스  모델을 ASP와 달리  SaaS(Software As A Service) 라고  부르기  시작했고  주요한 특징은 웹 브라우져만 있어면 언제 어디서나 인터넷을 통해 서비스를 이용하며 사용한 만큼 비용을 지불(Pay as you go)하는 것이다.

또한  얼마 지나지  않아  아마존 EC2 처럼 데이타 센타내에 하드웨어와 소프트웨어, 네트웍  등  시스템 자원을 인터넷을 통해 언제 어디서나 사용하고 사용한 만큼 비용을 지불하는 클라우드 컴퓨팅이 나타났다.  혹자는 이를 IaaS(Infrastructure As A Service)라고도 부른다.

그렇다면 이 두 모델 사이의 관계를 어떻게 될까? 먼저 결론부터 말하면 두 모델은 상호 보완적인 개념이며 다른 개념이다.  다시 말해, SaaS 제공자는 Cloud Computing 제공자의 Cloud 서비스의  사용자로서  이를 이용하여 SaaS 서비스를 제공한다. 즉, SaaS 개발자는 Cloud 서비스의 주요 사용자인 셈이다.  실제, 필자의 경우에도 씽크프리 오피스를 개발하던 시절에 아마존 EC2에서 제공하는 EC2와 S3 스토리지 클라우드 서비스를 이용하여 서비스를 하였으며 , 현재  넷플릭스 , 워싱턴포스트 , Zynga의 경우에도 현재  아마존 EC2를 사용하여 서비스를 제공하고 있다.

물론 이 두 모델 사이에는 인터넷을 통해 언제 어디서나 서비스를 제공받고 사용한 만큼 비용을 지불한다는 기존의 소프트웨어와 하드웨어를 판매하던 모델과는 완전히 다른 비지니스 개념을 사용한다는 공통점이 있다.

2008/12/24 - [Conference] - 클라우드 컴퓨팅 웍셥 발표 후기
2008/12/25 - [SaaS/Cloud] - SaaS(Cloud) Directory
2009/03/31 - [SaaS/Cloud] - Adsense for image
2009/03/31 - [SaaS/Cloud] - Amazon S3 현황
2009/04/13 - [SaaS/Cloud] - Context Cloud Computing
2009/04/30 - [SaaS/Cloud] - 클라우드 기반의 서비스 개발 환경 - Aptana
2009/05/04 - [SaaS/Cloud] - Above the Cloud
2009/11/10 - [SaaS/Cloud] - 대형SI업체들의 클라우드 사업에 대한 단상


이렇듯 SaaS/Cloud Computing 모델을 사용하는 것은 과거 ASP 모델이  안고 있던  서비스의  구조적인 유연성과 시스템 인프라의 유연성 문제를 일시에 해결해 준다. 구조적으로  SaaS 서비스는  ASP와  달리 하나의 서버에서 복 수 사용자를 최대한 처리할 수 있는 멀티터넌트 구조(Multi-tenant Architecture) 로 설계되고 서비스 된다. 이 때, 만약 하나의 서버에서  처리할 수 있는 최대량에 도달하게 되면 SaaS 서버는 증설돼야 한다. 이 때, 클라우드는 서버를 자동으로 증설하여 사용자가 증가하더라도 유연하게 대처할 수 있도록 해준다.  이러한 퍼블릭 클라우드 컴퓨팅을 제공하는 업체만 해도 아마존의 EC2를 필두로  Rackspace Cloud , GoGrid , FlexiScale , Microsoft Azure , Eucalyptus , Skytap 같은 전문 업체를  비롯해  MS의  Azure, 구글의 앱엔진  등 많은  퍼블릭 클라우드가  존재하여  이들 클라우드 기반하에 많은 SaaS 서비스가  제공되고 있다.

이렇듯 다양한 클라우드를 제대로 사용하여 서비스를 개발하고 운영하는 데에는 많은 지혜가 필요하다.

먼저  SaaS 개발시 특정 클라우드 인프라에 락인(Lock-in)되지 않도록 개발해야 한다.  다시 말해,  해당 SaaS를 다른 클라우드나 자체 프라이빗 클라우드(Private Cloud)로  이관하더라도  문제가 없도록 개발해야 한다.

- Cloud Computing이 유용한 경우는 초기 서비스를 런칭할 경우이다.

일반적으로 해당 서비스가 성공할지 실패할지 모르는 상황에서 무조건 장비에 투자하는 것은 바람직한 의사결정은 아니다. 그러나 해당 서비스가 성공하게 되면 여러가지 이유때문에 퍼블릭 클라우드를 이용하지 못할 수 있다. 가령, 고객의 요청에 따라 클라우드 컴퓨팅 업체에서 제공하는 SLA(System Level Agreement)보다 높은 SLA를 제공해야 할 경우 자체 구축한 프라이빗 클라우즈로 구축하고 옮겨야 한다. 이러한 상황에서 해당 서비스가 특정 클라우드에 의존적이라면 큰 낭패를 볼 수 있다.

- 신규 서비스 런칭시 적극적으로  퍼블릭 클라우드를 활용하는 것이 좋다.

신규 서비스는 실제 어느 정도의 사용자가 서비스에 가입하고 이용할 지 알 수가 없다. 아무리 무릎팍 도사라 할 지 라도 모른다. 따라서 이런 경우 클라우드를  가입하면 사용자가  급격하게 증가하더라고  이에 대해 적극적으로 대처할 수 있다. 실제 Zynga 경우 Farmville을 처음  2달 동안 일일 액티브 사용자가  20만 명 일 정도로  성공적으로 오픈하였다. 그 후 26주 동안 주당  1백만  사용자씩  증가하여  현재  월간  7천만  액티브  사용자가  사용하는 서비스로 성장하였다. 이러한  가파른  사용자  증가에도 불구하고 큰 문제없이 대처할 수 있었던 이유가 바로 EC2  클라우드를  사용하여  동적으로  서버의  용량을  증가시켜  대처했기 때문이다. 참고로 Zynga는현재 약 12,000개의 아마존  EC2 인스턴스를 사용중이라고 알려져 있다.

오라클, IBM, HP가 리드하고 있는 프라이빗 클라우드와  아마존 , MS,  구글  그리고 전문 업체 들이
리드하고 있는 퍼블릭 클라우드의 경쟁과 이를 통한 클라우드 시장의 확산은 필연적으로 SaaS 서비스의 확산을 가져올 것이다. 특히, 사용자 입장에서  이러한 퍼블릭과 프라이빗 클라우드의 전략적인 사용은 큰 경제적인 이점을 분명히 안겨줄 것이다.

[본 글은 ZDNet 컬럼에 기고한 글 입니다. ]

Posted by 박재현
,

S/W의 사용성과 속도를 둘러싼 잔상

만약 여러분이 어떤 제품의 개발 책임자라고 상상해 보자!

불행하게도 이미 경쟁 제품은 시장에서 발표가 되어 선풍적인 인기를 끌고 시장을 잠식하고 있는 상태이다. 경쟁 상대가 새로운 제품을 출시하기 전까지 여러분은 경쟁 제품을 출시해야 만 한다. 주어진 시간은 턱없이 짧고 준비도 완벽하지는 않다. 품질을 고민하면 개발 기간은 턱없이 부족하고 , 시장을 생각하면 무리수를 두더라고 짧은 기간 내에 제품 개발을 완성해야 한다.

아마 이러한 상황은 국내에서 작던 크던 다양한 규모의 개발 조직을 이끄는 많은 분들이 겪는 어려움일 것이다. 물론 정답이 있는 것은 아니지만 분명 국내와 국외의 문화와 정서는 무척 다른 것 같다. 필자의 경험상 국내의 경우 품질 보다는 빠른 상품 출시를 위한 속도를 더 중요하게 생각한다. 여러 이유가 있겠지만 사회.문화적으로 과거 압축 성장을 통해 한강의 기적이라는 경제 성장을 경험했던 기성세대가 구축한 기업들 입장에서 시간이라는 변수 다시 말해 속도전은 의지를 통해 충분히 극복할 수 있다 라는 환상이 가장 큰 이유가 아닐 까 싶다.

과거 2년 전 쯤 , 고려대학교 장세진 교수 의 "삼성과 소니" 라는 책을 읽은 적이 있다. 이 책을 보면 과거 삼성전자의 윤종용 부회장이 주창한 디지털 사시미 전략이라는 것이 눈에 띈다. 디지털 사시미 전략은 한 마디로 “사시미에서 휴대폰에 이르기까지 모든 일상제화에 공통적으로 적용되는 핵심으로 아무리 비싼 사시미라도 시간이 지나면 가격이 떨어지듯이 디지털 제품의 재고는 치명적이기 때문에 스피드가 모든 것이고 가장 중요한 것”이라는 얘기다. 제품 생산에서 부터 판매에 이르기까지 속도를 강조한 전략이다.

그렇다면 온라인 서비스나 소프트웨어 제품에 있어서 스피드는 과연 어떤 요소일까? 특히, 품질과는 어떠한 상관 관계가 있을까?

물론 다른 제품과 마찬가지로 소프트웨어와 서비스에게 품질과 스피드는 모두 중요한 경쟁 요소이다. 아무리 잘 만든 소프트웨어도 이미 다른 제품이 시장을 선점했다면 시장 진입시 어려울 수 밖에 없다. 따라서 치열한 경쟁을 위해서는 속도전을 펼칠 수 밖에 없다. ( 물론 이러한 소프트웨어의 속도전 이면에는 품질 문제와 개발자의 희생이라는 문제가 숨어 있을 수 밖에 없다. 마치 과거 한강의 기적이라는 압축 성장의 이 면에 많은 사람들의 희생이 있었듯이 말이다. )

그러나 이러한 속도전과 더불어 가장 중요한 부분은 품질 문제이다. 아무리 빨리 시장에 서비스와 제품을 출시해도 품질 상에 문제가 있다면 결코 성공할 수 없다. 그렇다면 소프트웨어와 서비스를 개발하는 데 있어 어떻게 품질을 만족 시켜 내면서 속도전을 펼칠 수 있을까? 특히, 소프트웨어와 서비스에 있어 품질이라는 것은 단순히 버그나 오류같은 기능적 결험 수준만을 말하는 것이 아니다. 기능적 품질외에 제품의 사용성(Usability)이라는 아주 중요한 것을 포함하고 있다. 사용성은 사용자 입장에서 원하는 기능과 서비스를 손쉽게 찾아서 활용할 수 있도록 제공하는 가를 말한다.

일반적으로 소프트웨어의 품질보증 과정에서 사용성 테스트(Usability Test)는 개발 후 임의의 사용자들에게 특정 작업을 수행하게 하면서 이를 녹화하거나 기록해 문제점을 찾은 후 사용성을 개선한다. 또한 기능상의 버그는 개발자의 1차 단위 테스트 후 빌드가 나오면 이를 전문 품질관리팀을 통해 검사한 후 일정 수준까지 반복적으로 품질을 개선한다. 이러한 복잡한 과정들과 많은 비용과 시간을 투자한 후 제품을 출시한다.

최근 들어서는 이러한 품질과 사용성 테스트에도 변화가 있다. 바로 알파 공개, 베타 공개(테스트)란 형태를 통해 공개적으로 진행되고 있는 것이다. 최초 소수의 매니아를 대상으로 한 알파 단계를 통해 해당 서비스의 사용성과 품질을 향상 시킨 후, 이를 베타 수준으로 공개한다. 이 후, 주 단위나 심지어 일 단위로 품질과 사용성을 개선하여 사용자에게 최적화된 서비스와 소프트웨어를 제공한다.

스피드와 품질은 이러한 소프트웨어 사업의 숨은 경쟁력이다. 현 상황에서 스피드가 늦은 소프트웨어와 서비스는 절대 성공할 수 없다. 경쟁없는 상황은 상상할 수 없다. 경쟁이야 말로 발전의 원동력이다. 경쟁을 가장 잘 활용하고 있는 분야가 바로 스포츠다. 축구나 야구에서 특정 포지션의 주전 경쟁은 경쟁하는 사람에게는 피말리는 일이겠지만 전체 팀장 입장에서는 팀원의 능력을 배가 할 수 있는 가장 적극적인 방법이다.

물론, 이 과정을 통해 경쟁하는 사람도 발전을 한다. 한 사람의 페이스가 떨어지거나 다른 사람이 치고 올라오면 기회를 잃게 된다. 이 과정에서 중요한 것은 바로 스피드다. 빠른 시간내에 자신의 능력을 보여주어야만 경기에 출전을 할 수 있다. 출전 기회를 못 잡으면 경쟁에서 멀어지게 되고 결국은 낙오하게 된다.마찬가지로 온라인 서비스나 소프트웨어 분야에서도 마찬가지다. 경쟁업체보다 빠르고 신속하게 제품과 서비스를 업데이트 해야 하며, 신규 기능과 서비스를 지속적으로 보여줘야 한다. 보여주지 못한다면 결국은 낙오하게 된다.

서비스와 소프트웨어 개발에 있어 시간을 줄일 수 있는 방법에 대해 고민해 보자. 물론 시간을 줄인다고 해서 품질까지 떨어뜨린 다는 것은 절대 아니다. 품질과 사용자의 관심을 유지하는 것이 바로 스피드의 효과이다.

- 초기 지나친 인프라 구축 및 관리에 드는 비용과 시간을 줄여야 한다.

일반적으로 하나의 서비스를 개발하고 운영하기 위해서는 하드웨어 구매/설치/셋팅/튜닝, 개발 환경 셋팅, 서비스 오픈 후 시스템 모니터링 환경 구축,장애 조치 등 많은 인프라에 대한 투자가 필요하고 이를 안정시키는 데 많은 시간이 소요된다.

그러나 이렇게 많은 시간과 자본을 투자하는 것은 바보짓이다. 제대로된 S/W 아키텍쳐와 개발 플랫폼을 사용한다면 개발과 운영에 있어 큰 문제가 발생하지 않으며 이후 시스템을 확장할 때도 손쉽게 할 수 있다. 이런 사고는 과거 2000년 초반 닷컴 버블로 많은 투자 자금을 갖고 있었을 때의 이야기이다. 닷컴 버블 당시도 실제 돈을 번 업체는 썬마이크로시스템즈같은 하드웨어 판매업체와 망한 닷컴 회사들의 장비를 인수하여 중고로 매매하는 회사들이었다.

따라서 개발 환경과 운영 환경에 드는 비용과 시간을 최소화하는 것이 유리하다. 냉정하게 생각해 보면 성공 여부를 판단할 수 없는 제품과 서비스에 막대한 초기 투자를 하는 것은 어리석은 일이다. 아울러 일단 개발된 서비스는 서비스가 가능한 범위내에서 단계별(알파와 베타)오픈을 통해 안정화와 검증을 통해 단계별로 인트라에 투자하는 것도 방법이다.

현재 가장 좋은 방법은 바로 클라우드 컴퓨팅( Cloud Computing )을 이용하여 서비스를 구축하는 것이다. 아마존의 EC2 같은 IaaS(Infrastructure As A Service)나 구글 앱스 서비스 같은 PaaS(Platform As A Service) 을 이용하면 많은 투자를 하지 않더라도 안정적인 플랫폼에 서비스 등을 구축할 수 있다.

- 오픈 소스를 적극 활용한다.

사용자 삽입 이미지
제품 개발시 반드시 선행 작업으로 사용가능한 오픈소스와 이에 대한 사용 정책을 수립하는 것이 좋다. 경험적으로 볼 때 개발하고자 하는 제품에 필요한 많은 기반 라이브러리와 프래임웍 중 상당수는 오픈소스를 통해 얻을 수 있다.

오픈소스 활용시 반드시 점검해야 할 점은 첫째 , 오픈소스 커뮤니티의 활동 상황을 점검해야 한다. 해당 오픈소스 솔루션이 필요하더라도 커뮤니티를 통해 적극적으로 업데이트 되지 못한다면 현재 기능적으로 조금 부족하더라도 활성화된 오픈소스 솔루션을 선택하는 게 안정적이다. 또한 오픈소스의 경우 각기 다른 라이선스 정책을 갖고 있기에 패키지로 개발하여 배포할 경우와 서비스로 할 경우 등에 맞춰 미리 라이선스 문제를 검토하고 예상되는 문제를 해결해야 한다.

- 알파 및 베타 오픈을 적극 활용하며 개발의 라이프사이클을 줄여야 한다.

결코 한번에 완벽한 서비스와 패키지를 개발할 수 없다. 완성도를 높이기 위해서는 당연 시간이 필요하다. 이 때, 시간을 최소화하기 위해 단계별로 서비스를 오픈하면서 사용자의 불편함과 완성도를 높여야 한다.

가장 좋은 방법은 알파 오픈시 최소한의 얼리 아답터에게 서비스를 공개하고 이들로 부터 냉정한 평가를 받는 것도 좋은 방법이다. 단, 이렇게 얻어진 개선 사항은 최대한 빨리 개선해야 한다. 이런 방법으로 사용자를 확대하면서 서비스를 고도화함으로써 개발 시간을 단축하고 품질을 확보할 수 있다. 패키지도 마찬가지이다.메이저 버전과 마이너 패치 버전을 병렬적으로 수행할 수 있는 팀을 구성하여 운영하는 것도 시간을 줄여 경쟁력을 갖을 수 있는 방법중 하나이다.

- NIN 신드롬을 버려야 한다.

개발자는 누구나 NIH(Not invented here) 신드롬을 갖고 있다.

다시 말해 내가 직접 개발한 것 이외에는 신뢰하지 않는 다는 것을 말한다. 실제 특정 업무를 인수인계 받은 개발자들과 인터뷰를 해보면 이구동성으로 하는 말이 있다. – ” 정말 선임자가 거지 같이 코딩을 했네요. 다시 개발하는 게 낫겠어요”.

필자는 이런 말을 100% 믿지 않는다. 소프트웨어의 특성상 시간이 지날수록 많은 사용자의 요구사항이 반영되고 버그를 수정하는 작업 등을 통해 코드는 보기에 지저분 해 질 수 있다.그러나 이 코드는 그 만큼 버그가 적으며 안정화된 코드이다. 일반적으로 다시 개발된 코드는 같은 시간 만큼의 안정화 기간을 거쳐야 비슷한 품질을 제공하는 수준에 도달한다. 소프트웨어도 사람이 하는 작업이기 때문이다. 물론 그렇기 때문에 많은 편차도 존재한다.

개인적으로는 현재가 있어야 미래도 있다고 생각한다. 필자는 현재 많은 문제를 안고 있는 서비스와 소프트웨어 제품의 책임자들이 경쟁에서 승리하기 위해 현재의 문제 해결을 위해 주력해야 한다고 생각한다. 그것도 가장 스피드 있게. 그래야 미래도 있기 때문이다. 지금까지 언급한 내용이 정답은 아니더라고 소프트웨어와 서비스 개발시 스피드와 경쟁력, 그리고 품질 등에 대해서는 생각해 봐야 한다고 생각한다. 사용자는 기다려주지 않기 때문이다. 더불어 필자는 이러한 모든 작업이 개발자들의 자발적 참여를 전제로 한다고 생각한다. 만일, 개발자들의 비자발적 참여를 전체로 한다면 이 또한 다시 생각해야 할 것이다.

2010/03/21 - [ZDnet 컬럼] - 디바이스와의 대화
2010/04/10 - [ZDnet 컬럼] - 왜 개인용 클라우드를 주목하는 가?
2010/05/26 - [ZDnet 컬럼] - 웹의 관점에서 본 TV 시장의 미래
2010/08/27 - [ZDnet 컬럼] - 자동차에도 서비스 플랫폼이 필요하다.
2010/03/21 - [ZDnet 컬럼] - 디바이스와의 대화

[ 본 글은 ZDNet 컬럼에 기고한 글 입니다. ]




Posted by 박재현
,

스마트폰을 활용하는 데 있어 가장 유용한 서비스 중의 하나는 새로운 정보가 도착하거나 친구나 지인의 변화된 상태 등을 실시간에 알려주는 푸쉬(Push)이다. 이러한 실시간 푸쉬 서비스는 기존 정보의 소비 방식을 찾아가는 서비스에서 찾아오는 서비스로 바꿔 준다. 특히, 모바일 서비스의 경우 사용자가 휴대하고 있는 스마트폰에 새로운 정보와 소식을 푸쉬해 줌으로써 사용자가 일일히 해당 사이트나 어플리케이션을 구동하지 않아도 해당 정보나 상태를 조회할 수 있는 효과를 제공한다. 실제, 이러한 푸쉬 서비스는 SMS, 트윗이나 페이스북 같은 SNS 등 모든 모바일 응용 서비스에 적용되어 유용한 서비스를 제공하고 있다.

현재 안드로이드와 애플 아이폰은 각기 C2DM(Cloud2 Device Messaging) 과 APNS(Apple Push Notification Service)이라는 푸쉬 서비스를 SDK를 통해 제공함으로써 많은 모바일 어플이케이션 개발시 푸쉬 기술을 활용할 수 있도록 해 주고 있다. 본 발표에서는 이러한 푸쉬 기술의 현재와 이에 기반한 모바일 응용 프로그램 개발시 고려해야 할 여러 기술적인 사항들 그리고 푸쉬 기술에 기반한 다양한 응용 서비스들에 대해 살펴본다.


Posted by 박재현
,