2009년 3월 15일 일요일

빅스위치 (The Big Switch)


세계적 경영컨설턴트이자 「이코노미스트」가 뽑은 글로벌 CEO 132인에 뽑히기도 한 IT 비즈니스계에 막강한 영향력을 행사하고 있는 니콜라스 카(Nicholas Carr)가 지은 책이다.

그가 2003년에 발표한 글 “IT Doesn’t Matter” 는 ‘50메가톤급 스마트폭탄’의 파괴력을 지녔다는 평가를 받기도 했는데, 당시 썬마이크로시스템즈의 CEO 스콧 맥닐리, MS의 스티브 발머, 휴렛패커드의 칼리 피오리나, 인텔의 크레이그 바렛 등이 가세하면서 세계적인 논쟁을 불러일으키기도 했다. 최근에는 “구글이 우리를 바보로 만들고 있는가?”라는 글을 「애틀랜틱」(The Atlantic)에 발표해 많은 논쟁을 불러일으켰다.

이 책에서 최근 IT 비즈니스 업계의 최대 화두로 떠오른 '가상화시스템'과 '클라우드 컴퓨팅' 이 비즈니스와 경제, 사회, 문화에 어떤 영향을 미칠지, 또 우리의 삶과 경제구조를 어떻게 변화시킬 것인지를 드라마틱하게 서술한다. 논쟁이 될 만한 거침없는 발언들로 유명한 비즈니스계의 이단아 니콜라스 카가 웹 2.0시대의 거대한 변환을 전망한다. 20세기 경제와 문화를 주도했던 전기의 발명에서부터 새로운 테크놀로지까지, 뛰어난 역사적 통해 디지털 환경의 일대 변혁을 그려낸다.

클라우드 컴퓨팅이 중심이 되는 비즈니스 세계, 월드와이드컴퓨터의 등장과 PC의 종말, 서비스로서의 소프트웨어(Saas), 규모 수익체증 법칙, 미디어 생산품과 문화상품의 세분화를 설명한다.

그리고 네트워크 연결자들이 자신의 시간과 아이디어를 무상 제공해 디지털 상품을 제조 유통시키는 '크라우드소싱'과 선물경제, 극소수의 최상위 사람들이 생산과 소비를 좌우하는 '플루토노미'와 디지털 엘리트의 등장, 네트워크 부동산, 지식과 문화에 즉흥적/주관적/임시적으로 접근하는 팬케이크 인간, 검색엔진 인공지능화 등을 이야기한다.

구글의 소프트웨어 개발 체계

1. 선택된 프로젝트만 살아남는다.
매니저에 의해 일방적으로 일을 할당받는 경우는 없으며, 개발자가 직접 프로젝트 중에서 자신에게 맞는 것을 찾아서 하거나 직접 새로운 프로젝트를 제안한다. 대신 아무도 관심을 가지지 않거나 매력 없는 프로젝트는 주목받지 못하고 사라지며, 이러한 시스템에서 살아남는 것만이 구글의 서비스로 제공된다.

2. 소규모로 구성되는 프로젝트 팀
개발자가 자신의 프로젝트를 담당하며, 1개의 프로젝트 팀은 2~6명의 소수 인원으로 구성된다. 큰 프로젝트는 복수의 작은 프로젝트로 분할하여 계층적인 팀을 구성하는데 어느 쪽이든 하나의 팀은 소수의 인원으로 유지되고, 팀 내에서 밀접한 커뮤니케이션을 통해 프로젝트를 진행한다.

구글의 개발 거점은 전 세계에 걸쳐있으며, 팀 멤버도 분산되어 있다. 각 멤버는 주로 메일이나 IM(Instant Messenger), 영상회의, 팀 블로그 등을 통해 연락을 주고 받는다. 각 프로젝트 팀은 프로젝트의 제안에서부터 설계, 코딩, 테스트, 성능 평가, 데모 버전의 운용 및 Document 작성까지 전 과정을 수행하게 되며, 프로젝트의 진척 사항은 데이터베이스로 관리되고, 상황에 맞게 갱신된다. 모든 개발자는 담당 프로젝트와 별도로 업무 시간의 20%를 다른 새로운 프로젝트에 써야 한다. 이것이 20% 규칙이다. 20% 규칙에는 다른 사람의 프로젝트를 도와줘도 좋고, 자신이 하고 싶은 새로운 프로젝트를 구상해도 상관없다. 어쨌든 새로운 분야에도 손을 대보게 함으로써 시야를 얿히는 것이 주된 목적이다.

3. 코드 리뷰에 의한 품질 향상
코드 리뷰(Code Review)가 필수다. 어떤 프로그램을 작성하면 반드시 그것을 다른 개발자에게 읽어 보게 한다. 이렇게함으로써 소스 코드의 가독성과 품질이 높아지고, 동시에 잠재적인 에러를 발견할 가능성도 커진다. 또한 개발자들이 소스 코드를 통해 서로 지식을 교환함으로써 노하우 공유와 학습 효과를 얻을 수 있다.

코드 리뷰에는 2가지 단계가 있다. 첫 단계는 프로젝트의 오너에 의한 리뷰로 프로그램이 논리적으로 바르게 동작하는지 확인한다. 2번째는 가독성(Readability) 리뷰라고 불리는 것으로 코딩 스타일(Coding Style)이 올바른지 확인한다. 구글에서는 언어별로 코딩 스타일이 통일되어 있어 누가 작성하더라도 동일한 스타일의 소스 코드가 만들어진다.

4. 초기 단계부터 성능 고려
구글의 소프트웨어는 처리 성능을 중요시 한다. 하나의 소프트웨어가 몇 천 대나 되는 컴퓨터에서 작동하기 때문에 약간의 성능 갸선이라 할지라도 전체적으로 큰 영향을 주며, 그 만큼 하드웨어 비용이 억제되기도 한다.

5. 새로운 웹 서비스를 시작하기까지
1) 아이디어를 제안한다: 제안된 아이디어는 우선 데이터베이스에 등록되고, 온라인 투표 시스템을 이용하여 전 직원의 의견을 모은다.

2) 기본 설계를 문서로 만든다: 배경 및 목적(Why?), 설계(How?), 멤버(Who?), 보안 및 프라이버시에 대한 고찰, 테스트 플랜

3) 데모를 만들고 의견을 모은다: 데모는 구글 사내 포털 사이트에 올라가고 발표의 장인 TechTalk 등 다양한 기회를 통해 소개된다.

4) Google Labs와 Beta 버전: 외부에 공개할 정도의 완성도에 이르면 Google Labs의 새로운 서비스로 일반인에게 공개한다. 일반인의 평판이 좋은 것은 다시 베타 버전으로 격상되어 구글의 새로운 서비스의 하나로 합류한다.

5) 정보는 철저하게 공유: 메일링 리스트와 블로그, 도큐먼트와 데이터베이스, TechTalk, TGIF, 이력서와 스니펫, 분기 보고

<출처: 구글을 지탱하는 기술>

구글의 비밀을 엿보는 재미

Google(구글)의 화면은 아주 단순하지만, 그 커튼 뒤의 세상은 단순하지 않다. 방대하고 복잡하며 치열하다. 백만대가 넘는 서버(Server)가 빠르게 움직이고 있다. 한쪽 끝에서는 부지런히 웹(Web)을 돌아다니며 데이터를 수집하고 있다.반대쪽 끝에서는 세계 각지에서 쏟아져 들어오는 사용자들의 요청을 처리하기에 바쁘다. 모든게 치밀하게 연결되어 마치 거대한 하나의 생명체처럼 꿈틀거리면서 단순한 검색 결과의 화면을 쉴 새 없이 뿜어준다.

정확하게 말하면 Google은 검색 엔지 회사가 아니라 일종의 데이터 관리 회사다.구글은 검색할 수 있는 URL의 수가 1조를 넘는다고 하며, 하나의 URL이 다수의 다른 URL을 가질 수 있는 것을 생각하면 구글이 관리하는 데이터의 양은 상상을 초월한다. 여기에 Gmail 같은 다른 서비스의 데이터도 더해지면서 엄청난 양의 데이터를 수집, 정리하고 관리한다. 구글의 검색 성능이 탁월한 것은 데이터를 탁월하게 관리하는 것에서 출발한다.

숱한 자료의 탄생과 성장과 분화와 죽음이 끝없이 이어지는 웹은 살아있는 정글이다. 웹 검색 엔진은 이런 정보 생태계의 상황을 그대로 소화할 수 있어야 한다. 특히 구글처럼 웹 페이지 사이의 링크 분석을 검색 순위에 깊이 반영하는 경우는 전체 자료들 사이의 복잡한 관계를 분석하는 일도 필수적이며,이 모든 작업의 결과를 모아 단순하고 빠르게 표시해야 한다.

구글의 시스템은 웹을 닮았다. 무엇보다도 자신들의 모태가 되는 웹의 구조를 그대로 가져왔다. 데이터 처리는 한 곳에 집중시키지 않고 자원을 분산시켜 처리한다. 이런 엄청난 규모의 서버와 데이터를 구글처럼 저렴하면서도 안정적으로 운영하는 회사는 없다. 완벽한 시스템보다는 효과적인 시스템을 추구하며, 하드웨어가 아니라 소프트웨어를 통하여 안정성을 유지한다. 문제를 피하기보다는 끊임없이 문제가 생긴다는 것을 전제로, 문제가 발생하면 즉각 다른 대안으로 연결된다. 누군가 더 큰 돈을 쏟아 부으면 규모는 흉내낼 수 있을 지 모르겠지만 안정성과 확장성까지 따라잡을지는 의문이다.

'클라우드 컴퓨팅', '스케일러블 컴퓨팅' 같은 딱딱한 용어를 사용하지 않아도 구글속에 컴퓨팅의 미래가 있다.

<출처: 구글을 지탱하는 기술>

웹 컴퓨팅 유틸리티의 시대가 오고 있다

구글(Google)의 최고 경영자 에릭 슈미트(Eric Schmidt)가 썬마이크로시스템즈의 최고 기술책임자로 있을 당시인 1993년에 예언했듯이, "네트워크가 프로세서만큼 빨라지면, 컴퓨터는 네트워크 속으로 빨려 들어가 네트워크를 가로질러 퍼질 것이다."

웹(Web)은 모든 종류의 컴퓨터 그리고 모든 형식의 디지털 정보를 수용할 수 있도록 설계되고 있다. 예전에 호환성이 없던 이종의 시스템들이 웹을 통하여 단일 시스템으로 작동할 수 있게 바뀌고 있다. 데이터 전송 및 번역에 보편적인 수단을 제공하는 것으로 웹은 수천, 수만의 고객 요구를 동시에 만족시킬 수 있는 중앙 집중화된 컴퓨팅 장치를 고안하는데 박차를 가하고 있다.

새로운 산업의 선구자들은 거대 기업들이 자체 사설 시스템에 대한 통제권을 단념하고, 엄청난 자본을 투입한 데이터센터를 폐기하도록 설득하게 될 것이다. 컴퓨팅의 경제학은 변했다. 이제 PC 시대는 저물어가며, 새로운 시대인 웹 컴퓨팅 유틸리티 시대가 다가오고 있다.

[출처: "Big Switch"]

세계에서 가장 큰 컴퓨터

구글의 데이터센터들은 컴퓨터 과학계의 최고 지성들에 의해서 설계되었다. 이 데이터센터들은 정밀하게 조정된 시스템(전설적인 컴퓨터 설계자 Danny Hillis가 "세계에서 가장 큰 컴퓨터"라고 부르는 것)으로서 작동한다. 그 시스템을 구성하는 각각의 부품들은 빈틈없이 조화롭게 작동하게끔 정교하게 설교되었다. 각각의 센터는 하나 혹은 그 이상의 주문 제작한 서버 컴퓨터들로 구성된 "클러스터"를 포함하고 있다. 서버 컴퓨터들은 구글이 자사의 제조사들로부터 직접 구매한 저렴한 가정용 PC와 거의 같았다.

각각의 컴퓨터는 엔지니어들이 에너지 소모를 최소화하기 위해 개발한 전력 공급 유닛을 통해서 전기를 공급받는다. 그 기기들은 프로그래머들이 최대 속도로 운영되도록 정밀하게 조정한 무료 Linux 운영 체제의 버전을 실행한다. 구글은 자사의 중앙 센터들을 하나로 연결하는 많은 광케이블을 소유하고 있어, 중앙 센터들 사이는 물론이고, 센터와 일반대중이 사용하는 인터넷 사이의 데이터 흐름을 정확하게 통제할 수 있다.

시스템을 하나로 결합시키는 접착제 역활을 하는 것은 구글이 직접 개발한 자사 소유의 독점 소프트웨어다. 이 소프트웨어는, 클러스터에 속한 모든 서버들을 통합 조정하기 위해, 또한 구글의 센터들에 속해있는 모든 클러스터들을 통합 조정하기 위해 개발되었다.

구글은 데이터베이스에 꾸준히 모아지고 업데이트되는 사실상의 인터넷 전체를 지속적으로 복사하고 있다. 그리고 인터넷 전체를 모으고 업데이트하는 것은 "스파이더 링" 프로그램이다.일련의 비밀 알고리즘들은 특정 키워드와의 관련성에 따라 웹 페이지들을 하나도 빠짐없이 분류한다. 모든 웹페이지를 분석해 웹의 포괄적인 색인을 생성한다. 그러면 색인은 각각의 클러스터에 복제된다. 한 사람이 키워드를 구글의 검색 엔진에 입력하면, 소프트웨어는 클러스터들 중 하나에 검색 명령을 내린다. 그러면 해당 클러스터는 수백 또는 수천의 서버에 의해서 동시에 재검사된다.

구글의 엔지니어들에 따르면, 전형적인 검색이 수백업 사이클과 수백 메가바이터의 일기를 요한다고 하더라도, 전체적인 처리는 순식간에 일어난다. 모든 클러스터와 개개의 서버들 사이에서 처리량의 균형을 유지하는 것은 일종의 교통 역할을 하는 조정 소프트웨어다.

[출처: "Big Switch"]

팔로어