'Google'에 해당되는 글 11건

  1. 2014.08.15 Hive & Pig - 하둡(Hadoop)의 맵리듀스를 보다 편하게~
  2. 2013.07.23 0과 1로 세상을 바꾸는 구글 그 모든 이야기
  3. 2013.02.12 구글 독감 트렌드 분석 - Big Data, Big Insight
  4. 2012.11.21 빅데이터의 확장 배경과 실제 사례들
  5. 2012.04.24 구글 앱 엔진(Google App Engine) 자바 버전 설치 및 프로젝트 생성/실행/배포 ~
  6. 2012.04.06 구글의 증강현실 관련 프로젝트 구글 글래스(Google Glass)
  7. 2011.10.21 구글맵 javascript API v3에 대한 정리~ (3)
  8. 2011.08.26 구글맵 라이선스의 무료 사용 범위에 대한 정리 (3)
  9. 2008.01.10 Embedded Slide Show를 지원하는 구글 프리젠테이션 (3)
  10. 2007.07.06 구글 애드센스(Adsense) API.... (2)

Hive & Pig - 하둡(Hadoop)의 맵리듀스를 보다 편하게~

|



하둡(Hadoop) 프로젝트를 진행할 때 사람들의 고민이 무엇일까? 하고 생각해 봤습니다. 

Java 언어에 익숙하더라도 첫번째로 만나는 문제는 역시 맵리듀스(MapReduce)가 아닐까 합니다. 


맵리듀스는 맵과 리듀스가 합쳐진 것으로 각각의 Map 함수와 Reduce 함수를 구현하고 JobClient를 통해 호출해야 합니다. 

그런데 일반적으로 하둡 프로젝트에서 한번만 맵리듀스를 사용하는 경우는 거의 없습니다. 

대부분 맵 리듀스를 반복적으로 사용하게 됩니다. 


여기에 맵리듀스에서 기본적으로 사용하는 타입인 Text, IntWritable, LongWritable과 같은 것 이외에 객체를 사용한다든지. 

Key 항목이 아닌 Value에 속하는 항목으로 정렬을 하고 싶다든지, 

하는 경우에 많은 개발자들이 어려움을 느끼고 있습니다. 


물론 위와 같은 문제들에 대한 해결책은 맵리듀스에 존재합니다. 

그러나 마치 어셈블리어로 모두다 가능하지만 고급언어로 씌워서 개발자가 좀 더 편하게 개발할 수 있는 환경을 만드는 것처럼 

하둡에서도 맵리듀스로 변환해 줄 수 있는 스크립트 언어들이 존재합니다. 


제가 굳이 고급 언어라고 하지 않고 스크립트 언어라고 하는 이유는 

개인적으로는 아직까지 맵리듀스가 더 나을 수 있다고 보기 때문입니다. 

물론 시간이 흘러 스크립트 언어들의 성능 개선이 이루어지겠지만 맵리듀스로 변환해야 하는 오버헤드는 존재하겠죠.. 


Google Sawzall

이런 스크립트 언어를 맨 처음 만든 것은 역시 Google 이었습니다. 

구글은 GFS와 맵리듀스에서 사용할 수 있는 절차형 프로그래밍 언어를 개발했고 Sawzall 이라는 이름으로 사용하고 있다고 합니다. 


이런 Sawzall을 모델로 Hadoop과 관련한 프로젝트들이 만들어집니다. 

바로 Hive와 Pig 입니다. 



Hive

먼저 Hive부터 살펴보도록 하죠. 

Hive는 HiveQL이라고 하는 SQL과 유사한 쿼리를 사용합니다. 

HiveQL로 정의한 내용을 Hive가 MapReduce Job으로 변환해서 실행한다고 합니다. 


정확하게 설명하면, MapReduce 작업이 필요할 때 Hive는 Java MapReduce 프로그램을 생성하는 것은 아니라고 합니다. 

인터프리터 언어처럼 내장된 Generic Mapper와 Reducer 모듈을 사용하고, 

여기에 Job Plan이라는 XML 파일을 적용해 MapReduce Job을 생성한다고 하네요. 

이렇게 MapReduce Job을 생성하면서 비로소 Job Tracker와 통신하기 시작한다고 합니다. 


Facebook 주도로 개발했고 국내에서도 Hive를 위주로 사용하는 곳도 있습니다. 


예를 한번 살펴보도록 하죠. 

Q) K1 메타 저장소에서 Key 값이 100보다 큰 것을 Key와 count로 출력

hive> select key, count(1) from kv1 where key > 100 group by key


위와 같은 형태로 구현이 가능하다고 합니다. 

실제 SQL 쿼리를 사용하는 것과 같은 느낌이 듭니다. 


이번에는 Hadoop의 기본 예제로 사용하는 WordCount를 Hive로 구성해 보도록 하겠습니다. 

WordCount에 대한 MapReduce 설명은 http://blog.acronym.co.kr/333#wordcount 을 참고하시기 바랍니다. 

CREATE TABLE docs (line STRING);
LOAD DATA INPATH 'docs' OVERWRITE INTO TABLE docs;

CREATE TABLE word_counts AS
SELECT word, count(1) AS count
FROM
   (SELECT explode(split(line,'\s')) AS word FROM docs) w
GROUP BY word
ORDER BY word;



구성도를 살펴보면 Hive에 Metastore가 존재합니다. 

이 부분에 DB 스키마와 같이 저장하는 것 같고 실제 데이터는 하둡의 HDFS에 분산되어 저장되는 구조인 듯 합니다. 

Metastore는 별도의 Relation Database로서 일반적으로 MySQL 인스턴스를 사용한다고 합니다. 

즉, Hive는 주로 MySQL을 사용하여 테이블 스키마와 시스템 메타데이터를 유지하고 있다고 보면 됩니다. 


JDBC, ODBC 드라이버가 존재하는 것으로 봐서 기존 DB와도 연동해서 사용할 수 있는 것 같네요. 

뿐만 아니라, CLI (Command Line Interface), HWI (Hive Web Interface), 그리고 Thrift 서버 프로그래밍을 제공합니다. 


최근에는 다양한 GUI 툴도 제공하고 있는데요. 

Karmasphere(http://karmasphere.com), Cloudera의 Hue (https://github.com/cloudera/hue), 

그리고 Hive-as-a-service를 제공하는 Qubole(http://qubole.com)를 Hive GUI로 활용할 수 있습니다.


Pig

Pig와 관련해서는 http://blog.acronym.co.kr/372 에서 간단하게 정리하기는 했는데요. 

MapReduce의 비직관적이고 반복되는 코딩을 줄이기 위해 간결한 문법으로 새로 만든 스크립트 언어입니다. 

정확하게 설명하면, Pig는 Query Language가 아닌 Data Flow를 처리하는 Laguage라 할 수 있습니다. 


사용자 정의 함수로 확장이 가능하지만 컴파일 과정이 필요하므로 MapReduce에 비해 성능이 떨어진다고 하네요. 

야후(Yahoo)에서는 하둡 작업의 30%를 Pig를 사용하고 있고, 트위터도 사용한다고 들었던 것 같습니다. 

또한 Pig는 외부 데이터를 하둡 클러스터로 가져오고 적절한 형식으로 변환하기 위한 ETL(Extract, Transform, and Load) 프로세스의 일부로도 종종 사용된다고 합니다. 


Pig에 대한 예제를 Hadoop 완벽 가이드에 나오는 내용을 기반으로 살펴보죠. 


Q) 날씨 데이터에서 연중 가장 높은 기온을 계산하는 프로그램

1: grunt> records = LOAD ‘input/sample.txt’
2: >> AS(year: chararray, temperature:int, quality:int);
3: grunt> filtered_records = FILTER records BY temperature != 9999
4: >> AND quality == 1
5:
6: grunt> grouped_records = Group filtered_records BY year;
7: grunt> max_temp = FOREACH grouped_records GENERATE group,
8: >> MAX(filtered_records.temperature);
9:
10: grunt> DUMP max_temp;
11: (1949, 111)
12: (1950, 22)


1~2번째 줄을 보면 HDFS에서 input/ 폴더의 sample.txt를 가져와서 year, temperature, quality를 중심으로 분류합니다. 

그리고 3~4번째 줄에 temperature와 quality가 적절한 값들만 필터링해서 filtered_records에 저장합니다. 

6번째 줄에서 연도별을 기준으로 그룹화해서 grouped_records에 저장합니다. 

그리고 7~8번째 줄에서 각 그룹별로 최고 기온을 체크해서 max_temp에 저장하고 

마지막에 max_temp를 출력하면 결과가 위와 같이 나옵니다. 


실제 관련 책을 보면 위 내용을 맵리듀스로 작성하는 내용이 나옵니다. 

비교해보면 정말 간단하기는 합니다. 


In Pig, you write a series of declarative statements that define relations from other relations, 

where each new relation performs some new data transformation.

Pig looks at these declarations and then builds up a sequence of MapReduce jobs 

to perform the transformations until the final results are computed the way that you want.


마치면서

이상으로 Hive와 Pig에 대해서 간략하게 정리해 봤습니다. 

분명 Hive나 Pig는 발전하고 있고 프로그래밍하기에 보다 편리한 것이 사실입니다. 

하지만 개인적으로는 반드시 하둡을 사용하려면 MapReduce로 한번쯤 직접 해 보시기를 권장하고 싶습니다. 


MapReduce의 처리 흐름을 이해하고 난 뒤 Hive나 Pig를 사용해도 늦지 않을 것이라는 생각이거든요. 

어차피 내부적으로 MapReduce로 변환해 실행한다면 MapReduce를 이해하고 있어야 나중에 응용도 보다 자유롭게 하지 않을까 합니다. 


-- 2012년 11월 2일 작성한 글을 최신 내용으로 업데이트 했습니다. 






Trackback 0 And Comment 0

0과 1로 세상을 바꾸는 구글 그 모든 이야기

|




미니서평

저자인 스티븐 레비는 10년여동안 구글에 대한 글을 써왔다고 합니다.

그래서인지 이제까지 봤던 구글과 관련된 다른 책보다는 구글 내부의 이야기를 자세히 서술하고 있습니다.  


인터넷이라는 거인의 어깨 위에 올라 앉아 세상을 더 좋게, 좀더 평등하고 더 힘을 주는 곳으로 만들기 위해 고민한다. 


인터넷 거인 구글

구글은 페이지랭크로 유명해진 검색엔진부터 시작해서, 

현재는 모바일 OS인 안드로이드와 동영상 서비스인 유투브까지 확장하면서 

진정 인터넷이라는 거인의 어깨 위에 올라온 느낌입니다. 


지메일, 구글 클라우드, 구글 앱 엔진, 구글 플러스, 구글 글래스, 구글 도서, 구글 TV, 구글 자동차.... 

이와 같이 이미 성공한 서비스도 있고, 앞으로의 서비스들을 계속해서 연구/개발하고 발전시켜 나가고 있지요.

특히 기존의 IT 기업들과 차별화된 구글만의 문화를 통해서 이런 성과를 이루어냈다는 점은 대단하다고 생각합니다. 


인재와 기술

구글이 초기에 "마이크로소프트"라는 골리앗에 맞선 다윗의 이미지를 통해서 자리를 잡았던 점도 있을 것입니다. 

하지만 세계 최고의 인재와 우수한 기술에 대한 부분이 있었기에 현재의 위치까지 올라왔겠지요. 


사악해지지 말자

책에도 나오지만 구글 문화의 기반이 된 것은 바로 "사악해지지 말자"는 것이라고 합니다. 

중국에 대한 도덕적 딜레마를 다루는 부분에서는 구글의 사악해지지 않기 위한 노력을 엿볼 수 있었습니다. 

하지만 최근 스노우든의 프리즘 폭로 사건에서 나오는 것처럼, 

미국 정부에 대해서는 개인정보를 제공했다는 논쟁에 휩싸이면서 이슈가 되기는 했습니다. 


데이터의 가치

개인적으로 마켓 분석을 위해 애플 앱스토어와 구글 플레이의 데이터를 살펴보니 

애플은 기술에 대해서는 오픈하지 않지만, 앱스토어 데이터는 RSS형태로 제공해주고 있었습니다. 

반면에 구글은 안드로이드 기술은 오픈되어 있지만, 구글 플레이의 데이터는 별도로 제공하지 않고 있었습니다. 

아마도 구글은 데이터의 가치를 보다 중요하게 여기기 때문이 아닐까 하는 생각을 잠시 해봤습니다. 



밑줄긋기

---

인도 방갈로르에서 앞으로 출시될 제품에 대한 프리젠테이션이 끝나자, 

현지 엔지니어 중 한 명이 메이어에게 흥미로운 질문을 던졌다. 


"제품에 대한 로드맵이 있다고 들었는데, 회사 수익에 대한 로드맵도 있습니까?"


메이어는 머리를 절레절레 흔들었다. 

"그런 생각을 해 본 적은 없습니다. 

우리는 오로지 '사용자'에게 초점을 맞춥니다. 

우리 서비스를 사용하는 사용자가 행복해지면, 수입은 뒤따라 올테죠."


---

페이지는 구글을 최초로 방문한 기자에게 이런 말을 했다. 

"내년에 월등히 좋아지지 못하면 우리는 잊히고 말 것입니다."


페이지와 브린은 둘 다 세계 최고 수준의 엔지니어와 과학자에게 구글의 성공이 달려 있다고 뼛속 깊이 믿었다. 

페이지는 기술기업이란 '엔지니어링에 대한 최고 수준의 이해도'가 있어야 살아남을 수 있다고 봤다. 


---

래리의 답변은 놀랍고도 인상적이었다. 

다른 관점에서 사물을 바라보면 예기치 못한 해결책이 나올 수 있으며, 

작업에만 빠져 있을 때는 대개 나무만 보게 되지만 숲을 볼 필요도 있다고 말했다. 


--- 

구글은 고용을 매우 신중하게 한다. 

페이지와 브린이 최고 수준의 재능과 역량을 가진 인재 덕분에 구글이 성공했다고 여기기 때문이다. 

페이지는 신입직원들에게 출장을 가는 비행기 안에서도 매력적인 논의로 남을 끌어들일 능력이 있어야 한다고 말했다. 

페이지는 구글이 지능이 높은 인재들이 일하고 싶어하는 곳으로 만들겠다는 자신의 아이디어를 구체화했다. 


--- 

페이지와 브린 둘 다 구글이 인터넷 자체와 같이, 빠르게 상향식으로 돌아가야 한다고 생각했다. 

매일같이 변화하여 어제 일도 옛날 일처럼 보여야 한다고 생각했다. 

메간 스미스는 이렇게 해석한다. 

"인터넷 시대에 태어났지 않아요. 그러니 우리 회사도 우리 제품처럼 돌아가야 한다는 의미입니다. 좀 묘하지만요."


--- 

브린과 페이지는 해결책을 제시했다. 관리자를 없애는 것이었다. 

적어도 엔지니어링 부문에는 관리자가 없어야 했다. 

브린과 페이지 생각에 엔지니어는 스스로를 조직화할 수 있어야 했다. 

구글 초창기에는 그런 방식이 실제로 잘 작동했다. 

뭔가 고쳐야 할 일이 있으면 스스로 무엇이 문제인지 알아내 고치면 끝날일이었다. 


---

구글 사업방식은 비용제약적입니다. 처음에는 특히 그랬죠. 

매번 검색 질의를 서비스할 때마다 비용이 들어갑니다. 

광고로 버는 돈은 나중 얘기 였기 때문에 페이지와 브린, 홀즐은 만들 수 있는 인프라 중에 가장 저렴한 인프라를 구축했어요.


---

"개개인의 의견을 반영하다보면 복잡해지지요. 

하지만 구글 제품은 기계 위주입니다. 

기계가 만들어요. 그래야 강력하지요. 그래서 우리 제품이 위대한 겁니다."

다른 말로 해서 구글은 인간의 왜곡이 없는 제품을 원한다는 의미였다. 


---

"우리의 모든 원칙을 깨뜨린다 할 수 있었지만요. 

한 번은 원칙이 정말 올바른지 테스트를 해야 할 때가 있어요. 

융통성이 아예 없으면 안 되죠. 그게 몬테소리에서 배운 걸 겁니다."






Trackback 0 And Comment 0

구글 독감 트렌드 분석 - Big Data, Big Insight

|



빅데이터의 사례로 가장 많이 이야기하는 것이 바로 "Google 독감 트렌드"입니다. 

구글에 집계된 검색어를 기반으로 세계 여러 국가의 독감 유행 수준에 대한 예상 수치를 제공하는 것인데요. 

이를 기반으로 빅데이터에 대한 전략이 어떻게 만들어졌는지 한번 생각해 보기로 했습니다. 


데이터 수집

구글 검색어가 자동으로 구글의 서버에 쌓이게 되므로 데이터의 축적은 기본적으로 이루어졌을 것입니다. 

또한 검색어는 시간에 따른 분포를 나타낸다는 점과 IP를 통한 위치를 파악할 수 있다는 것을 활용한 것이라 볼 수 있습니다. 

즉, 검색어, 시간대, 그리고 위치 정보를 활용해서 독감 트렌드를 분석해 낸 것이죠. 


먼저 독감(ILI - influenza likeness illness)과 관련된 키워드(ILI-related query)들을 정리해서 추출했을 겁니다. 

예전에 뉴스 자동분류 시스템을 개발할 때, 키워드와 시소러스를 정리해서 정확도를 높인 적이 있었는데요. 

여러가지 뜻을 가진 단어들이 많아서 고생했던 기억이 있습니다. 

그라나 독감과 같은 전문적인 단어는 상대적으로 관련 키워드를 추출하기가 용이했을 듯 하지만 여기에도 많은 검증이 있었겠죠. 


데이터 분석

데이터를 분석하기 위해서는 수집된 데이터의 지표들을 기반으로 상관관계를 만들어낼 필요가 있었을 겁니다. 

즉, 해당 지역에서 "실제 병원을 방문한 환자의 수"와 "구글에서 독감 관련 키워드를 검색한 사용자의 수"의 관계가 되겠죠. 


이것은 구글에서 2009년 네이처(Nature)에 발표한 논문을 보면 잘 나와 있습니다. 



"Detecting influenza epidemics using search engine query data"란 제목으로 발표되었는데요. 

(위 제목을 클릭하면 PDF 파일을 받아 볼 수 있습니다.)

여기에 나와 있는 수식을 보면 다음과 같습니다. 



수식을 보면 "실제 병원을 방문한 환자의 수"와 "독감 관련 키워드를 검색한 수"의 관계가 로그를 취했을 때 선형 관계라는 것을 알 수 있습니다. 

절편(intercept), 계수(multiplicative coefficient) 등을 통해 보정값을 설정하고, 자연로그를 사용해서 비선형인 회귀식을 선형 방정식으로 만든것 같네요. 

일반적으로 비선형 방정식은 추정이 어려운 것으로 알고 있습니다. 그래서 선형 방정식으로 바꾸어야 하는데요. 

원래는 다음과 같은 수식이 만들어졌을 것입니다. 



여기에 자연로그를 취해서 선형 방정식으로 만들면 다음과 같이 되겠죠. 



이 함수는 2003년부터 2008년까지 쌓인 데이터를 Training Set으로 해서 기계학습(Machine Learning)을 통해 만들어졌을 것입니다.

실제로 MapReduce를 사용해서 분산 환경에서 쿼리 추출부터 함수 생성까지 수많은 모델을 테스트해서 만들어낸 것이라고 하네요. 

그리고 훈련된 결과를 검증하기 위해서 테스트에 포함되지 않은 유타지방의 42주 데이터와 논문 발표 전 최신 데이터를 사용했다고 하네요. 

어쨋든 데이터가 워낙 방대하게 모아져 있을테니 그만큼 정확도도 높게 나왔을 것 같네요. 


시각화

구글은 검색어를 기반으로 독감을 예측하는 시스템을 구축함으로써 Big Data에서 Big Insight를 찾아냈습니다. 

그리고 마지막으로 이를 2008년부터 google.org를 통해 Google 독감 트렌드라고 시각화(Visualization)해서 보여줍니다. 



지역별로 매우높음, 높음, 보통, 낮음, 매우낮음의 5단계로 정보를 한눈에 보여주고 있습니다. 

역시 시각화의 핵심은 아무리 어렵게 분석했더라도 사용자는 직관적이고 쉽게 알 수 있도록 보여주는 것인 듯 하네요. 


구글 분석 결과를 실제 각국의 보건 당국이 발표한 자료와 비교해 보면 매우 유사하게 나옵니다. 

이를 확인해 주기 위해서 각국의 실제 자료와 비교해서 다음과 같이 보여줍니다. 



마치면서

이상으로 빅데이터하면 가장 많이 이야기하는 구글의 독감 트렌드를 기반으로 실제 빅데이터 구축이 어떻게 되는지 간단히 정리해 봤습니다. 

이런 사례를 살펴보면서 느끼는 점이 많습니다. 

실제 프로젝트를 진행해 보니, 빅데이터에서 내가 원하는 인사이트에 적합한 함수를 만들어내는 것도 상당한 노력을 필요로 하더라구요. 

또한 이를 여러 설명이 필요없도록 단순하면서도 명확하게 시각화 하는 것도 많은 생각을 하게 합니다. 





Trackback 0 And Comment 0

빅데이터의 확장 배경과 실제 사례들

|



올해부터 빅데이터에 관심이 부쩍 높아진 것 같습니다. 

클라우드 환경이 대중화되고 하둡 등 분산 처리 기술이 일반화 되면서 자연스럽게 빅데이터에 대한 관심도 늘어나는 것 같습니다. 

하지만 아직도 빅데이터를 단순히 대용량 데이터로만 생각하는 경향이 있어서 

빅데이터의 의미와 실제 사례를 간략하게 정리해 보려고 합니다. 


빅데이터 확장 배경

왜 빅데이터에 관심을 가지게 되었을까요?

먼저 하드웨어가 발달하고 ERP, CRM과 같은 것을 통해 데이터가 충분히 축적되었다는 것입니다. 

이렇게 축적된 데이터를 통해 비즈니스에 기여할 수 있는 인사이트를 만들 수 있을까? 하는 고민이 빅데이터의 시작이라고 생각합니다. 


모든 IT 관련 이슈들이 그러하듯 빅데이터란 것도 하루아침에 나타난 것이 아닙니다. 

예전에 데이터베이스에서도 OLAP 기반의 대용량 데이터 처리에 대한 관심들이 있었죠. 

하지만 데이터의 양이 그때와 비교해 너무 크다는 이슈도 있습니다. 


  • 뉴욕 증권 거래소: 1일 1TB 거래 데이터 생성
  • Facebook: 100억장 사진, 수 PB 스토리지
  • 통신사: 시간당 10GB이상의 통화 데이터, 1일 240GB 생성, 월 생성 데이터의 크기 200TB 이상
  • 메신저: 1일 메시지 41억건


혹자들은 향후 이렇게 축적된 데이터들이 각 비즈니스 사업자간 거래까지 이루어 질 수 있다고도 이야기 합니다. 

즉, 사내에 축적된 데이터를 사고 파는 비즈니스가 만들어 질 수 있다는 것이죠. 

물론 개인정보보호와 같은 이슈들은 있지만 충분히 가능한 이야기라고 생각됩니다. 


빅데이터의 3가지 요소는 다음과 같이 규모, 속도, 다양성으로 주로 다루고 있습니다. 

아래 그림을 참고하세요. 



빅데이터 활용 사례

이런 빅데이터가 실제 어떻게 활용될 수 있는지 사례를 통해 살펴보도록 하겠습니다. 


제품 개발과 관련된 사례


가전 제품을 새롭게 만들때 소비자가 잘 사용하지 않는 기능들을 추가해서 제품 가격이나 생산 비용이 상승하는 경우가 있습니다. 

소비자가 각 기능을 사용하는 빈도를 자동으로 수집해서 분석하면 새로운 제품을 출시할 때 자주 사용하지 않는 기능을 제거할 수 있을 것입니다. 

또한, 예상하지 못한 사용으로 인한 고장등을 파악해서 제품의 성능을 확장할 수도 있겠죠. 


실제 구글에서는 GOOG-411이란 서비스를 2007년부터 2010년까지 무료로 서비스를 했었습니다. 

GOOG-411은 우리나라 114와 같은 전화번호 안내 서비스인데요. 

음성통화이기는 하지만 전화번호 안내를 모두 사람이 아닌 기계가 처리하는 방식으로 되어 있었습니다. 

구글은 왜 이 서비스를 무료로 진행했던 것일까요? 

이유는 바로 구글의 음성인식 알고리즘의 성능 향상을 위해 음성 데이터를 수집하기 위해 진행한 것입니다. 

즉, 이 기간동안 수집된 음성들을 통해서 현재 구글의 음성인식 서비스가 완성되었다고 할 수 있겠죠.. 


마케팅 관련 사례


기존의 POS 시스템을 사용해서 판매량 분석과 같은 작업은 오래전부터 이루어지고 있습니다. 

그러나 POS는 판매시점의 데이터를 분석하게 되는데요. 

빅데이터를 활용하면 고객의 활동이나 동선등을 분석해서 새로운 인사이트를 도출할 수 있다는 것입니다. 


대표적으로 상품 추천 서비스나 최적화된 광고 전송과 같은 것들이 있을 수 있습니다. 

상품 추천을 가장 처음 시작한 아마존은 킨들이라는 전자책에 밑줄 긋기 기능을 제공하고 있습니다. 

사용자가 체크한 부분을 서버에 올리고 다른 사용자와 공유할 수도 있게 구성되어 있다고 합니다. 

이것을 통해 Amazon Popular Highlights 기능을 제공하고 있는데요. 

향후, 소비자에게 책을 추천할 때 가까운 고객이 밑줄 그은 부분을 소개하면서 추천해 줄 수도 있겠죠.. 


우리나라 통신사도 망 혼잡 시간에는 3G 데이터의 과다 트래픽 사용자의 속도를 실시간으로 떨어뜨리는 방식을 취하고 있는데요. 

이런 경우에도 시시각각 생성되는 시간대별, 지역별 트래픽 이용 상황에 대한 데이터를 실시간으로 수집해서 분석하는 것으로 볼 수 있을 듯 합니다. 


기타 사례


건물이나 자동차 등에 센서를 부착해서 데이터를 지속적으로 수집한다면 

매년 또는 분기별로 시행하는 정기 검사가 아니더라도 문제가 발생하기 전에 사전에 파악할 수 있을 것입니다. 

이러한 경우, 대형 사고로 이어지는 문제를 빅데이터를 통해서 사전에 차단할 수 있겠죠. 


요즘 보안과 관련된 이슈도 많은데요. 

신용카드의 부정 사용 방지를 위해서는 결제가 일어나는 짧은 시간이내에 부정 여부를 판단해야 합니다. 

이러한 경우에 수많은 거래 데이터를 분석하기 위한 빅데이터 처리가 필요하겠죠. 

그외에도 광고에서의 부정클릭 방지도 비슷한 로직으로 처리될 것 같습니다. 


또한 GPS나 차량 운행 기록을 수집해서 경제적인 운전 여부를 판단하거나 

수집된 데이터를 통해 장치의 실제 가동 현황등을 파악할 수도 있을 것 같습니다. 


스마트폰의 활용을 분석해서 성별, 연령별 인구분포 및 지역간 인구 이동 현황도 파악이 가능하다고 하네요. 

그리고 스마트 그리드 등과 같은 전력 사용 효율화도 현재 진행중인 것으로 알고 있습니다. 


마치면서 

향후 빅데이터가 활성화되면 온오프라인이 결합된 형태로 서비스가 가능해 질 것이라고 합니다. 

현재 인터넷을 통해 옷과 같은 상품을 살펴보면 다른 사이트를 들어갈 때마다 그 옷이 계속 따라다니는 것을 경험해 보셨을 것입니다. 

바로 리타게팅 광고의 결과인데요. 

나중에는 인터넷을 통해 옷을 살펴보고 난 후, 거리를 지나가다가 그 옷이 진열된 매장의 전광판에 

"들어오셔서 한번 입어보고 가세요" 하는 광고가 나올 수도 있을 것 같다는 생각도 드네요.. ^^


여기에 이야기한 부분 이외에도 실제 빅데이터의 사례는 무궁무진할 것이라고 생각됩니다. 

원래 빅데이터가 의미 없어 보이는 데이터들을 통해서 유의미한 정보를 추출하는 것이기 때문에 

주변의 데이터들에 대해서도 한번쯤 관심을 가져보시기 바랍니다. 


그리고 앞으로 빅데이터와 관련된 인사이트가 중시되면서 빅데이터를 처리할 수 있는 기획자, 기술자, 통계학자 등이 많이 필요할 것으로 보입니다. 

지금부터 준비를 한다면 빅데이터 시대에 핵심 인재가 될 수 있지 않을까 생각합니다. 





Trackback 0 And Comment 0

구글 앱 엔진(Google App Engine) 자바 버전 설치 및 프로젝트 생성/실행/배포 ~

|



클라우드 컴퓨팅 환경에서 PaaS(Platform as a Service)의 선두주자인 구글 앱 엔진에 대해서 정리해 보려고 합니다. 

아래 글에서 설명한 것처럼 일정 용량을 무료로 제공하기 때문에 처음 시작하는데 부담 없이 테스트할 수 있는 것 같네요. 

2012/02/06 - [리뷰/도서] - [도서] GAE로 시작하는 클라우드 컴퓨팅 - 구글 앱 엔진 활용하기

특히 자바 버전의 경우, 이클립스에 플러그인으로 제공해서 설치 및 실행 환경이 기존 자바 프로그래머에게 친숙하다는 것도 하나의 장점입니다. 

그럼 구글 앱 엔진의 설치부터 하나씩 살펴보도록 하죠~~


1. 이클립스용 구글 플러그인 설치하기 

이클립스 플러그인을 설치하는 방법은 많은 곳에서 이야기 하고 있으니 간단하게만 이야기 하도록 하죠. 

플러그인을 설치하기 위해서 Help 메뉴에서 "Install New Software"를 선택하면 됩니다. 

그리고 Work with: 입력창에 다음과 같이 입력하면 됩니다. 

http://dl.google.com/eclipse/plugin/3.7

참고로 마지막 뒷자리의 3.7은 이클립스의 버전을 나타냅니다. 

사용하는 이클립스가 Ganymede 버전일 경우 3.4이구요. Galieo 버전은 3.5이고, Helios 버전은 3.6입니다. 

저는 Indigo를 사용하고 있어 3.7로 했습니다. 

리스트에 나와있는 플러그인 중에서 다음 항목을 설치하면 됩니다. 

Google App Engine Java SDK 1.6.4

Google Plugin for Eclipse 3.7

Google Web Toolkit SDK 2.4.0

이제 이클립스를 재시작하면 Google App Engine을 사용할 수 있는 환경세팅이 마무리됩니다. (Welcome to Google App Engine!!)


2. 구글 앱 엔진 프로젝트 생성

구글 앱 엔진의 첫 프로젝트를 생성해 보도록 하겠습니다. 

이클립스의 툴 바에 보면 아래 그림과 같은 Google 아이콘이 하나 생긴 것을 확인할 수 있습니다. 

해당 아이콘을 누르면 Google App Engine 프로젝트를 관리할 수 있는 메뉴들이 나타납니다. 

여기에서 "New Web Application Project..."을 선택해서 새로운 프로젝트를 만들어 보겠습니다. 

프로젝트 명은 "Mini"로 패키지는 "kr.co.acronym"으로 설정했습니다. 

특히 하단의 Sample Code를 보시면 "Generate project sample code"가 체크되어 있는 것을 볼 수 있습니다. 

기본적인 소스가 포함되어 있어 바로 실행해 볼 수 있도록 구성되어 있습니다. 

바로 프로젝트를 실행해 보도록 하죠. 


3. 구글 앱 엔진 프로젝트 실행

프로젝트 이름("Mini")를 선택한 후, 마우스 오른쪽 버튼을 클릭하고 "Run As"에서 "3 Web Application"을 선택하면 해당 프로젝트가 바로 샐행이 됩니다.

Console 창에 실행되는 내용이 나타나고 실행이 완료되면 Development Mode 창에 다음과 같이 나타납니다. 

해당 URL을 더블클릭하면 처음 만든 (아니 클릭만 한) 구글 앱 엔진 어플리케이션이 바로 나타납니다. 

처음 실행할때는 오래 걸리거나 실행 여부를 물어볼 수 있으니 차분히 기다려 주시면 됩니다. ^^

텍스트를 입력하고 "Send" 버튼을 클릭하면 다음과 같이 나타납니다. 


단지 클릭만 했는데 깔끔하게 생긴 어플리케이션이 하나 만들어졌네요. ^^


4. 구글 앱 엔진 프로젝트 배포

만들어진 Google App Engine 프로젝트를 배포하기 위해서는 구글 계정이 있어야 하고 App Engine에 가입되어 있어야 합니다. 

회원 가입은 http://appengine.google.com에서 진행하면 됩니다. 

회원 가입 후 Create Application을 통해서 애플리케이션을 하나 생성하도록 되어 있습니다. 

이때 Application Identifier는 유일해야 하므로 반드시 "Check Availability"로 확인하셔야 합니다. 

이제 배포를 시작해 보도록 하겠습니다. 

이클립스 좌측 하단에 보면 구글 계정을 설정하는 부분이 있습니다. 

구글 앱 엔진 예전버전에서는 이 부분이 배포하면서 설정했었는데요. 최근에는 하단에 로그인하는 형태로 변경되었으니 참고하시기 바랍니다. 

"Sign in to Google.."을 선택하면 다음과 같은 로그인 화면이 나타납니다. 

본인의 구글 계정으로 로그인하면 구글 앱 엔진으로 배포할 수 있습니다. 

배포는 프로젝트 생성할 때 사용한 구글 툴바를 활용합니다.  

"Deploy to App Engine.."을 클릭해서 배포할 수 있습니다. 

다음과 같이 "Browse.."를 눌러 해당 프로젝트를 설정했는데 오류 메시지가 보입니다. 

이때는 하단의 "App engine project settings..."를 선택해 프로젝트 세팅을 해줘야 합니다. 

다음 그림의 App Engine 세팅에서 Application ID는 구글에서 생성했던 Application Identifier를 적어주면 되구요. 버전은 순차적으로 올려주면 됩니다. 

나중에 버전별로 관리툴에서 변경할 수 있어서 버전 관리도 잘 해놓으시면 도움이 될 것 같네요. 

이제 OK를 선택하고 Deploy를 시작하면 서버로 업로드가 됩니다. 

제 사이트에서도 로컬과 동일한 화면을 볼 수 있네요~

가끔 배포중에 권한이 없다고 나오는 경우가 있습니다. (404 Not Found)

저의 경우에는 계정을 잘못되어서 그런 것이었는데요. 

혹시 그런 경우가 나오면 먼저 계정 설정을 확인해 보시구요. 

다음 링크( https://appengine.google.com/promo/java_runtime )를 눌러서 자바 런타임을 활성화 해보는 것도 방법일 것 같네요. 

다음에는 Google App Engine의 기본 구조를 소스를 중심으로 한번 정리해 보도록 할께요. 







Trackback 0 And Comment 0

구글의 증강현실 관련 프로젝트 구글 글래스(Google Glass)

|



구글이 증강현실(Augment Reality)과 관련된 프로젝트 글래스의 동영상을 4월 4일에 공개했습니다. 

원래 증강현실은 현실과 가상의 공간을 결합한다는 측면에서 가상 현실(Virtual Reality)와 다른 형태입니다. 

스마트폰 출시이후 레이아(layer)의 증강현실 브라우저를 기반으로 카메라를 활용한 증강현실이 잠깐 관심을 끌기도 했었습니다만

카메라로 보는 시선이 사람의 시선과는 달라서 사용하기 불편함 때문에 현재는 초기와 같은 관심을 받지는 못하고 있습니다.


제가 예전에 증강현실에 대해 정리한 자료는 아래 링크를 확인하시면 됩니다. 

2009/08/24 - [컴퓨터공학/디지털서비스] - Augment Reality (증강현실)


그런데 이번에 공개된 구글의 프로젝트 글래스를 살펴보면 "스마트폰의 카메라"가 아닌 "안경"을 활용하고 있는 것을 알 수 있습니다. 

시선을 처리하는데 있어 카메라보다는 훨씬 나은 효과를 가져올 것으로 보이는데요. 

왠지 안경을 보면 자꾸 드래곤볼의 베지타가 떠오릅니다. ㅋㅋ


이미 시험단계라 하니 앞으로 출시가 기대되기는 합니다. 

그럼 구글에서 공개한 실제 동영상을 보면 다음과 같은 일들이 가능하다고 합니다.

- "날씨/시간 확인", "문자메시지", "네비게이션", "티켓예매", "가게 정보 확인", "영상통화", "음악듣기", "사진찍기" 등등.. 

결국은 안드로이드와 같은 스마트폰에서 이루어지는 기능을 안경에서도 똑같이 구현한다는 것 같은데요. 

한번 살펴 보시죠..~



재미있는 사항은  구글의 글래스 프로젝트에 대한 패러디 영상들도 나오고 있다는 것인데요. 

즉, 안경으로 정보를 보다가 사람이나 전봇대에 부딪히는 것과 같은 것입니다. 재미있네요. ^^ 

실제로 이런 상황이 발생한다면 구글 안경을 판매하는데 치명적일 수 있겠네요. (아마도 움직일때는 조그만 화면으로만 나오도록 해야 하지 않을까 합니다.)







Trackback 0 And Comment 0

구글맵 javascript API v3에 대한 정리~

|



간만에 모바일 웹으로 구글 맵을 다룰 필요가 있어 Google Map Javascript API v3을 사용해봤습니다.
구글 사이트에 정리가 잘 되어 있기는 하지만 간략하게 내용을 정리해 보려고 합니다. 

먼저 Google Map JavaScript API v3에 대한 프리젠테이션 자료입니다. 1시간으로 비교적 길지만 시간날 때 한번쯤 들어보면 괜찮을 것 같네요. 
모바일 환경등을 지원하기 위해 기존 Map의 속도를 향상시키기 위한 내용들이 앞부분에 나와 있네요..

 

Google Map JavaScript API v3으로 데스크탑과 모바일 환경을 지원하고 있구요.
기존의 JavaScript API는 더 이상 지원하지 않기 때문에 버전 3으로 마이그레이션 하라고 권고하고 있습니다.  

실제 튜토리얼을 살펴보면 굉장히 쉽게 이해할 수 있을 겁니다.
체감상으로도 속도도 향상된 것 같은데요. Google Map의 튜토리얼 페이지는 다음과 같습니다.

http://code.google.com/intl/ko-KR/apis/maps/documentation/javascript/tutorial.html 

한글로 잘 설명되어 있죠.. ^^
그리고 아이폰과 안드로이드와 같은 휴대용 기기에서 사용할 때의 내용에 대해서는 다음 페이지에서 자세히 설명하고 있네요.

http://code.google.com/intl/ko-KR/apis/maps/documentation/javascript/basics.html#Mobile

마지막으로 실제 예제들을 보면서 자신이 필요한 부분만 가져다 쓰는 것이 좋겠죠.
그래서 Sample Source를 다음 페이지에서 제공합니다.  

 http://code.google.com/intl/ko-KR/apis/maps/documentation/javascript/examples/index.html

저의 경우에는 모바일 환경에서 작은 이미지로 페이지를 호출하는 것이 필요해서 다음과 같이 컨트롤과 드래그 기능들을 모두 false로 설정해서 만들었습니다. 실행하는 화면은 다음과 같습니다. 


위 화면을 만든 소스는 다음과 같으니 참고하시기 바랍니다. 




Trackback 0 And Comment 3

구글맵 라이선스의 무료 사용 범위에 대한 정리

|



웹에서 뿐만 아니라 모바일에서도 구글맵을 사용하는 경우가 많이 있습니다. 
개발하기도 편리하고 무료로 제공하기 때문이죠.

그런데 구글맵을 활용한 상용서비스를 준비하시는 분들은 항상 의문을 갖습니다. 
과연 무료로 어디까지 사용할 수 있을까?



그래서 2011년 4월 업데이트된 Google Map/Google Earth API 이용약관과 FAQ를 기반으로 정리해 봤습니다. 
FAQ 사이트는 http://code.google.com/intl/ko-KR/apis/maps/faq.html이며 한글로 잘 정리되어 있습니다. 

1. 상업용에 구글맵을 무료로 사용할 수 있을까?

무료 영역에 구글맵을 표시한다는 전제 조건하에 유료 사이트나 어플리케이션에서도 구글맵을 사용할 수 있다고 합니다.
단, 다음과 같은 경우에는 Google Map API 고급형을 사용해야 한다고 합니다.

- 유료 고객만 사이트를 사용할 수 있는 경우.
- 회사나 인트라넷 안에서만 사이트에 엑세스 할 수 있는 경우. 

 
즉, 유료 고객만 사용하거나 인트라넷과 같이 폐쇄적으로 접근할 수 있는 경우에는 고급형이라고 하는 비용을 지불하고 사용해야 합니다. 

2. 트래픽 제한이 있을까?

구글맵을 사용할 경우 일일 트래픽 제한과 관련된 궁금증도 많은 것 같습니다. 
어떤 곳에서는 1일 1만5천건의 제한이 있다고 하는데요.. FAQ를 살펴보면 사이트에서 지도 페이지뷰의 수에는 제한이 없다고 나옵니다. 

다만, 일일 500,000 페이지 뷰 이상일 경우에는 트래픽 처리를 위한 추가 용량을 준비할 수 있도록 Google에 연락달라는 멘트가 있습니다. (고급형을 사용하라는 이야기는 없네요.)

그러나 이 트래픽은 웹뷰의 형태로 제공하는 것이기 때문에 제한이 없는 것 같구요.. 좌표값을 보내서 주소를 받는 경우에는 일부 제한이 있는 것 같습니다. 이러한 것을 지오코딩 요청이라고 하는데요. 
24시간 동안 한 IP 주소에서 2,500개를 넘거나 아주 짧은 시간에 많은 양의 지오코딩 요청이 있으면 상태코드 620으로 응답해서 처리가 안된다고 하네요. 

3. 추적 어플리케이션(네비게이션 등)에서 구글 맵을 사용할 수 있을까?
이용약관을 준수한다면 이라는 문구가 포함되어 있지만 무료로 사용할 수 있다고 합니다.
즉, 구글 맵을 사용해서 실시간 데이터를 표시하거나 추적하는데 아무런 제한이 없다고 하네요. 

다만, 내부에서만 사용하는 어플리케이션에서는 Google Map 고급형을 사용하라고 나옵니다.

종합해보면, 상업적이든 비상업적이든 폐쇄적으로만 사용하지 않으면 현실적으로 구글맵을 무료로 사용하는데 큰 제약이 없습니다. 그리고 고급형을 사용할지 여부는 개발자나 회사가 스스로 판단하는 것 같습니다. 

구글이 취할 수 있는 조치는 언제든지 일시 중지하거나 종료할 수 있다는 겁니다. 

무료로 사용할 경우, 구글이 서비스를 중지해버리면 나감해지기는 하겠죠..
구글 나름대로 최선의 대응책을 가지고 있는 셈입니다. -.-

주변에서 은근히 구글맵과 관련된 라이선스에 대해 물어보시는 분이 많아서 한번 정리해봤습니다. 
참고로 고급형을 사용하려면 구글에 문의하라고만 되어 있습니다. 
여기저기 사이트를 보니 연간 1만불 정도라고 하는데 확실하지는 않네요. 
 
도움이 좀 되었으면 합니다. 




Trackback 1 And Comment 3

Embedded Slide Show를 지원하는 구글 프리젠테이션

|



구글에서 2008년 새로운 기능중의 하나로 Embedded Slide Show를 지원한다고 합니다.

내용은 GoogleDoc으로 구성된 프리젠테이션을 블로그나 홈페이지에 삽입할 수 있는 건데요..
테스트 겸 해서 PT 자료를 한번 올려서 넣어봤습니다.



음.. 괜찮은 것 같습니다. ^^


이에 대한 구글의 소개 자료는  구글 블로그의 New features for 2008! 를 참고하시구요..
관련 내용을 프리젠테이션으로 만든 것도 있네요.. ^^







Trackback 0 And Comment 3

구글 애드센스(Adsense) API....

|



구글 애드센스 API 베타 서비스가 오픈되었다길래 한번 살펴봤습니다.

지식검색 같은 사이트에 붙여놓으면 괜찮겠다는 생각을 좀 했습니다만..
일반 광고에 비해 얼만큼의 수익이 생길지는 확실히 모르겠네요..
다만, 사이트 운영자 뿐만 아니라, 글을 올리는 사용자에게도 수익을 줄 수 있다는 점은 긍정적인 것 같습니다.

구글의 Adsense API 사이트 주소는 여기입니다. (http://code.google.com/apis/adsense/)

내용을 좀 이해하기 쉽게 정리해 봤습니다.

Adsense API가 뭔가요?

Adsense API는 특정 웹 사이트와 광고 수익을 공유하는 솔루션으로 해당 웹 사이트는 UCC(User Created Content)를 가지고 있어야 합니다.
즉, 사용자가 만든 콘텐츠에 광고를 붙이고 해당 광고를 클릭했을 때, 수익을 사용자와 웹사이트 운영자, 그리고 구글이 나누어 가지는 것이죠..

기본적인 구글 애드센스와 같이 CPC 수익을 올리는 것 같은데요..

사용자와 웹사이트 운영자의 분배율은 웹사이트 운영자가 결정하도록 되어 있습니다.
대신 운영자가 가져갈 수 있는 비율은 0 ~ 75% 사이입니다.
글을 올리는 사용자가 가져갈 수 있는 비율을 최소한 25% 이상 보장해야 한다는 것이죠..

대신 웹 사이트 운영자에게는 Referral Bonus라고 해서 각 단계별로 특정 금액을 지불하기도 합니다.

Timeline Bonus Criteria You Earn
Stage I For each user who earns $5 in valid AdSense revenue within 180 days of sign-up $5/user
Stage II For each user who earns $100 in valid AdSense revenue and is eligible to receive payment within 180 days of sign-up $250/user
Stage III For the first 25 users who each earn $100 in valid AdSense revenue and are eligible to receive payment within 180 days of sign-up. Limited to one payout per year. $2,000/year

예를 들어, 등록한지 180일 이내에 100 달러를 번 사용자가 1년에 52명이 있었다고 한다면

52 사용자 * $225(Stage I과 Stage II) + $2000 (Stage III) = $15,260

15,260 달러는 보너스로 받는다는 개념입니다.

Adsense API 적용절차

절차는 다음과 같습니다.

1. 웹 사이트의 비즈니스 모델이 적합한지 확인하라고 하네요..
- 사용자가 만든 콘텐츠를 가지고 있어야 하고..
- 사용자와 수익을 공유하기를 원하는 경우~ Adsense API를 붙이라고 하네요..

2. Adsense API, Adsense와 관련된 조건이나 정책에 동의해야 하구요..

3. Adsense 가입 후 Adsense API 신청하고 구글의 review process를 통해서 결정이 되는 것 같네요..

4. Adsense API를 웹사이트에 적용해서 개발하구요.. (API는 SOAP이나 WSDL로 제공된다고 하네요..)

5. 구현된 것을 구글로 보내서 다시 review를 해야 한다고 하네요..

Adsense API의 사례

현재 Adsense API의 Case Study로는 두 개의 사이트가 있습니다.
구글이 운영하는 Blogger 사이트와
외부 사이트로는 Hub Pages라는 게 있네요..

Hub Pages에 가입을 해 보면..
Adsense에 동시에 가입하는 기능이 있더라구요.. 이 부분이 API로 제공된 것 같습니다.
(그러나 가입 절차는 기존 Adsense와 마찬가지로 진행되어야 하는 것 같네요.. 이메일로... )
그리고 Adsense API를 통해서 기존 애드센스 통계페이지에서 참조하던 것을 Hub Pages에서도 볼 수 있도록 제공하는 것 같습니다.

Adsense API를 통해서 할 수 있는 것은 다음과 같습니다.
- Adsense 계정을 신규로 등록하거나 기존 계정과 연결할 수 있구요
- Adsense 광고형식 설정할 수 있구요
- Adsense 통계를 확인할 수 있구요.
- 사이트 필터, 채널 서비스, 구글의 검색엔진과도 연도잉 가능하다고 하네요.

'리뷰' 카테고리의 다른 글

소니 UMPC UX58LN  (4) 2008.06.16
IE8에 대한 기대와 우려  (2) 2008.03.13
XML DeveloperGroup 자료모음  (7) 2008.02.19
야후는 왜 관심을 받지 못할까?  (4) 2008.01.21
미니맵 매쉬업의 iframe 소스 활용  (2) 2008.01.15
구글 애드센스(Adsense) API....  (2) 2007.07.06



Trackback 0 And Comment 2
prev | 1 | 2 | next