http://www.jco.or.kr/b?cmd=boardView&viewType=RETRIEVE&boardNo=76&boardIdx=73&boardMasterId=board_notice


조금 관심이 가는 부분은 "Introducing Oracle Java Wireless Client" 정도였음.

j2me가 가장 안좋았던 부분이 UI 킷트와 퍼포먼스였다.
성능을 높이고, cldc+midp 조합에 webkit, wac 2.0을 넣은 모델이 눈에 띤다.
java-js bridge를 넣어서 자바와 웹을 이용하려는 시험에 박수~


Posted by '김용환'
,
Posted by '김용환'
,
Posted by '김용환'
,

간단에 괜찮은 PPT 발견..

Big Data를위한S/W아키텍처구현
http://www.swarchitect.org/zbxe/2011/dw/dw35.pdf

일목정연하게 잘 정리했습니다! 짝짝~
Posted by '김용환'
,

최근에 infoq에서 Qcon 2011 London에서 발표했던 동영상과 PPT 자료를 최근에 공개했다.
http://www.infoq.com/presentations/Big-Data-in-Real-Time-at-Twitter
http://qconlondon.com/dl/qcon-london-2011/slides/NickKallen_DataArchitectureAtTwitterScale.pdf



나는 자료가 최근인가 했더니. 이미 2010년부터 발표했던 자료이다. 데이터만 조그만 바뀌고.. 계속 발표하는 것 같다.

http://www.slideshare.net/nkallen/q-con-3770885
http://www.atmarkit.co.jp/news/201004/19/twitter.html


트위터는 초당 2.1 백만의 요청을 처리한다.

따라서, 초반에 3가지 이슈가 생겼는데.Tweets, Timelines, Social Graph 가 그 내용이다.

1. Tweets
트윗이라는 것은 단순히 id,author가 있고, 140자 글자, 짦은 메시지로 구성되어 있다.

초반에는 Mysql RDB를 잘 활용했다  Single table에 scale vertical 하게 하고, master/slave replication 구축하고, memcached를 이용해서 read 퍼포먼스 올리는 기본적인 웹 서비스로 구현을 했다.

twitter02.png

하지만, 데이터는 순식간에 다 차버리고, 800G 이상의 데이터를 채울 수 없는 상태가 되었다. 2,954,291,678명의 트위 정보로 인해서 800G의 90%를 쓰고 말았다.

그래서 파티셔닝을 도입을 하려고 했다.

Dirt-Goose 방식(2010년도 문서에는 Current 구현이라고 적혀있고, 2011년도 문서에서는 그냥 Dirt-Goose 라는 단어를 사용했다. 아마도 그리 공학적으로 예쁘지는 않지만 현실적인 대안으로 썼기 때문에 이런 용어를 쓴 것이 아닌가 생각된다.) 을 사용해서 update되는 시간 정보를 바탕(월별)로 파티션을 생성해서 저장하는 방식을 채택하고 있다.  이 방식을 채택한 이유는 트위터 서비스 자체가 시간적인 정보단위로 이용되기 때문이다. 
(temporary locality)
오래된 정보보다는 새로운 정보에 집중(bias)되어 있으며, 시간 순으로 데이터를 저장하는 방식이 깔끔하다.

 twitter04.png

반면,  이 것 외에 가능한 방법(T-bird)론으로 짝수, 홀수 id를 나누어서 저장하는 방식이 있을 수 있다.
이 방식은 최근 트윗 정보를 알기 위해서는 모든 파티션을 검색해야 하는 이슈가 있어 사용하지 않았다.
또한, 서로 다른 사용자들끼리 트윗을 reply, retweet 하면서 누가 멀했는지 찾기 위해서 모든 파티션을 검색해야 한다.

twitter03.png

여기에 userid에 대해서 어떤 파티션이 저장되어 있는지 index 테이블(T-Flock)도 필요하다.

따라서, 파티션과 인덱스과 중요하다. locality(특히 temporal locality) 관점을 가져야 한다. 




2. Timelines
timeline은 follow되거나 follow 받는 사람의 정보를 저장하는 것을 의미하낟.  timeline은 tweet id의 시퀀스이며, 사용자 id의 의해서 가져올 수 있으며, 램에서만 사용하고 있다.

만약 한 사용자의 follower가 엄청 많아서 램에 다 못올리는 상황이 생길 수 있다. 이 때 속도 이슈가 생기고 빠른 응답을 줄 수 없게 된다.

twitter05.png

Fanout Offline은 특정 시간 (예, 분/초 단위가 될 수 있음) 마다 요청을 큐에 쌓았다가 한번에 정보를 전달한다.  일종의 비동기 처리 개념이다.

일종의 메시지 큐처럼 mecached에 저장되고 트윗은 timeline에 전달된다. timeline에 바로 전달하는 구조가 아니기 때문에 low latency의 특징이 일어날 수 밖에 없다.

twitter06.png


3. Social Graph

2010년에는 Search라는 단어를 사용했으나, 2011년 자료에서는 Socail Graph를 썼다.
2010년에서는 mysql db 검색이 아닌 lucene을 이용하려고 했다고 했었지만 이번에는 자료가 바뀌었다.
기존의 mysql 테이블을 변경해서 사용하고 있는 것 같다.

 매번 요청이 올때마다 그 결과가 실시간으로 보여줘야 한다. 이는 lucene처럼 주기적으로 indexing하고 그 결과를 찾아주고 하는 작업을 할 수 없다. 따라서 소셜 그래프가 대안이었던 것 같다.

소셜 그래프는 집합연산을 해야 한다.  

• List of who follows whom, who blocks whom, etc.
• Operations:
  • Enumerate by time
• Intersection, Union, Difference
• Inclusion
• Cardinality
• Mass-deletes for spam
• Medium-velocity unbounded vectors
• Complex, predetermined queries


이 정보를 위해서 기존에 있던 정보, 단순히 누가 누구에게 follow 하는 정보만 저장했던 것을 떠나.
누군가가 누구에게 follow 되는 정보도 따로 저장하는 구조로 바뀌었다.
사용자 id별로 파티션하고, 시간 순서로 indexing 되어 있다.
이렇게 해서 소셜 그래프를 구축할 수 있었다.



똑같은 데이터를 두번 저장했기 때문에 consistency가 매우 중요한 이슈가 되었다.  성공할 때까지 계속 retry 하는 구조로 사용하고 있다. 
대량 write 시에는 다른 방법을 사용하고 있다.


나름의 결론
- 모든 엔지니어링 솔루션은 그 때 뿐이다. (transient)  
   (스케일이 커지니까 그런 말을 하는거지.. 어느 정도 안정화되면 그런 말 안할꺼야.. ㅋㅋ)
- 잠시동안은 좋지만, 완벽한 것은 없다.
- scalabity가 마술은 아닌거 같다. scalabity는 partitioning, indexing, replication은 포함한다.
- 실시간 쿼리에 대한 모든 데이터는 반드시 메모리에 있어야 한다.  디스크는 write  용도밖에 없다. (내 생각엔 디스크는 persistent 용도이고, 나머지는 메모리상태에 있게 해서 최상의 속도를 내야 한다.)
- 어떤 문제들은 미리 처리(pre computation)하는 것으로 해결할 수 있지만, 대부분은 아니다.
- 가능한한  locality를 잘 보아야(exploit) 한다.

Posted by '김용환'
,

Rapidant 오픈 소스

scribbling 2011. 8. 17. 18:32

삼성 SDS에서 오픈 소스로 전환했고, 관련해서 SDEC 2011에서 발표. 훌륭하구먼~
나중에 써먹어야징..캬캬

Rapidant is a parallel-TCP-based, S/W High-Speed data transfer platform

http://www.sdec.kr/presentation/SDEC2011-Rapidant.pdf

http://sourceforge.net/apps/mediawiki/rapidant/index.php?title=Rapidant
Posted by '김용환'
,

닷넷 개발자가 네이버 로그인을 어떻게 하는지 피들러를 이용해서 잘 분석한 내용이다.
피들러의 좋은 특징은 gzip을 decoding하여 어떻게 response가 나오는지 알 수 있다는 점, Http request/response를 분석하여 웹 서버와 어떻게 통신하는지 알 수 있다.

아래 분석했던 내용이 너무 좋다. 관찰만 잘 해도 개발을 더 잘 할 수 있다.

짝짝~!


http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&pageno=0&detail=1&wid=1098

  1. 사용자로부터, 로그인 아이디/암호를 입력받는다.
  2. http://static.nid.naver.com/enclogin/keys_js.nhn 에 요청해서 암호화 관련 키들을 담고 있는 js 파일을 받아서 파싱한 후 sessionkey, evalue, nvalue 값을 얻는다.
  3. 자바 스크립트로 되어 있는 RSA 코드를 C/C++로 마이그레이션하고, rsa.encrypt 메서드와 동일한 동작으로 암호화해서 encpw 값을 구함.
  4. ssl 소켓 통신을 이용하여 https://nid.naver.com/nidlogin.login 으로 각종 폼 데이터를 전송하고 반환받은 쿠키값들을 보관




'scribbling' 카테고리의 다른 글

Big Data in Real Time at Twitter  (0) 2011.08.24
Rapidant 오픈 소스  (1) 2011.08.17
2012년 8월 2번째 읽을거리  (0) 2011.08.12
[TED] 새처럼 나는 로봇  (0) 2011.08.09
Webdoc - HTML5 웹 컨텐츠 저작도구  (0) 2011.08.09
Posted by '김용환'
,



1. 자바 (자바/이클립스)
2. html (html5/websocket)
3. Big Data(nosql)
4. 컨퍼런스/세미나
5. 기타 (트렌드/보안/소식)


<자바>
Java without the GC Pauses
http://www.infoq.com/presentations/Java-without-the-GC-Pauses

이클립스 3.8 M1에서 java7 지원
http://www.infoq.com/news/2011/08/eclipse38-java7
http://download.eclipse.org/eclipse/downloads/drops/S-3.8M1-201108031800/

 

 

<html>

HTML5의 web storage(IndexedDatabase)를 구현하는 Pouch DB 프로젝트 시작 - Portable CouchDB JavaScript implementation
https://github.com/mikeal/pouchdb

리얼타임 웹 분석 툴 -Hummingbird (node.js, socket.io, mongdo DB 사용)
http://firejune.com/1688

웹 브라우저에 대해서 html5 지원 여부 점수 주기
http://html5test.com/

한눈에 보는 HTML5의 중요한 부분들
http://blog.n01se.net/?p=375

html문서에서 현재 어디를 보고 있는지에 보여주는 jquery lib (html5 브라우저 이용)
http://larsjung.de/fracs/

websocket을 이용해서 vnc(상대 서버에 접속)를 구현 (살펴보기)
https://github.com/kanaka/noVNC

html5 미디어(video/audio) js lib
http://html5media.info/

HTML5: Edition for Web Authors Final draft 공지
http://www.w3.org/TR/2011/WD-html5-author-20110809/


socket.io를 이용한 리얼타임웹 구현하기
http://firejune.com/1685

WPilot - 멀티유저 우주선 격침 게임  (html5)
http://jfd.github.com/wpilot/

예전 PC게임(세븐 몽키)을 크롬웹브라우져에서 실행 (플러그인 설치 필요)
http://www.naclbox.com/gallery


HTML5 모바일 App 분석(Anatomy)
http://pinchzoom.com/posts/anatomy-of-a-html5-mobile-app/anatomy-of-a-html5-mobile-app
http://www.readwriteweb.com/mobile/2011/08/html5-can-get-the-job-but-can.php?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+readwriteweb+%28ReadWriteWeb%29

 

 

<Big Data>

트위터 리얼타임 처리 방법 Storm ( Hadoop of Realtime) 소개 - 오픈 소스 공개 예정
http://engineering.twitter.com/2011/08/storm-is-coming-more-details-and-plans.html
http://tech.backtype.com/preview-of-storm-the-hadoop-of-realtime-proce
http://www.readwriteweb.com/enterprise/2011/08/twitter-will-open-source-storm.php?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+readwriteweb+%28ReadWriteWeb%29

sql->nosql->newsql 으로 진화?!  various new scalable/high performance SQL database vendors
http://blogs.the451group.com/information_management/2011/04/06/what-we-talk-about-when-we-talk-about-newsql/
http://highscalability.com/blog/2011/7/25/is-nosql-a-premature-optimization-thats-worse-than-death-or.html
( Clustrix, GenieDB, ScalArc, Schooner, VoltDB, RethinkDB, ScaleDB, Akiban, CodeFutures, ScaleBase, Translattice, and NimbusDB)

하둡을 이용해서 graph 엔진보다 성능 엄청 많이 나오게 하기 (천배)
http://dbmsmusings.blogspot.com/2011/07/hadoops-tremendous-inefficiency-on.html

Data Stack의  리얼 타임 처리 Brisk 솔루션 소개 (카산드라 + hadoop + Hive)
http://www.readwriteweb.com/hack/2011/08/all-about-brisk.php?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+readwriteweb+%28ReadWriteWeb%29

agamemnon - 카산드라 기반의 Graph DB
http://pypi.python.org/pypi/agamemnon/0.3.0.0

 

 


<서비스>
gmail의 outlook UI 사용 가능
http://mashable.com/2011/08/04/gmail-preview-pane/

page speed가 좋다고 하나. 한계는 존재 (https는 안됨 등등)
http://code.google.com/intl/ko/speed/pss/faq.html#baredomain

 

 

 


<컨퍼런스/세미나>
nosql2011 - nosql 컨퍼런스 -  (8/23~25)
http://nosql2011.wilshireconferences.com/

surge2011 - scalability 관련 컨퍼런스 (9/28~30)
http://omniti.com/surge/2011

strangeloop2011 컨퍼런스 - 언어, javascript, html5, java, cloud, 분산/병렬처리, 모바일
https://thestrangeloop.com/schedule


구글 기술 사용자 그룹 모임(요즘에 뜨는 모임)
http://www.gtugs.org/
한국 - http://seoul.gtugs.org/

 

 


<기타>
소셜 로그인 트렌드 (facebook > google >> yahoo > twitter > windows live)
http://www.trendbird.biz/5947

아이패드 출시 이후로 노트북의 성장세가 꺽인것은 사실임을 보여주는 객관적인 지표
http://www.trendbird.biz/5968

페이스북 messenser 출시
http://www.hankyung.com/news/app/newsview.php?aid=201108101168g&sid=0104&nid=004&ltype=1
http://think1more.kr/438

HTC가 미국 모바일 클라우드 업체 인수
http://news.inews24.com/php/news_view.php?g_serial=594346&g_menu=020800&rrf=nv

맥아피사에서 나온 보안 공격 사례 (미국이 많이 공격당함, 한국은 3건)
http://www.mcafee.com/us/resources/white-papers/wp-operation-shady-rat.pdf

특허 관련 구글의 위선
http://www.appleforum.com/mac-column/60765-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%99%80-%ED%8A%B9%ED%97%88-%EA%B5%AC%EA%B8%80%EC%9D%98-%EC%9C%84%EC%84%A0.html#post532618

구글은 90만대 서버를 사용
http://www.datacenterknowledge.com/archives/2011/08/01/report-google-uses-about-900000-servers/

eBay는 100TB flash 저장장치를 설치/사용
http://gigaom.com/cloud/ebay-deploys-100tb-of-flash-storage/

facebook - tilera 칩셋 이야기
http://gigaom.com/cloud/facebook-tilera/

해외 주요 통신사업자의 소셜미디어 전략 (트위터:페이스북:이메일 = 5:3:1) , CS 점수 상승
http://www.digieco.co.kr/KTFront/report/report_strategy_view.action?board_seq=5616&board_id=strategy#

Google+의 전략적 Position 과 Circle 개념의 가능성
http://www.digieco.co.kr/KTFront/report/report_issue_trend_view.action?board_id=issue_trend&kind=a01&board_seq=5609&sort_order=#

M2M으로 영향력을 확대하는 구글 안드로이드
http://www.digieco.co.kr/KTFront/tb/board/5521.action

새로 나올 아이폰5
http://www.trendbird.biz/5980

시간장애인을 위한 윈도우 운영체제 쉽게 사용하기 (오픈소스) - 아직 한국어는 지원안함
http://www.nvda-project.org/

아마존, 웹앱으로 애플 울타리 뛰어넘다
http://www.hankyung.com/news/app/newsview.php?aid=2011081164671&intype=1
캡쳐 화면 -  http://www.eweek.com/c/a/Desktops-and-Notebooks/Amazons-Kindle-Cloud-Reader-Offers-Apple-Challenge-HTML5-Reading-829379/

아이폰 앱이 장벽이 되는 현실- html5로 이동
http://www.readwriteweb.com/archives/knocking_down_apples_walled_garden_html5_vs_ios_apps.php

지난10년 인터넷업계 지형변화 - NHN시장가치 2010년 인터넷 기업 세계 10위
http://www.seri.org/db/dbReptV.html?menu=db12&pubkey=db20110811001

구글 플러스에 게임 추가
http://googleblog.blogspot.com/2011/08/games-in-google-fun-that-fits-your.html

구글 Gmail이 아웃룩처럼 변경
http://googleblog.blogspot.com/2011/07/google-apps-highlights-7222011.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+blogspot%2FMKuf+%28Official+Google+Blog%29

MS 오피스를 HTML5로도 사용가능하게 함
http://news.naver.com/main/read.nhn?mode=LSD&aid=0001984976&oid=092&mid=sec&sid1=105

증강현실을 이용해서 여자 패션아이템을 쉽게 고를 수 있음
http://www.readwriteweb.com/archives/retailer_lets_online_shoppers_virtually_try_on_clothes_using_augmented_reality.php?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+readwriteweb+%28ReadWriteWeb%29

구글 웹 엔진, 구글 앱스 등이 미국 정부 표준 인증(SSAE-16, 3042)을 받음,
http://googleenterprise.blogspot.com/2011/08/security-first-google-apps-and-google.html


레드햇이 클라우드 사업 진출 (PAAS, Cloud 관리)
http://www.readwriteweb.com/cloud/2011/05/red-hat-ups-its-cloud-game.php

 

 

Posted by '김용환'
,

대단하십니다. 멋져요!
Posted by '김용환'
,

웹 검색을 통한 연동이 쉽고, 트위터, 페이스북을 통한 소셜 작업이 가능하다. 


동영상 정보는 여기서..

http://vimeo.com/21397003

단하게 사용할 수 있고, 소셜 활동으로는 좋은 것 같다. 


 구글 맵과 이미지를 검색해서 가져온다.




이미지 포함시키는 방법


 
동영상 퍼오는 방법

 

다른 Web App과 연동하는 법

 

'scribbling' 카테고리의 다른 글

2012년 8월 2번째 읽을거리  (0) 2011.08.12
[TED] 새처럼 나는 로봇  (0) 2011.08.09
8월 5일- 읽을거리  (0) 2011.08.05
OSCON 2011: O'Reilly Open Source Award  (0) 2011.08.03
싸이월드/네이트 해킹 사건  (0) 2011.08.01
Posted by '김용환'
,