아키텍쳐 /대용량 아키텍쳐 41

Facebook Photo Service Architecture

페이스북의 Photo 서비스 시스템 아키텍쳐 The Photos application is one of Facebook’s most popular features. Up to date, users have uploaded over 15 billion photos which makes Facebook the biggest photo sharing website. For each uploaded photo, Facebook generates and stores four images of different sizes, which translates to a total of 60 billion images and 1.5PB of storage. The current growth rate is 220 millio..

개인 클라우드 서비스에 대한 고민

개인 클라우드 서비스를 하다보니.. 고민할 것이 정말 많다. 특히 공유 부분에서 기존의 슈가싱크처럼 B2C 기반으로 공유된 대상이 READ만 가능한 형태로 갈것인가? MS 쉐어포인트 처럼, WRITE 가 가능한 형태로 갈것인가? 이건 서비스 특성에 대한 변화 부터 요구 한다. 슈가 싱크는 B2C 기반의 개인 클라우드 서비스, 쉐어포인트등은 SmartWorkPlace처럼 Share보다는 Collaboration에 대한 요구 사항이기 때문에 서비스의 사상 자체가 변한다. 또한 이러한 개인 클라우드 서비스는 클라우드에 대한 어마어마한 투자를 바탕으로 하고 있기 때문에 안정적인 수익 모델이 있지 않는 이상은 쉽게 대규모 서비스를 하기가 어렵다. 드롭박스야 이미 20% 유료화 전환율을 가지고 있고, 국내의 통신사..

요즘 해외쪽 대규모 분산 환경 유행 기술

언어는 Erlang을 많이 쓰는것 같고, 특히 Scale Out이나 Concurrency 처리가 용이하며, 에러 핸들링 처리 기능이 강력하다. 여기에 생산성 측면에서 Python이 사용되고 Native Handling을 위해서 C가 여전히 강세 맨 앞단에 Reverse Proxy 개념으로 nginx가 apache를 대처하면서 올라오고 있고, DataGrid는 memcahed보다는 이제는 Redis를 많이 사용하는 것으로 보이고 NoSQL은 Dynamo 계열의 Riak이 많이 사용된다. RDB야 여전히 MySQL이고 대규모 시스템이 자바로 짜여지는 일은 드문듯 앞으로 살아 남을려면 NoSQL 하나랑 Erlang정도는 기본으로 익혀야 할듯

Erlang - 딱이다.

요즘 대규모 분산환경 관련 기술에 대해서 기웃거려 보고, 개발언어 관련해서도 자바는 아무래도 사양세 같아서 이것 저것 언어들을 살펴보고 있는데, Erlang이 자료도 적고, 유명하지는 않지만 요즘 해외에서 유난히 많이 언급되서 좀 찾아봤다. 일단 한마디로 하면.. "이건 턱시도 + 자바네...." Functional Programming이라고 하는데, 알아서들 찾아보시고, 완전히 Tuxedo의 Service 개념이다. (SOA의 서비스 개념과도 비슷하고..) 구조또한 Tuxedo다. Process 단위로 구동하면서, 안에 Thread로 나눠서 돌고, 그로 인해서 장애 전파가 안되고, Process가 늘어나면서 Schedule Out이 가능하다. 또한, Function은 여러 서버에 Deployment하더..

글로벌 시스템의 거점 센터에 대한 고민

요즘 시스템을 전세계에 걸쳐서 배포 하는 내용에 대해서 고민을 하고 있습니다. 자료를 찾다보니 재미있는 자료가 있어서 올려놉니다. 출처 : http://gigaom.com/2008/08/17/can-undersea-optic-cables-predict-an-economic-boom/ 미국쪽은 미국 서부와 동부 유럽은 주로 영국 아시아는 한국과 일본을 주축으로 연결이 되는것을 볼 수 있습니다. Facebook이 IDC를 미국 서부와 동부 하나씩 놓은게 이해가 되네요 Akamai 자료를 보면 (아래 참조) 아시아쪽에서는 한국이 독보적으로 Bandwidth가 좋습니다. 중국은 좀 많이 취약하네요. (한국 11M, 중국은 8Kbps) 그리고 상대적으로 중국의 해킹관련 트래픽이 높습니다. (중국 31%, 한국 6..

MySQL cluster geographic replication

물리적으로 분리된 위치에서 데이타 SYNC에 대한 솔루션을 research 하던중에 mysql에 대한 이야기가 많이 나온다. Facebook도 master 와 slave center (미국 서부와 동부)의 데이타를 mysql georeplication 을 이용해서 구현한것으로 보인다. MySQL georeplication의 원리는 위의 그림과 같다. Master node의 변경 사항을 BinLog라는 형태로 저장하여 복제 대상에 전송한후 replay를 하는 방식이다. record & replay 방식인데, binlog는 오라클의 redo 로그와 유사하다. 데이타베이스의 redo 로그 자체를 레코딩해서 전송하는 방식이기 때문에 데이타 복제만이 가능하고 ETL과 같은 변환은 불가능하며, 변경된 부분만 전송하..

분산 인터넷 아키텍쳐에 대해서 좋은 책 하나..

Scalable Internet Architecture 2006년판. 국내에 독자층은 별로 없겠지만, 글로벌하게 단일 시스템을 분산 배치할때, 파일 시스템,네트워크, 데이타 베이스등에 대한 아키텍쳐를 잘 설명하고 있다. 이만한 책도 없을듯해서 북마크중 금전적인 사정관계로, 스폰서(?)분이 지원해주신 사파리 온라인으로만 읽고 있음

Facebook geographic distributed architecture

페이스북의 경우 DR(재해 복구)와 로드 밸런싱의 목적으로 미국내에 서부와 동부 두군데에 IDC를 유지합니다. 이렇게 두개 이상의 다른 장소에 시스템을 배포하는 것 구조를 geographic distributed architecture라고 합니다. 이러한 아키텍쳐에 있어서 가장 중요한점은 IDC간의 데이타 동기화,라우팅 그리고 성능 향상을 위한 캐슁입니다. 라우팅은 REQUEST가 들어왔을때, 어느 IDC로 보낼것인가를 결정하는 방법입니다. 페이스북의 경우 미국내에 IDC가 있는데, 서부는 미국 서부와 아시아권을 동부는 유럽쪽을 커버합니다. 그리고 로드 밸런싱을 Global Load Balancer라는 것을 이용하는데, 아마 국가별 IP를 기반으로 라우팅을 하리라 생각됩니다. (추정) 동기화의 경우 해당..