전체 글 1274

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% 유료화 전환율을 가지고 있고, 국내의 통신사..

Azure가 아마존을 이길 수 있을까?

요즘 일이 바뻐서 블로그 포스팅을 거의 못하고 있습니다. 많이 버는 만큼, 그동안 충전해왔던 지식이나 노하우를 주로 방전하는 느낌입니다. 어쨌거나, 클라우드의 양대 산맥인 아마존 AWS와 Microsoft Azure에 대한 이야기를 해보려고 하는데.. Azure vs AWS의 승자가 누구이냐? 인데. 결론 부터 이야기 하면 AWS의 손을 들어주고 싶습니다. Blob Storage나 DB 서비스와 같은 액세사리성 서비스는 양쪽다 어느정도 구색을 갖춰 놨다고 했을 때, 핵심인 Compute Service가 문제인데. 기본적으로 Azure는 .NET 기반의 PaaS만 지원하지만, Amazon은 모든 플랫폼을 올릴 수 있는 IaaS 수준 서비스를 제공합니다. 이말인즉슨, 내가 필요한 소프트웨어를 마음대로 올릴 ..

요즘 개발자들.. IT 인력들... 에 대한 단상...

요즘 예전의 해왔던 일의 경험을 최대한 쏟아 부어서 열정적으로 일을 하고 있습니다. 서비스도 기획해보고, 분석도 해보고, 딜 네고도 해보고, 사람도 뽑고, 예산 관리도 하고, 일정 조정도 하고 사람 관리도 하고, 테스트도 하고,튜닝도 하고, 설계도 하고, 설득도하고... 코딩 빼놓고는 대부분 다하는 군요.. 시점이 바뀌다 보니까는 사람을 보는 눈도 조금 바뀌지 않았나 싶습니다. 요즘 IT 인력, 특히 개발자가 없다 보니까는 개발자 단가는 올라가고, 일의 강도도 쉽게 높일 수 없어지는 것 같습니다. 이제야 제대로 IT 인력들이 대접받기 시작하지 않나 싶은데, 아마 많은 시니어 개발자들이 IT의 길을 떠나거나 앱쪽으로 전향을 하고, 새로운 주니어 인력의 충원이 적기 때문에 한참 노련한 30대 중반 개발자들이..

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

언어는 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하더..

Riak Quick Review

요즘 대규모 분산 환경이나 빅데이타 관련해서 NoSQL중에서 Riak이 많이 언급되는데... 생각보다 괜찮은 듯 http://nosql.mypopescu.com/post/632057783/riak-search-and-riak-full-text-indexing 주요 특징은 - Cassandra와 같은 Dynamo 계열 - ★ Secondary Index가 지원 된다.. (메이져 NoSQL 중에 유일하지 않을까?) - ★ FTS (Full Text Searching)도 지원된다. 그리고, Commercial Support도 가능하다. ==== 최근 포스팅한 좀더 자세한 Riak 정보 http://bcho.tistory.com/621

요구 사항 정의 프로세스도 변경해야...

기존의 개발 프로세스에서는 요구 사항을 받아서 개발하는 형태였는데, 이 요구 사항이 완벽하지 않다는 것은 누가나 알고 있고, 이를 전재로 해서, 변경 가능한 요구 사항을 기반으로 개발하는 프로세스가 애자일 프로세스 이다. 관리 관점 뿐만 아니라, 요구 사항을 수집하는 관점도 변화가 필요한데 요구 사항은 고객이 정해주는 것이 아니라, 스스로 정하는 것이다. 고객에게 요구 사항을 받은 것이 완벽하다고 판단하지 말고, 요구 사항이 부족한 부분은 Develop하고, 완벽하게 만들어 나갈것. 즉 고객이나 다른 사람에게 요구 사항 정의에 대해 의존하지 말고, 커뮤니케이션, 가정, 레퍼런스를 통하여 스스로 요구 사항을 정리할 수 있도록 해야 한다. 완벽하지 않은 요구 사항에 대해서는 1. 고객에게 요구 사항을 커뮤케..

ALM/Task Management 2011.12.05

NoSQL 계보 정리

Google의 BigTable에서 시작된 것들 - HBase (Java) - HyperTable (C++) 주로 대규모 분산처리 특히 Map&Reduce에 알맞고, 동시 대규모 클라이언트를 지원하는데 뛰어 나다 Amazon Dynamo 로 부터 시작된 것들 - Voldemork - Riak FaceBook에서 시작된것 - Cassandra Write에 Optimize되었으며, Read는 Write에 비해 느림. 대규모 데이타 저장에 최적화됨 그밖에 Mongo 계열 -MongoDB 쉽다. 그리고 AutoSharding과 Balacing 제공. 10gen에서 Commercial Support -CouchDB : MongoDB와 특성은 유사하나 내부 기술 구조는 다름

nginx module development guide (모듈 개발 가이드)

nginx가 요즘 마음에 들어서 계속 살펴보는 중인데, module 개발도 apache 보다는 쉬워 보인다. apache 처럼 module 개발 가이드 책은 없는 것 같지만 그래도 이정도 정리된 문서가 있는 것도 다행인듯. Module 개발 문서 - http://www.evanmiller.org/nginx-modules-guide.html Module 개발 Advanced Topic http://www.evanmiller.org/nginx-modules-guide-advanced.html

클라우드 컴퓨팅의 새로운 분류 3P Model 그리고 애플의 iCloud

클라우드 컴퓨팅이 IaaS,PaaS,SaaS와 같은 서비스 제공자 입장 Private,Public 클라우드와 같은 사용 대상에 대한 입장에 대한 정의가 이제는 다 이루어졌고, 구축 및 서비스가 성숙해가는 단계에서 근래에 시트릭스에서 3P 라는 클라우드 컨셉을 발표했다. 기존 클라우드가 기업 내부에서 사용하는 Private 기업이 외부 자원을 사용하는 Public 이었다면 여기에 하나 더해서 + Personal Cloud의 개념을 추가하여 발표하였다. 새로운 클라우드 컴퓨팅 개념이라기 보다는 기존에 있었던 형태의 서비스를 조금 관점을 바꿔서 체계화 시킨 것에 불과하지만, 이 체계화 자체가 의미를 갖는다. Personal Cloud는 기업이 아니라 각각의 개인에게 클라우드 서비스를 제공한다는 개념이다. 즉 ..

MongoDB Deployment 아키텍쳐

MongoDB Deployment 아키텍쳐를 간단하게 보면 다음과 같다. mongos들을 앞단에 쭈욱 늘어놓고, 이는 라우터의 역할을 한다. mongos간의 load balancing은 앞단에 L4등의 로드 밸런서를 사용하고, Cache Hit율등을 높이기 위해서 L4는 Hash 방식등의 Sticky setting을 한다. 뒷단에 mongod를 배치하고, 최소한 3 copy replica 구조로 설정한다. inter data center에 대한 replication을 설정하고, 이는 DR이나 Back up 용도로 사용한다 inter data center replication은 항상 여러가지 숙제를 주는데, 이 경우 backbone의 속도 차이로 인하여 data의 일관성이 깨질 수 있으니, 1. DR/Ba..

2시간 동안 MongoDB 훝어보기

대충 2시간 정도 MongoDB를 훝어보니 구조 - mongod는 실제 데이타 베이스 핸들링 프로세스로 mysqld와 유사 - 앞단에 mongos 라는 프로세스를 띄워서 클러스터 구성을 하면, mongos가 로드 밸런서 역할을 함 클러스터링을 할경우 - Sharding을 사용하여 데이타를 분산 저장해야 함 - 이 경우 같은 shard내에 mongod를 3 copy로 replication하여 데이타 유실을 방지를 권고한다. - 고급 문서 대부분 내용이 Shard 구성과 Index 구성이다. 이게 키 포인트인듯 ※ 이 과정은 Redundant한 하드웨어 구성으로 인하여 하드웨어 코스트를 올릴 수 있다. 성능 부분에서는 - mongodb는 memory 기반의 index를 사용하여 cassandra나 hbase..

클라우드 관련 재미있는 사이트 하나 찾아서 북마크

http://bigdatalowlatency.com/ 대용량 분산 데이타 처리에 대한 글이 많다. 큐브리드에서도 NoSQL 벤치마크한 자료들이 많네요. 그것도 영어로.. http://blog.cubrid.org/dev-platform/nosql-benchmarking/ 여기 Foursquare에서 MongoDB에 대한 장애 케이스가 있네요 http://monetary.egloos.com/3600459 결국은 메모리가 빵빵해야 하고, 용량 초과되기 전에 증설을 자알~~ 해야 한다는것.

MongoDB에 대한 몇가지 메모

요즘 대용량 데이타 처리 때문에, NoSQL을 머릿속에만 올려놓고, 근래에나 되서 이래서는 안되겠다 해서 직접 자료를 찾아보고 있습니다. NoSQL은 Cassandra, HBase, Mongo, Riak등을 후보군으로 뒀는데, Cassandra는 FaceBook에서 Donation해서 만든 분산 DB로 개인적으로는 가장 신뢰가 가기는 했지만, 국내의 많은 블로그 포스팅등을 읽어보면, 안정성이나 사용성이 떨어진다는 것이다. 즉 제품은 좋은데 야생마처럼 잘 쓰지 못하면 모쓰는 제품이라는 이야기. 일단 후보로 남겨놓고 패스. HBase는 Hadoop File System (HDFS)를 기반으로 설계되었는데, 검색해보니 생각보다 많이 사용이 안되는 것 같아서 패스 Riak도 신생이라서 패스 결국은 Mongo와 ..

분산 처리 오픈 소스 Gearman 퀵리뷰

정리는 아래 PPT에 잘되어 있고 쉽게 요약하면, Async Queue + Working 서버다 Request를 Queuing 했다가, 뒤의 Work Process로 넘겨줘서 작업을 비동기로 처리해주는 형식이고 예전 Tuxedo와 같은 TP 모니터와 유사한 구조를 갖는다. Hadoop과 같은 Map & Reduce 의 분산 처리 구조와도 비슷하고 야후등의 레퍼런스도 있고 memcached나 mogileFS를 만든 danga.org의 작품이기도 하다. 일단 단순성이 높고, 사용성도 편리해서 대용량 분산 처리에 사용하기는 편할듯. 단 예전 TP 모니터에서 봤듯이, 작업 배분을 위한 Worker Process들의 Registration을 처리하는 BBL과 같은 Registration Table에 별도의 성능 ..

클라우드 파일 시스템과 De-duplication

요즘 Personal Storage Service를 분석하다보니, Cloud Storage쪽을 많이 보게 되는데, 트렌드가 대부분 S3나 SWIFT같은 Blob Storage를 뒤에 넣고, 중간에 이를 File System으로 바꿔주는 서버 계층을 두고, Client에 마치 NDrive 처럼 Fuse를 이용해서 마운트 하는게 대세다. CyberDuck같은 오픈 소스를 보면 KT SS나 Amazon S3등을 Storage로 저장해서 파일을 저장할 수 있게 해준다. 요즘 관심이 가는 부분이 이 구조에서 중간에 File System으로 바꿔주는 엔진 부분인데, De-duplication쪽이 관심이다. 이유인 즉, SWIFT의 경우 데이타 안정성(무결성)을 보장하기 위해서 물리적으로 3Copy를 유지하기 때문에..

HTC Dashwire 인수

HTC가 DashWire라는 미국 모바일 클라우드 업체를 인수했습니다. http://news.inews24.com/php/news_view.php?g_serial=594346&g_menu=020800&rrf=nv iCloud로 애플이 모바일 시장을 다 뒤집어 놓은 상태에서 첫번째 타 업체의 움직임입니다. HTC는 Sense라는 서버 플랫폼을 가지고 있기는 하지만, Apple의 iCloud의 변화 속도와 서비스를 따라가기에는 Infra 투자나 신규 서비스 개발들이 쉽지 않은게 사실인데, HTC는 인수 대응 방식을 선택했습니다. 삼성전자나 LG 전자는 어떻게 대응을 할지도 궁금하네요.

요즘 클라우드 관련 뉴스

클라우드 Security에 대한 글 하나 http://blogs.msdn.com/b/education/archive/2011/08/03/how-do-you-approach-cloud-security.aspx 네이트 사건도 있고, 점점 중요해지는 보안, 그러나 비용과 시간 때문에 맨날 경시 되는 보안 루머-Apple's rumored 'Replay' service a ways off http://news.cnet.com/8301-31001_3-20089094-261/apples-rumored-replay-service-a-ways-off/ 애플이 동영상 컨텐츠에 대한 클라우드 서비스를 시작하려한다는 루머입니다. 그 큰 데이타 센터 지어놓고, iCloud에서 Sync 만 제공하기에는 부족하고 몬가 꾸미고 있..

삶의 가치와 휴식에 대한 글 하나..

벤더 생활을 처음 시작할때 부터 알고 지내는 영업 대표 분이 계십니다. 지금도 제 멘토링을 해주시고, 항상 존경하고 있는 분입니다. 월요일 마다 월요 편지라는 것을 보내시는데, 항상 생각할 수 있는 시간과 주제를 주시는데 오늘 좋은 글이 있어서 하나 올려봅니다. 임승환 월요 편지 (7/25일자) 조그만 항구 도시에 사는 가난한 어부가 자신의 보트에서 늘어지게 낮잠을 잤다. 그때 그 곳을 지나던 사업가가 어부를 깨워 말을 걸었다. 사업가 : 하루에 몇 번이나 출어하시오? 어부 : 단 한 번. 나머지는 이렇게 쉬지요. 사업가 : 왜 두 번 이상 하지 않소? 그럼 세 배로 많은 고기를 잡을 수 있을게 아니오? 어부 : 그러면요? 사업가 : 그러면? 그러면 2년 뒤에는 모터보트를 두 척 살 수 있고, 3~4년 ..

사는 이야기 2011.07.25

아키텍트에서 메니져로...

처음에는 프로그래밍이 좋아서 개발자로 시작을 했었고, 나름 벤쳐에서 영업도 해봤고 CTO도 해보고, 프리도 해보고, 그러다가 외국회사에서 엔지니어,컨설턴트,프리세일즈를 거쳐서 아키텍트로 일을 하다가 지금은 프로젝트 메니져를 하고 있습니다. 구축 프로젝트라기 보다는 사업을 만들고 구축까지 End 2 End를 책임지는 과정인데.. 확실히 메니져에 입장이 되보니 생각할것이 훨씬 많아지는 것 같습니다. 그 중에서 가장 중요한 것은 개발팀과 사업부의 중간에서 사업의 당위성을 설득하고 기술과 비지니스 중간의 브릿지 역할을 하는 일입니다. 예전에 프리세일즈 경험이 있어서 요즘 들어 큰 도움이 되고 있습니다. 가장 중요한 것은 비지니스나 사업부 그리고 Executive는 개발이 어쩌고 저쩌고, 기술이 어쨌다는 것이 아..

사는 이야기 2011.07.22

또 회사를 옮깁니다.

Microsoft에 근무한지 약 1년이 좀 지났는데, 기대하지 않던 기회가 와서 회사를 다시 한번 옮기게 되었습니다. 좋은 패키지 제안 해주신 모社의 존경하는 임원분께 진심으로 죄송하게 생각합니다. 블로그를 통해서 다시 한번 감사드리고, 어떤 형태로든지 함께 일할 수 있는 기회가 오기를 기대해 봅니다. Microsoft의 지난 1년은 저에게 상당히 의미가 있었던 한해였습니다. 먼저 Java/Unix/Open source 기반의 제 기술 Background를 MS 진영의 기술까지 확장할 수 있었으며, 기술에 대한 편견을 버리고 모든 기술에 대해서 동등하게 바라볼 수 있는 식견을 가질 수 있었습니다. 아울러서 주로 임원 관련 미팅등을 통해서 전통적인 기술 지향적인 사고에서 비지니스를 바라볼 수 있는 능력과 ..

사는 이야기 2011.07.03