'아파치'에 해당되는 글 2건

  1. 2009.04.13 Context Cloud Computing 1
  2. 2008.10.28 서비스 플랫폼 구축을 위한 솔루션은?

Context Cloud Computing

SaaS-Cloud 2009. 4. 13. 00:12

일반적으로 컨텍스트(Context) 기반의 서비스는 서비스가 단순 명료할 수록 유용하다. 가장 일반적으로 알려진 컨텍스트 기반 서비스중의 하나는 아마존의 추천 서비스일 것이다. 해당 사용자의 구매 패턴과 해당 사용자와 유사한 사용자 군의 패턴을 분석하여 유사한 컨텐트를 추천한다. 가령, 요가를 구매하는 사용자에게 분석된 결과를 바탕으로 골프 요가나 스포츠 댄스 같은 유사한 컨텐트를 추천하는 것이다. 지금에서야 이러한 기능이 쇼핑몰 등에서 일반화되었지만 과거 닷컴 버블 시절 이러한 추천 시스템(recommendation system) 이 수천만 달러에 거래될 정도로 고가였었다. 2000초 당시 주로 사용되었던 기술은 Collaboration Filtering이 주요한 것이었는 데 필자가 운영하된 회사의 주요 개발자를 S모 그룹의 OK모 회사에서 스카웃(?)회사 별도의 회사를 설립해서 수백만불을 들이지 않고도 이러한 기능을 사용하기도 했었다. 대기업이 더 무섭다.^-^

쇼핑몰에서의 추천엔진외에도 다양한 컨텍스트 알고리즘을 사용하여 데이타를 분석하여 활용하는 데 이를 데이타 마이닝이라고도 한다. 이 기술을 사용하여 대용량의 데이타에서 다양한 고객을 분석하고 이에 기반한 서비스를 개발하기도 한다.  이러한 컨텍스트 기술들은 오래전 부터 연구.개발되어 오던 알고리즘들을 조금씩 변형하거나 혼합하여 사용되어져 왔다. 실제 그 기술 자체는 아주 새로운 것은 아니다. 그러나 이러한 기술을 어떤 분야에 어떻게 사용하는 가에 따라 다른 결과를 얻을 수 있기 때문에 그 활용가능성은 아주 무궁무진하다 할 수 있다. 가령, 모바일 디바이스의 사용 패턴을 분석하여 해당 패턴에 기반한 서비스를 추천해 줄 수도 있을 것이다.

그러나 실제 이러한 컨텐트스 기반 서비스는 분석하기 위한 많은 데이타와 분석을 위한 다양한 알고리즘, 컴퓨팅 파워 등을 고려해야 한다. 한마디로 많은 투자비용이 발생한다. 가령, 과거 P모 제철소의 경우 품질관리와 불량율 관리 등을 위해 공정상에 수많은 센서를 두고 실시간에 수집된 데이타를 분석.가공하여 품질을 관리하고 정을 개선하는 등에 사용한다. 엄청난 양의 데이타를 관리해야 만 하는 것이다. 이러한 서비스를 소규모의 기업이나 개인 차원에서 적용하는 것은 어렵다. 만일 이러한 기능을 서비스 차원으로 이용할 수 있다면 아주 효율적일 것이다. 이러한 컨텍스 클라우드 서비스 또한 클라우드 분야에서 각광받을 분야가 아닌가 싶다. 이러한 컨텍스트 클라우드 서비스르 구축하기 위해서는 다음과 같은 요구사항이 해결돼야 한다.

첫째, 컨텍스트 알고리즘과 이를 손쉽게 사용하기 위한 인터페이스와 API를 제공해야 한다.
둘째, 컨텍스트 알고리즘을 수행후 결과를 얻기 위해서는 많은 컴퓨팅 파워와 리소스를 필요로한다. 특히, 이러한 컨텍스트를 서비스로 공유하기 위해서는 이를 위한 스토리지와 대용량 컴퓨팅 파워가 필수적으로 고려돼야 한다.

이러한 부분을 손쉽게(?)  구현할 수 있을까?

사용자 삽입 이미지
먼저 알고리즘을 새로 개발하기 위해서는 많은 노력이 필요하다. 그러나 이미 해당 알고리즘은 오래전부터 발표되고 공유되던 것으로 웹에서 쉽게 확보할 수 있다. 과거에는 학교나 연구 기관 등에서 기본 알고리즘의 구현체를 주로 사용했었다. 그러나 최근에는 오픈소스로된 안정된 알고리즘을 확보할 수 있다. 최근에 아파치 재단의 검색엔진 프로젝트인 루신에서 대용량 기계 학습 알고리즘 구현체인  아파치 마핫 0.1(Apache Mahout 0.1)을 릴리이즈 했다.

아파치 마핫0.1 에는  clustering, classification, collaborative filtering 과 많은 새로운 알고리즘을 제공하고 있다. 다음은 아파치 마핫1.0 에서 제공하는 기능들이다.

- Collaborative Filtering
- Distributed clustering implementations: k-Means, Fuzzy k-Means, Dirchlet, Mean-Shift and Canopy
- Distributed Naive Bayes and Complementary Naive Bayes classification implementations
- Distributed fitness function implementation for the Watchmaker evolutionary programming library

이들 기능에 기반하여 원하는 형태의 API와 인터페이스를 추가적으로 개발하는 것이 필요할 것이다. 컨텍스트 알고리즘을 실제 응용하는 것은 아주 어렵기 때문이다. 과거 필자도 고가의 IBM의 인텔리전트 마이너라는 마이닝 툴을 사용하여 H백화점의 고객 분석 프로젝트를 수행했던 적이 있었다. 실제 그래픽 툴을 사용함에도 불구하고 무척 사용하기가 어렵고 결과를 해석.적용하기가 힘들었다.

일단 이러한 기본 구현 부분을 확보했다면 이들을 실행할 인프라를 갖추어야 한다. 컨텍스트 서비스는  대용량 데이타를 분석하기 위해 다양한 계산 알고리즘과 컴퓨팅 파워를 필요한다. 이러한 기본 클라우드 인프라를 기반으로 할 때 안정적인 서비스가 가능하다. 가령, 현재 아파치 마핫 0.1(Apache Mahout 0.1) 은  아파치 하돕상에 구현되었다. 아파치 하돕은 구글이 사용하고 있는 대용량 분산 파일 시스템이다.

무엇인가를 자동화하기 위해서는 자동화를 위한 기반 정보가 있어야 한다. 이러한 정보를 얻기 위해서는 많은 데이타를 수집하고 이를 분석.가공하는 것이 필수적이라 할 수 있다. 과거 이러한 컨텍스트 기반 기술은 많은 적용 비용과 기술 적용시 전문성을 요한다는 점 등에서 보험, 쇼핑 , 대형 포탈 등에서 만 적용이 되었다. 그러나 현재 앞서 소개한 것처럼 오픈소스 컨텐트 기술을 사용하여 컨텍스트 기술을 직접 적용하거나  컨텍스트 서비스라는 새로운 분야를 만들 수도 있을 것이다. 물론 이 과정에서 사업적으로 가장 중요한 것은 경제성이고 이를 위해서는 저렴한 클라우드 서비스를 구축하는 것이라 할 것이다.  누구간 이 서비스를 할 텐데...누가 먼저 할려나..아무래도 기반 인프라가 잘 갖춰진 아마존이 가장 유력하지 않을까 싶다.

Posted by 박재현
,

  서비스 플랫폼 구축을 위한 솔루션은?

새벽에 오랜만에 씩씩거리며 자료를 찾아 보고 정리하는 것 같다^-^.

웹 서비스 플랫폼을 구축할 때 여러분은 어떤 솔루션을 사용할 것인가? 상용 제품 또는 오픈소스. 이 두 대안중 하나를 선택할 때 어떤 기준으로 결정할 것인가? 가격,성능, 그리고 기술지원. 언듯 가격과 성능면에서 보면 오픈소스가 구미에 당겨도 실제 오픈소스 솔루션을 사용한다는 것은 쉽지 않은 결정이다. 왜냐하면 그만큼 오픈소스를 효과적으로 다루는 유능한 개발자가 확보돼야 하기 때문이다. 반대로 이야기하면 기술지원의 문제가 발생하기 때문이다. 그러나 찾아보면 의외로 오픈소스 커뮤니티의 집단지성이 기술지원을 해주고 , 오픈소스 컨설팅 회사와 전문가를 쇼셜 네트웍을 통해 쉽게 만날 수 있다.

현재 성공적으로 서비스를 운영하고 있는 서비스들의 구축 솔루션을 조사해 보았다 - 아마존, 구글, 유투브, 플리커 , 트위터. 이들 업체들이 공통적으로 사용하는 솔루션만 뽑아보면 - Linux , Java , Apache , MySQL ,Memcached 등이 자주 애용된다. 사용제품은 아마존의 DB가 오라클을 사용하고 있는데 아마 상품 DB에 사용되고 SimpleDB서비스에는 MySQL이 사용될 것으로 예상된다.

그리고 아마존 웹 서비스의 API 관리를 위해 Jboss를 사용하고 있는 것이 눈에 띠인다. 아마존의 경우 오픈 API만으로 플랫폼 사업을 하기때문에 오픈 API의 관리와 모니터링용으로 Jboss를 소프트웨어 버스로 이용하는 것으로 보인다.

상황이 이 정도면 오픈소스를 채택하는 데 있어 선입관을 가릴 필요가 없어 보인다. 국내 유력 통신사인 S사를 비롯하여 현재 많은 서비스 회사들이 엄청한 구축 및 유지보수 비용을 줄이기 위해 기존 상용 솔루션을 오픈소스로 전환하고 있다고 한다. 어차피 오픈소스가 피할 수 없는 선택이라면 빠른 도입과 준비야 말로 많은 경쟁력을 확보하는 지름길일 것이다.

마지막으로 첨언하면  기업들은 결사적으로 오픈소스 개발자와 엔지니어를 양성하고 이들에게 좋은 대우를 해주는 것이 바로 IT 관련 비용 절감을 이루는 첫번째 길이라는 사실을 기억하는 것이 좋을 것이다.

1. 아마존
Linux
Oracle
C++
Perl
Mason ( 멀티 에이전트 시뮬레이션 라이브러리)
Java
Jboss ( 서비스 버스 )
Servlets

2. 유튜브
Apache
Python
Linux (SuSe) 
MySQL
psyco(python to C 동적 컴파일러)
lighttpd ( 비디오용 ) 

3. 플리커
PHP
MySQL Shards
Memcached (캐쉬)
Squid ( HTML과 이미지를 위한 리버스 프록시 웹 캐쉬)
Linux (RedHat) Smarty
Perl PEAR (XML 과 Email 파싱용)
ImageMagick(이미지 프로세싱용)
Java(노드 서비스용)
Apache SystemImager (Deployment용)
Ganglia ( 분산 시스템 모니터링)
Sucon ( 손쉬운 Deply를 위해 subversion 레파지토리에 필수적인 시스템 설정 파일들을 저장하기 위해 사용)
Cvsup ( 네트웍상의 파일들을 분산하고 업데이트하기 위해 사용)

4. 구글
Linux
Python, Java, C++

5. 트위터(Twitter)
Ruby on Rails
Erlang
MySQL
Mongrel ( 하이브리드 Ruby/C HTTP 서버 - 작고,빠르고,보안에 중점을 둠)
Munin
Nagios
Google Analytics
AWStats( 실시간 로그 분석용 )
Memcached

'Architecture' 카테고리의 다른 글

IoT 클라우드 레퍼런스 모델  (0) 2014.07.16
Ajax Framewirk Review  (0) 2009.05.02
구글 Gear에 대한 이해를 위한 도움말  (2) 2007.06.09
2007 Web 2.0 korea 발표 후기  (3) 2007.03.29
REST Architecture  (0) 2007.03.25
S/W Development on the Web Platform  (0) 2007.03.25

Posted by 박재현
,