Top

클라우드 컴퓨팅 구현 기술 [구글, 페이스북, 야후, 아마존이 채택한 핵심 기술 파헤치기]

  • 지은이김형준, 조준호, 안성화, 김병준
  • ISBN : 9788960771703
  • 30,000원
  • 2010년 12월 23일 펴냄
  • 페이퍼백 | 544쪽 | 188*250mm
  • 시리즈 : acorn classics, 클라우드 컴퓨팅

책 소개

그동안 클라우드 컴퓨팅 분야에서 많이 다루지 않았던 시스템이나 서비스의 개발과 관련된 내용을 다룬다. 기존의 클라우드 컴퓨팅이 기술적인 분야에서 가상화, 프로비저닝 등에 초점이 맞춰져 있었다면 이 책에서는 분산 아키텍처를 이용해 확장성, 가용성 있는 시스템, 서비스를 개발하기 위한 아키텍처를 제시하고, 이를 구현할 수 있는 오픈소스를 소개한다. 책에서 소개하는 아키텍처와 오픈소스를 이용해 스토리지 서비스 같은 인프라 서비스에서부터 블로그, 소셜네트워크 분석 서비스 등과 같은 클라우드 서비스를 구축할 수 있다.


[ 지디넷코리아 | 저자대담 ] 클라우드 컴퓨팅의 미래를 보다




[ 이 책에서 다루는 내용 ]

■ 클라우드 컴퓨팅의 출현 배경과 구글, 아마존, 세일즈포스닷컴의 클라우드 컴퓨팅 소개
■ 클라우드 컴퓨팅의 정의와 분류
■ 확장성, 가용성 있는 클라우드 컴퓨팅 시스템을 구축하기 위한 아키텍처
■ 분산 아키텍처를 적용한 애플리케이션 서버 구축 방법
■ 분산 환경에서의 동기화 제어와 쉽게 해결해 주는 오픈소스 주키퍼(ZooKeeper)
■ 대용량 파일을 저장하고 빠르게 분석할 수 있는 하둡(Hadoop)
■ 대용량 구조화된 데이터를 저장할 수 있는 NoSQL, 오픈소스 클라우데이터(Cloudata), Hbase, 카산드라(Cassandra), 몽고디비(MongoDB)
■ 분산 환경에서의 로그 수집 및 저장을 위한 오픈소스 척와(chukwa), 스크라이브(scribe)
■ 시스템의 성능 향상을 위한 캐시 솔루션인 memcached, 멤베이스(membase)
■ 단원별로 사용된 오픈소스에 대한 설치 방법과 블로그 예제 프로그램을 통한 실제 사용 방법


[ 이 책의 대상 독자 ]

이 책은 클라우드 컴퓨팅을 다루지만 인프라 측면이 아닌 시스템, 서비스의 개발과 관련된 내용을 다룬다. 따라서 분산 아키텍처를 이용한 확장성, 안정성있는 시스템을 구축하려는 개발자들을 위한 책이다. 분산 파일 시스템, NoSQL 등과 같은 클라우드 기반의 시스템 소프트웨어에 대해서도 설명함으로써 대용량 데이터 저장소를 구축하려는 운영자들에게도 도움이 된다.

자바, C 언어 등과 같은 프로그래밍 언어를 이해하고 있거나 시스템을 구축해 본 경험이 있으면 쉽게 이해할 수 있을 것이다.


[ 이 책의 구성 ]

이 책은 두 개의 부로 구성되어 있다.

1부에서는 클라우드 컴퓨팅의 개요와 속성을 설명하며, 클라우드 컴퓨팅의 속성을 만족하는 시스템을 구축하기 위한 아키텍처를 제시한다.

2부에서는 제시된 아키텍처의 세부 구성 요소를 설명하고, 실제 적용을 위해 현재 사용 가능한 오픈소스를 소개한다. 각 분야의 오픈소스는 개념에 대한 이론적인 설명, 설치, 사용 방법, 예제 프로그램 등의 형태로 다뤘다.


[ 추천의 글 ]

Scene 1
오늘은 36살이 얼마 남지 않은 크리스마스 이브다. 한 달 전 소개팅으로 만난 그녀와의 저녁 약속을 생각하니 벌써부터 가슴이 설렌다. 그녀와는 마음도 잘 맞고 관심사도 비슷해 애인 사이로 발전해 내년에는 반드시 결혼했으면 좋겠다. 개발자의 삶을 살면서 여자를 만나 결혼까지 골인한다는 것이 쉽지 않음을 몇 번의 경험을 통해 알고 있기 때문에 그 간절함이 더 크다.
그녀를 만나러 가는 버스 안이다. 현재 시간은 6시 45분. 약속 시간이 7시 30분이라 아직까지 시간적인 여유가 있다. 이때 걸려오는 전화 한 통에 갑자기 불안감이 몰려든다.
……
역시 내 예상은 빗나가지 않았다. 오늘 크리스마스에 맞춰 진행한 이벤트가 대박이 나면서 서버가 다운됐다는 것이다. 서버 재시작을 통해 복구하고 있지만 엄청나게 몰려드는 트래픽을 감당하지 못해 계속 다운되는 상황이 반복 중이라 한다.
근본적인 해결책은 서버를 증설하는 것인데, 서버를 증설하고 재설정하는 데 며칠이 소요되는 상황이라 현재는 이 방법을 택할 수 없다. 딱히 좋은 해결책이 떠오르지 않아 막막할 따름이다.
그나저나 오늘 데이트도 물건너 갔다. “개발자는 일과 삶의 균형을 맞추면서 살수는 없는 것인가?”라고 중얼거리면서 회사로 향하는 버스로 갈아탄다.

Scene 2
개발자로서 거의 10년의 경력을 쌓아왔지만 서비스를 통해 사용자와 호흡을 맞춰 간다는 것이 이렇게 기쁜 일이라는 경험을 처음하고 있다. 스스로 경험을 쌓으면서 날로 개선되는 기능은 사용자가 원하는 기능을 우선적으로 개발하는 선순환 구조를 열어가면서 서비스는 빠른 속도로 성장하고 있다.
임원진들은 지금 시점이 서비스를 한 단계 더 성장시키기 위한 기회로 보고 최근 가장 인기 있는 가수 중 한 명인 ‘아이유’를 CF 모델로 선정해 대대적인 마케팅을 펼치는 중이다. 이 같은 마케팅 효과 때문에 이전보다 서비스의 성장 속도는 2배 이상 가파르게 증가하고 있다. 서비스가 급격히 성장하는 것은 기쁜 일이지만 한편으로는 현재 시스템이 이 같은 성장 속도를 견뎌낼 수 있을지 걱정스러움이 앞선다. 트래픽이 증가할 때마다 주기적으로 웹 애플리케이션 서버를 증설해 해결하고 있지만 서버를 증설하고 모니터링하는 데 너무 많은 시간을 투자하고 있어 개발 업무에 투자할 수 있는 시간도 줄고, 업무에 대한 만족도도 계속 떨어지고 있다.
……
드디어 올 것이 왔다. 그동안 우려하던 일이 현실에서 발생했다. 트래픽이 증가할 때마다 웹 애플리케이션 서버를 증설했더니 이에 대한 부담이 모두 데이터베이스 서버로 집중되면서 오늘 오후 데이터베이스 서버가 다운됐다. 데이터베이스 서버를 증설하는 일은 애플리케이션에 대한 수정도 필요하기 때문에 웹 애플리케이션 서버를 증설하는 일에 비해 몇 배의 시간이 필요하다. 이 문제를 단기적으로 해결할 수 있는 방법은 기존 데이터베이스 서버보다 사양이 더 좋은 초울트라 슈퍼짱인 서버를 도입하는 길밖에 없기 때문에 막대한 비용을 투자해 서버를 확보하고 서비스를 정상화시킨다. 그나저나 얼마나 버틸 수 있을까?

위 두 상황은 우리 주위에서 흔히 볼 수 있다. 일과 삶에 균형을 맞추는 것이 힘들어 제대로 된 사람으로서의 삶을 살지 못하고 있는 개발자들… 서비스의 급격한 성장에 제대로 대응하지 못해 그저 그런 서비스로 전락해 버린 국내의 많은 사례들… 그 이면에는 빨리빨리 문화로 인해 품질을 보장하지 못하는 것이 하나의 원인이며, 또 한편으로는 급격하게 변화하는 서비스 환경에 시스템 인프라가 발 빠르게 대응하지 못하는 것이 또 하나의 원인이다. 이 책은 이런 문제점에 대한 해결책을 제시해준다. 일과 삶에 균형을 맞추고, 서비스 변화에 발 빠르게 대응하기 위한 방법을 찾고자 한다면 이 책을 통해 새로운 전략을 세울 수 있을 것이다.

- 박재성 / XLGames 웹 개발자, 자바지기 커뮤니티 운영자

클라우드 컴퓨팅의 이론부터 구현까지, 사례를 통해 생생하게 느낄 수 있다. 실무담당자라면 이 책에서 유용한 힌트를 얻을 수 있을 것이다.

- 김민석 / NHN I&S

메인프레임, 클라이언트/서버를 이어 클라우드 컴퓨팅은 컴퓨팅의 새로운 장을 열고 있다. 항상 새로운 패러다임이 나올 때마다 제각각 부족한 정보와 지식으로 왜곡되고 편협한 재단을 하면서 훼예포폄하고 있다. 그러나 이 책에서는 클라우드의 기본부터 세밀한 구조까지 균형 잡힌 설명을 하고 있다. 클라우드의 사용자, 사업자, 개발자, 학생 등까지 널리 추천할 만하다.

- 서정식 / KT Cloud 추진본부 본부장

클라우드 컴퓨팅은 이제 거스를 수 없는 큰 흐름이 됐다. 최근의 클라우드 컴퓨팅이 인프라에 집중하고 있다면 이 책은 그 다음을 준비하는 내용을 담고 있다. 가상의 인프라 환경에서는 그 위에서 운영되는 소프트웨어도 가상 환경으로 운영될 수 있는 아키텍처로 구현돼야 한다. 이 책에서는 어떻게 그런 소프트웨어나 서비스를 만들 수 있는지 알려준다. 지금까지 클라우드 컴퓨팅에 관한 기술 서적이 제대로 없었는데, 이 책이 하나의 획을 그을 수 있지 않을까 생각한다.

- 성기준 / SKC&C 클라우드컴퓨팅 사업본부 본부장

이 책은 모호하게만 들리던 클라우드가 무엇인지 아주 쉽고 명확하게 알려준다. 또한 대용량 시스템을 오랜 시간 경험해온 저자들답게 IT 환경에서 항상 고민해 온 각종 자원 관리에 대한 수많은 고민을 매우 수준 높은 시각에서 실질적인 해결책을 제시한다. 클라우드가 무엇인지, 또 시스템의 효율적인 관리를 고민해온 개발자나 운영자라면 반드시 읽어볼 것을 권한다.

- 이정룡 / 삼성SDS 인트라넷혁신그룹

클라우드 컴퓨팅을 취재하면서 곳곳에 포진한, 열정을 가진 전문가들을 만날 수 있었다. 그것이 가장 좋았다. 장님이 코끼리 뒷다리 만지듯 헤매고 있었을 때 이들은 내게 클라우드가 무엇인지, 그리고 지금 우리에게 필요한 것과 채워야 할 것 등을 아무런 대가 없이 흔쾌히 가르쳐줬다. 새로운 흐름을 파악하고 구현하기란 생각처럼 쉬운 일이 아니다. 끊임없는 문제 해결에 대한 호기심과 열정, 도전이 필요하다. 이 책을 쓴 이들은 한결같이 이런 공통점이 있는 것 같다. 그런 호기심들을 통해 경험하고 쌓은 지식들이 새로운 열정을 가진 이들에게 고스란히 전파될 것이다. 이 책은 충분히 그런 열정과 경험들을 전달하고도 남음이 있다. 지식과 경험을 공유하면 상상할 수 없는 일들이 일어난다. 클라우드 컴퓨팅은 그런 지식의 공유에서 온 커다란 선물일지도 모르겠다. 쉽지 않지만 이 책은 그 선물에 한 발짝 다가서서 제대로 흐름을 읽고, 구현되는 기술을 알 수 있도록 조언해준다. 여전히 모자란 기자에게도 한걸음 더 내딛게 도와주는 도우미 역할을 해줄 것 같다. 혹시 이 책을 보고 열심히 구현했는데 도통 세상에 알려지질 않아 열 받으시는 분들은 언제든지 @eyeball에게 연락 주시기 바란다. 물론 자신들의 경험을 흔쾌히 세상에 공개해준 필진들을 먼저 다룬 다음 서둘러 찾아갈 것이다. 뜬구름들 속에서 가을 하늘에 떠 있는 뭉게구름을 만들고 싶은 이들이 있다면 이 책을 적극 권한다.

- 도안구 / 블로터닷넷 기자

클라우드 컴퓨팅에 대해 강연이나 컨설팅을 하다 보면 듣게 되는 가장 큰 오해가 클라우드 컴퓨팅을 사용하면 애플리케이션이나 서비스가 무조건 확장성 있고 견고하게 된다는 것입니다. 하지만 클라우드라는 것은 그러한 것을 가능케 하는 인프라를 제공해 줄 뿐, 나머지는 모두 사용자의 몫입니다. 결국 애플리케이션이나 서비스 역시 ‘클라우드화’가 돼야 비로소 클라우드의 이점을 십분 발휘할 수 있습니다.

해외에서는 구글, 페이스북, 야후 등이 그러한 클라우드화된 서비스 구조로 돼 있고, 이를 위해 다양한 오픈소스 소프트웨어를 활용하며, 직접 개발해 다시 오픈하고 있습니다. 하지만 국내에서는 그러한 경험이 거의 없고 학습을 위한 자료도 매우 부족한 상황입니다. 이런 국내 현실에서 이 책은 클라우드 마을에 내린 가뭄의 단비 같은 책이라고 평가합니다.

이 책에서 소개된 다양한 오픈소스 소프트웨어는 실제로도 클라우드를 구축하는 데 활용 중이며, 구글, 페이스북 등의 선도 기업에서 핵심 기술로 사용 중입니다. 또한 도입부에서 설명한 IT 아키텍처의 변화는 저자가 오랜 기간 직접 경험하면서 얻은 통찰력을 공유하는 매우 소중한 정보입니다. 현재 클라우드 기술 관련 국내외 서적을 통틀어 이 책만큼 다양하고 중요한 오픈소스를 심도 있게 다루고 있는 책은 없다고 단언합니다.

클라우드를 직접 구축하려는 분, 클라우드를 이용하려는 분, 클라우드 관련 사업을 기획하는 분,클라우드 관련해 연구하시는 분, 클라우드 기술에 관심 있는 분, IT 기술의 미래를 내다보고 싶은 모든 분께 이 책을 권합니다.

- 한재선 / 넥스알 대표이사, 한국 Hadoop 커뮤니티 회장,
KAIST 정보미디어 경영대학원 겸직교수

저자/역자 소개

[ 저자 서문 ]

구글은 수십만 대 이상의 리눅스 서버를 이용해 전 세계의 모든 웹 데이터를 저장, 분석한 후 검색 서비스를 제공한다. 수십만 대의 서버를 관리하고 운영하려면 엄청난 기술이 필요하다. 수십만 대라면 수원, 성남의 인구수와 비슷한 수치다. 구글은 어떤 기술을 이용해 이런 엄청난 규모의 서버와 데이터를 관리할 수 있을까?

2004년부터 차례대로 구글 내부의 플랫폼 구성을 논문으로 발표하면서 구글의 내부 시스템이 세상에 공개됐다. 대용량 분산 파일 시스템 GFS(Google File System), 분산 병렬 처리 플랫폼(MapReduce), 분산 구조 데이터 저장소Bigtable, 분산 락 서비스(Chubby), 이기종 간 데이터 타입 처리 플랫폼(Protocol Buffer) 등을 차례대로 발표했다. 이모든 기술은 분산 컴퓨팅 분야이며, 대규모 분산 환경을 가장 잘 이용하는 회사라고 할 수 있다.

이와 비슷한 시기에 아마존은 온라인 쇼핑 시스템을 운영하면서 구축한 플랫폼과 서비스를 운영하면서 남는 여유 자원을 활용해 EC2(Elastic Cloud Computing), S3(Simple Storage Service) 등을 포함한 AWS(Amazon Web Services)를 서비스하기 시작한다.

이렇게 분산 기술의 발전과 플랫폼 서비스의 발전은 ‘클라우드 컴퓨팅’이라는 새로운 개념으로 포장돼 발표됐으며, 최근에는 수많은 기업이 도입하고 서비스를 제공하기 위해 노력 중이다. 나도 2006년부터 분산 컴퓨팅 분야의 업무를 시작하면서 구글 플랫폼의 오픈소스 버전이라고 할 수 있는 하둡(http://hadoop.apache.org)을 사용하고, 하둡 기반으로 운영되는 데이터 관리 시스템인 클라우데이터(Cloudata, www.cloudata.org)를 개발했지만 그 당시에는 이런 기술을 분산 컴퓨팅 분야로만 알고 있었다. 2008년 클라우드 컴퓨팅이라는 용어가 나오면서 내가 사용했던 솔루션, 기술들이 클라우드 컴퓨팅을 구현하는 핵심 기술이 됐다.

클라우드 컴퓨팅이 확산되면서 수많은 컨퍼런스에서 발표가 이뤄지고 수많은 문서가 나왔지만 대부분 클라우드 컴퓨팅에 대한 정의와 활용만 설명한다. SaaS의 경우에도 기업에서 SaaS를 어떻게 도입할 것인가에 대한 주제가 많다. 실제 클라우드 컴퓨팅 플랫폼을 만들거나, SaaS 서비스를 만드는 방법에 대한 문서나 서적은 거의 없다.

클라우드 컴퓨팅이라는 용어는 업무에 따라 다양한 정의가 나올 수 있다. 인프라 측면에서 보면 서버 가상화 기술을 이용하는 형태로 나타난다. 미터링, 과금 등 과 같은 운영 관리적인 부분도 있다. 프로비져닝 같은 시스템 관리 부분도 있다.

하지만 이런 것들은 부가적인 부분이다. 가장 중요한 것은 실제 업무를 수행하고 데이터를 분석하고 사용자 요청에 비즈니스 로직을 수행하는 애플리케이션에 있다. 애플리케이션이 클라우드적인 특성인 확장성, 유연성, 자기 치료 능력 등을 갖고 있을 때 클라우드 컴퓨팅의 진정한 효과가 나타난다. 이 책에서는 개발자들이 애플리케이션이나 클라우드 컴퓨팅을 구성하는 플랫폼을 개발할 때 어떻게 개발해야 클라우드 컴퓨팅의 속성을 가질 수 있는 시스템을 만들 수 있는지 설명한다.

클라우드 컴퓨팅 관련 기술은 하루가 다르게 발전 중이다. 따라서 이 글에서 제시하는 방법이나 솔루션이 최적의 방안이 될 수는 없다. 하지만 분산된 환경에서 유연한 확장성을 제공하는 기본 아키텍처는 견고하며, 과거에는 EJB, CBD, SOA 등의 이름으로 사용됐다. 이 책에서 제시하는 아키텍처도 과거의 기술과 크게 다르지 않다. 다만 구글에서 오픈한 기술을 최대 활용한 오픈소스를 이용함으로써 과거보다는 쉽고 견고한 시스템을 구축할 수 있게 됐다. 이 책은 클라우드 컴퓨팅 구현 기술이라기보다는 오픈소스를 이용해 확장성, 안정성있는 시스템을 구축하는 방법을 설명한다.

1장에서는 클라우드 컴퓨팅의 출현 배경과 클라우드 컴퓨팅의 정의, 개념을 설명한다. 2장에서는 클라우드 컴퓨팅 플랫폼과 이를 기반으로 하는 SaaS 서비스의 아키텍처를 설명한다. SaaS와 클라우드 컴퓨팅은 별개로 생각할 수 있는 개념이지만 구현이나 개발 관점에서는 모두 유사한 기술 요소를 사용하며, 아키텍처 요구사항도 비슷하다. 따라서 2장에서의 설명은 SaaS와 클라우드에 대한 설명이 혼재하는데, 이것은 개발/구현 관점에서는 매우 비슷하기 때문이다.
또한 SaaS 서비스를 만들려면 아키텍처와 프로그램 모델이 어떻게 돼야 하는지와 서비스에서 사용하는 인프라는 어떤 요소가 필요한지 설명한다. SaaS 서비스 구축에 필요한 이런 요소들은 클라우드 컴퓨팅 플랫폼을 구축하는 데도 그대로 적용될 수 있다. 3장에서 설명하는 쓰리프트(thrift)와 4장의 주키퍼(ZooKeeper), 5장의 하둡을 이용하면 분산 데이터 저장소를 만들 수 있다. 분산 데이터 저장소는 클라우드 플랫폼을 구성하는 주요 컴포넌트 중 하나지만 자체적으로는 데이터를 클라우드 환경에서 서비스해주는 데이터베이스 SaaS 서비스다.

책에서 설명하는 모든 솔루션은 오픈소스다. 오픈소스 중 문서화가 잘돼 있는 것도 있지만 그렇지 않은 경우도 많다. 그리고 오픈소스는 버전업되면서 많은 기능이 바뀌기도 한다. 문서가 없는 것은 소스와 예제를 보거나 다른 블로거의 글을 참고했으므로 잘못된 내용이 있을 수도 있다. 가급적 정확한 내용을 전달하기 위해 노력은 했지만 일부 잘못된 내용이 있을 수 있음을 미리 밝혀둔다. 그리고 버전업돼 기능이 바뀌어도 사용할 수 있게 개념과 동작 원리, 내부 구조 등도 최대한 설명하고자 노력했다.

1장은 클라우드 컴퓨팅의 기본 개념을 설명하는데, 이 부분을 이미 이해하고 있는 독자는 2장부터 시작해도 좋다.

이 책에서 다루지 않는 내용: 클라우드 컴퓨티 관련 기술 중 애플리케이션 개발 관련되지 않은 가상 머신, 네트워크 같은 인프라 기술은 이 책에서 다루지 않는다.

인터넷에서 인용한 글은 최대한 출처를 밝히고자 노력했다. 하지만 다양한 분야의 오픈 소스 솔루션을 소개하다보니 본문에 출처 없이 인용된 글이 있을 수 있다.


[ 저자 소개 ]

김형준
J2EE 아키텍처와 도메인 모델 분야를 연구하면서 『J2EE 컴포넌트 만들기』, 『자바 파일럿 프로젝트 실무』 등을 집필했으며, 최근 4년 동안은 하둡이나 NoSQL 같은 분산 컴퓨팅, 클라우드 컴퓨팅 분야를 연구하며 실제 서비스에 적용 중이다. 또한 구글의 데이터 관리 시스템인 Bigtable을 구현한 오픈소스 프로젝트인 클라우데이터(cloudata, www.cloudata.org) 프로젝트를 진행 중이다. SDS, NHN을 거쳐 지금은 클라우드 기반 검색 전문 업체인 그루터(gruter)에서 클라우드 컴퓨팅 컨설팅 업무를 수행 중이다.

조준호
현재 넥스알(NexR)에서 클라우드 스토리지 플랫폼과 하둡(Hadoop) 기반의 솔루션을 개발하고 하둡 관련 컨설팅, 강의 등을 진행했다. 대용량 데이터에 대한 처리와 저장 방법에 대해서 고민하고, 분산 시스템을 좀 더 효율적으로 관리하는 방법에 대해서도 연구 중이다.

안성화
NHN 성능 엔지니어링 팀에서 네이버의 주요 서비스들을 더 빠르게 하는 방법을 찾는 일을 하고 있다. 주로 NHN의 캐시 클라우드(Cache Cloud) 시스템인 Arcus를 제작하는 프로젝트 팀의 일원으로 활동 중이고, Memcached 주개발사인 Membase 사와 진행 중에 있는 Membase 프로젝트에 참여하고 있다.

김병준
현재 NHN 비즈니스 플랫폼에서 근무 중이며, 사내 MySQL 전문가로 MySQL 컨설팅, 튜닝과 강의 등을 진행했다. CMDBA(Certified MySQL DBA)로서 마이크로소프트웨어 등 다수의 잡지에 기고하고, 외부 강연 등을 했다. 기업 환경에서의 오픈소스 데이터베이스와 NoSQL 적용에 특별한 관심을 갖고 있다.

목차

목차
  • 1부 클라우드 컴퓨팅 개요
  • 1장 클라우드의 출현
    • 인터넷 서비스 업체의 성공
      • 아마존의 인프라 서비스
      • 구글의 컴퓨팅 인프라와 플랫폼 서비스
      • 세일즈포스닷컴의 소프트웨어 서비스
      • 뉴욕타임즈의 클라우드 컴퓨팅 활용 사례
    • 클라우드 컴퓨팅 개념의 등장
      • 포괄적인 개념으로서의 클라우드
      • 클라우드 컴퓨팅에 대한 정의
      • 클라우드 컴퓨팅의 분류
  • 2장 클라우드 컴퓨팅 아키텍처
    • 아키텍처의 변화
      • 분산 아키텍처의 출현
      • 프레임워크와 경량 컨테이너
    • 클라우드 서비스를 위한 아키텍처
      • 분산 기술의 발전
      • 아키텍처
      • 단계별 진화
    • 오픈소스 솔루션
  • 2부 클라우드 컴퓨팅 기술
  • 3장 경량 애플리케이션 서버
    • 쓰리프트: 페이스북의 애플리케이션 서버
      • 시스템 요구 사항
      • 설치
      • 인터페이스 정의 언어
      • 코드 생성과 개발
      • 데모: 블로그 애플리케이션 서버
    • 에이브로: 더그 커팅이 만든 애플리케이션 서버
      • 스키마
      • 객체 컨테이너 파일
      • 프로토콜
      • 설치
      • 코드 생성와 GenAvro
      • 서버와 클라이언트 코드 개발
    • 제티: 내장형 웹서버
  • 4장 분산 코디네이터
    • 분산된 환경에서의 고려 사항
      • 네임 서비스/부하 분산
      • 분산 락이나 동기화 문제
      • 장애 상황 판단 문제
      • 환경 설정 값 관리
    • 주키퍼: 야후의 분산 코디네이터
      • 주키퍼 시스템 구성
      • 주키퍼 설치
      • 데이터 모델
      • 세션
      • 이벤트 처리
      • 데이터 관리 정책
      • 멀티서버 구성과 운영
      • C 언어 API
      • 분산 락 구현
    • 분산 시스템 구성: 주키퍼 활용
      • 클러스터 멤버십과 네이밍 서비스
      • 이중화 구성
      • 애플리케이션 환경 설정 관리
      • 생성자/소비자
  • 5장 하둡 분산 파일 시스템
    • 구글 파일 시스템
    • 하둡 파일 시스템 구성
      • 동작 방식
      • 특징과 장단점
    • 설치
      • 설치 요구 사항
      • ssh 환경 설정
      • 다운로드
      • 환경 설정
      • 배포
    • 하둡 파일 시스템 운영
      • 실행과 관리
      • 데이터 노드 제거
      • 사용자 루트 패스
      • 안전 모드
    • 파일 시스템 API 활용
      • 기본 파일 처리 API
      • 데모: 블로그 애플리케이션
      • 응용 사례: 클라우드 스토리지 서비스
  • 6장 대용량 데이터 분석 프레임워크 맵리듀스
    • 맵리듀스 소개와 구조
      • 맵리듀스 프로그램 모델
      • 시스템 구성
      • 맵리듀스 처리 흐름
    • 설치
      • 스크립트 환경 설정
      • mapred-site.xml
      • 실행과 중지
      • 작업 관리 명령
    • 맵리듀스 프로그래밍
      • WordCount 예제
      • 맵리듀스 프로그래밍 요소
      • 데이터 흐름 설계
      • InputFormat 구현
      • 파티셔너 구현
      • OutputFormat 구현
      • 공통 데이터 배포
      • 디버깅
    • 맵리듀스 튜닝
      • 맵 태스크
      • 병합 정렬(Merge Sort)
      • 리듀스 태스크
      • 잡 트래커와 태스크 트래커 튜닝
    • 정렬
      • 부분 정렬
      • 전체 정렬
    • 조인
      • 맵 사이드 조인
      • 리듀스 사이드 조인
    • 하둡 버전
  • 7장 NoSQL
    • NoSQL 개요
      • CAP 이론
      • NoSQL의 특징과 분류
    • 구글 빅테이블
    • 클라우데이터
      • 시스템 구성
      • 데이터 모델
      • 데이터 분산
      • 데이터 저장
      • 클러스터 멤버십과 장애 복구
      • 설치
      • 실시간 데이터 처리
      • 배치 데이터 처리
      • 클라우데이터 셸
      • 응용 사례 1: 블로그 데이터 저장
      • 응용 사례 2: 크롤과 검색 서비스
      • 성능
    • HBase
      • 데이터 모델
      • 설치
      • 예제 프로그램
      • 배치 데이터 처리
    • 카산드라(Cassandra)
      • 다이나모(Dynamo)
      • 카산드라 시스템 구성
      • 데이터 모델
      • 데이터 분산
      • 클러스터 멤버십과 장애 복구
      • 설치
      • 예제 프로그램
      • 정합성 수준
      • 응용 사례: 블로그 데이터 검색
    • 몽고디비
      • 데이터 모델과 인덱스
      • 데이터 복제와 샤딩
      • 설치와 실행
      • 가용성, 확장성 구성
      • 예제 프로그램
      • 맵리듀스
    • MySQL 분산 구성
      • MySQL 마스터-슬레이브
      • MySQL 고가용성 구성
      • MySQL MMM
      • MySQL MMM 설치
    • NoSQL 사용 시 주의 사항
  • 8장 로그 수집과 분석
    • 척와: 하둡 기반의 로그 저장 분석 솔루션
      • 시스템 구성과 동작
      • 딜리버리 모델
      • 데이터 모델과 처리
      • 설치
      • 동적 로그 수집 설정
    • 스크라이브: 페이스북의 로그 관리 솔루션
      • 설치
      • 스토어 구성
      • 분산 구성
  • 9장 캐시: 성능 향상을 위한 필수 요소
    • 메모리 캐시
    • memcached
      • 설치
      • 프로토콜
      • 명령
      • C/C++ 클라이언트 라이브러리
      • 자바 클라이언트 라이브러리
    • 멤베이스(Membase): 분산 memcached 서버
      • 멤베이스 서버 개요
      • 멤베이스 서버 설치
      • 버킷 구성
      • 멤베이스 클라이언트 예제

관련 블로그 글

대세를 잡아라! 『클라우드 컴퓨팅 구현 기술』
사용자 삽입 이미지
클라우드 컴퓨팅 구현 기술
구글, 페이스북, 야후, 아마존이 채택한 핵심 기술 파헤치기
김형준, 조준호, 안성화, 김병준 지음
544쪽 | 30,000원 | 2010년 12월 23일 출간
YES24, 교보문고, 강컴, 인터파크, 알라딘, 리브로

페이스북의 마크 주커버그가 <타임>지 올해의 인물로 뽑혔을 때 최종까지 경합을 벌인 인물이 있었다고 합니다. 바로 위키리크스(WikiLeaks)의 줄리안 어샌지였죠. 우리나라 정치판마저 벌벌 떨게 한 파급효과가 컸던 위키리크스는 올 연말 아마 최대의 화젯거리가 아닌가 싶습니다. 아마존 페이스북 트위터 등 각 사이트가 기부 결제 서비스를 중단하고 해커 계정을 삭제하며 전방위 압박에 나섬과 함께 어샌지 지지자들은 어샌지에 등을 돌린 각국의 단체와 기관, 기업, 웹사이트에 대규모 분산서비스거부(디도스, DDos) 공격을 시도했습니다.

여타 정황에 대한 것은 뒤로 하고, 우리가 주목해야 할 부분이 있습니다. 지지자들의 대규모 사이버 보복에도 멀쩡하게 아무런 장애를 입지 않은 기업이 하나 있었으니 바로 아마존닷컴(amazon.com)이었습니다.

위키리크스 사이버공격 아마존엔 안 먹혀

위 기사에서는 간단히 '연말 성수기에 대비한 초대형 서버용량'이라고 표현했지만, 그 엄청난 양의 대규모 공격을 피할 수 있었던 가장 큰 요인은 바로 아마존의 뛰어난 클라우드 컴퓨팅 기술 덕분이었습니다.

사용자 삽입 이미지

고래가 나타났다!

부쩍 트위터에서 고래 그림을 자주 만납니다. 서버에 부하가 걸려 장애가 일어났음을 알리는 이 그림이 처음에는 사용자를 위한 센스나 배려같은 느낌으로 다가왔지만, 한두 번 반복되면 짜증이 나기 일쑤입니다. 이런 상황을 자꾸 반복해 겪다 보면 과연 조급증이 넘치는 현대 사용자를 붙들어놓을 수 있겠습니까?

클라우드 컴퓨팅에 관한 한 트위터는 준비가 매우 뒤처진 기업임에 분명합니다. MySQL 기반의 관계형 데이터베이스인 RDBMS로 구축된 사이트 구조의 혁신과 해결방안을 꾀하고는 있지만 아직도 많은 어려움을 겪고 있다고 합니다.

구글, 아마존, 야후, 페이스북의 공통점

네 기업의 공통점을 한번 꼽아보세요. 쟁쟁한 웹 기업. 맞습니다. 세상의 이목을 끄는 기업. 네, 맞죠. 돈을 끌어모으는 회사, 네, 그것도 물론입니다. 하지만 그보다 이 네 기업은 클라우드 컴퓨팅 기술을 성공적으로 구축하고 도입하여 운영 중인 기업들입니다. 여기에 모바일미와 앱스토어 서비스를 필두로 한 애플, 가장 각광 받는 게임 업체 징가(Zynga) 등도 그 한 축에 자리하고 있습니다.

IBM, HP, 오라클. 전통을 자랑하고 내로라하던 왕년의 기업들의 이름을 보기가 쉽지는 않습니다. 여러 가지 이유가 있겠지만, 이는 지금 현재도 우리가 모르는 사이 IT 산업의 모든 무게중심이 전통적인 컴퓨팅 기업에서 인터넷 서비스 업체로 그리고 엔터프라이즈급 규모에서 웹 스케일 규모로 조금씩 옮겨가고 있다는 의미입니다.

그렇다면 우리 나라 최고기업 삼성전자는 클라우드 컴퓨팅과 상관이 없을까요? 전화 단말기 시장이 스마트폰으로 옮겨가면서 예전같으면 웹사이트 하나로 모든 고객과 상호소통했던 통로가, 1억 개가 넘는 단말기로 확대 되면서 모두가 동시에 접속할 "수"도 있는 소셜허브(Social Hub) 시장이 열렸습니다. 무시무시하죠. 각 기업 내부의 데이터도 어마어마한 수준으로 나날이 폭증하고 있습니다. 또한 국내 사업을 넘어 글로벌 비즈니스를 추진함으로써 사용자 규모도 이젠 예전과 비교할 수도 없습니다.

KT, SKT, NHN, 삼성전자, 엘지전자뿐만 아니라 그 사업과 연계된 모든 비즈니스 기업이 이젠 클라우드 컴퓨팅의 필요성을 자각하고 대처해야 하지 않을까 싶습니다.

그렇다면 클라우드 컴퓨팅이란?
그거 전혀 새로운 거 아니야, SaaS잖아.


저자 김형준 님에 따르면 클라우드 컴퓨팅은 세 가지로 나눈다고 합니다.
SaaS(소프트웨어 서비스), PaaS(플랫폼), IaaS(인프라).

우리가 흔히 알고 있는 세일즈포스닷컴이 바로 대표적인 SaaS기업이죠. 그리고 아마존의 EC2는 플랫폼 기반 IaaS로 분류되며, 구글은 앱엔진의 경우는 PaaS, 구글 앱스는 SaaS로 분류할 수 있다고 합니다. ASP에서 SaaS로 넘어와 버즈워드처럼 클라우드 컴퓨팅(Cloud Computing)을 만들어낸 것이라는 시각은 아주 단편적인 논의에 불과하다고 클라우드 컴퓨팅 진영에서는 한 마디로 일갈합니다.

맨처음 말씀드린 대로 단순히 초대형 서버로 대응한다는 의미로 본다면 이미 클라우드 컴퓨팅 이전에도 서버 호스팅이라는 개념이 존재합니다. 서버 증설에 며칠이 걸리던 일을 단 몇 분만에, 대규모 종량제로 월, 일 단위로 과금하던 것을 시간, 분 단위로 과금하거나, 중앙 집중관리 식 그리드 컴퓨팅의 더딘 대응을 매우 신속하게 처리한다든가 하는 것이 바로 클라우드 컴퓨팅의 핵심이라고 볼 수 있습니다.

하지만 그보다 더 중요한 문제는 바로 하드웨어 장애에 신속히 대응할 수 있다는 점입니다. 아무리 초대형 서버를 가지고 있더라도 서버가 다운되면 데이터 접속이 불가하고 아까 트위터 고래그림 같은 전체 서비스 중지로 이어집니다. 요즘처럼 급박하게 돌아가는 사회에서는 이는 바로 사용자 이탈을 불러일으키죠. 이 같은 장애 상황에 저비용으로 효과적으로 대응할 수 있다는 것이 바로 클라우드 컴퓨팅의 핵심이라고 볼 수 있겠습니다.

클라우드 컴퓨팅 = 신속성 + 유연성 + 효율성 + 저비용 + 장애 대응

사용자 삽입 이미지


클라우드 컴퓨팅 "구현 기술"

그렇다면 이 같은 클라우드 컴퓨팅의 속성과 개념을 파악한 후에 클라우드 서비스를 만들려면 무엇을 알아야 하고, 무엇을 해야 하는가. 클라우드 서비스 아키텍처를 구성하기 위한 "구현 기술"이 무엇인가.

저자들은 바로 이 내용을 여러분께 알려드리기 위해 이 책을 집필했다고 합니다.

- 쓰리프트(Thrift), 에이브로(Avro) 등의 애플리케이션 서버
- 주키퍼(Zookeeper)등의 분산 관리 시스템
- 하둡(Hadoop)으로 대표되는 대용량 파일 시스템대용량 분산처리
- 멤캐쉬디(Memcached), 카산드라(Cassandra), 몽고DB(MongoDB), Neo4J 등으로 분류되는 NoSQL과 DBMS클러스터의 데이터베이스
- 로그 분석
- 성능 향상에 가장 중요한 요인인 캐시(Cache)

이 책에서는 이와 같은 클라우드 컴퓨팅의 모든 구성 요소를 다룹니다. 그리고 클라우드 컴퓨팅 대표 기업이 어떤 아키텍처를 채택했는지도 함께 알아봅니다. 아마 이 책은 세계적으로도 나온 적이 없는 클라우드 컴퓨팅의 입문서이자 개론서라고 할 수 있습니다. 물론 현 시점에서 가장 업데이트된 최신 버전으로 알려드림은 물론입니다.

사용자 삽입 이미지

이 책은 김형준, 조준호, 안성화, 김병준 네 분 저자께서 집필하셨습니다. 어제는 저희 사무실에 오셔서 기념샷도 찍으시고 저희끼리 조촐한 출간 파티도 열었습니다. 지글지글 꼼장어 집에서요. 제가 오늘 블로그에 적은 모든 이야기를 해주시기도 했고요.
사용자 삽입 이미지

얼마 전 인터넷 서점 예스24에서 오픈한 총알 검색이라는 기능이 있다고 합니다. 검색란에 검색어를 입력하면 세 권의 책을 보여준다고 하네요.
에이콘이라고 입력하면 무슨 책이 뜨는지 찾아봤습니다.
사용자 삽입 이미지

안 보면 왕따되는 '페이스북 이펙트'와 여전한 폭풍 인기 '토비의 스프링3', 그리고 이 책 '클라우드 컴퓨팅 구현 기술'이 뜹니다. 어찌 보면 크지 않은 도서시장인데도 많은 관심을 끌어 모으고 있다는 방증이겠죠.

사용자 삽입 이미지

제가 무어라 감사의 말을 전해야 할지 모를, 대표저자 김형준 님이십니다. 아마 5년 전쯤인가요. 지인들의 소개로 참석한 삼성SDS 자바 개발자 모임에서 김형준 님을 처음 뵈었습니다. 그때 그분께서 주신 열정과 성실함으로 인한 인연이 지금까지 이어져 이 책을 탄생하게 되었네요. 그동안 여러 곳에서 끝없는 열정으로 개발자로서 열심히 살아가는 김형 준 님께 정말 큰 감사의 박수를 보냅니다. 어젯밤 늦게까지 많은 이야기를 나누고 돌아가시는 저자분께 인사를 건네며 김형준 님께 악수를 청했습니다. 정말 고맙다고요. 단지 책 한권을 출간함을 넘어 저희 출판사에 대한 믿음과 책에 대한 애정이 고마울 따름이었습니다. 다시 한번 감사 말을 전합니다. "고맙습니다. 수석님." 그리고 물론 넥스알 하둡 전문가 조준호 팀장님, NHN 플랫폼서비스지원팀에서 일하시는 데이터베이스 전문가 김병준 차장님, NHN 성능엔지니어링 팀 캐쉬 분야 전문가 안성화 수석님, 모두 감사합니다. 고생하셨어요.

이 책은 이미 출간되어 YES24, 교보문고, 강컴, 인터파크, 알라딘, 리브로에서 판매 중입니다. 지금 주문하시면 올해가 가기전에 사보실 수 있을 거예요. 그간 궁금했던 클라우드 컴퓨팅 기술의 모든 것, 이 책 한 권으로 끝내보시기 바랍니다. 물론 세부 구현 기술에 대해선 여기저기서 많이 출간된 여러 책을 참조하시면 되고요. 감사합니다. 마지막으로 여러 분들의 추천사로 갈음하겠습니다. 추천글 전문은 저희 출판사 도서정보페이지에서 확인하세요.

클라우드 컴퓨팅의 이론부터 구현까지, 사례를 통해 생생하게 느낄 수 있다. 실무 담당자라면 이 책에서 유용한 힌트를 얻을 수 있을 것이다.
― 김민석 / NHN I&S

클라우드 컴퓨팅은 지식의 공유에서 온 커다란 선물일지도 모르겠다. 쉽지 않지만 이 책은 그 선물에 한 발짝 다가서서 제대로 흐름을 읽고, 구현되는 기술을 알 수 있도록 조언해준다.
― 도안구 / 블로터닷넷 기자
일과 삶에 균형을 맞추고, 서비스 변화에 발 빠르게 대응하기 위한 방법을 찾고자 한다면 이 책을 통해 새로운 전략을 세울 수 있을 것이다.
― 박재성 / XLGames 웹 개발자, 자바지기 커뮤니티 운영자
이 책에서는 클라우드의 기본부터 세밀한 구조까지 균형 잡힌 설명을 하고 있다. 클라우드의 사용자, 사업자, 개발자, 학생 등까지 널리 추천할 만하다.
― 서정식 / KT Cloud 추진본부 본부장
지금까지 클라우드 컴퓨팅에 관한 기술 서적이 제대로 없었는데, 이 책이 하나의 획을 그을 수 있지 않을까 생각한다.
― 성기준 SKC&C 클라우드컴퓨팅 사업본부 본부장
대용량 시스템을 오랜 시간 경험해온 저자들답게 IT 환경에서 항상 고민해 온 각종 자원 관리에 대한 수많은 고민을 매우 수준 높은 시각에서 실질적인 해결책을 제시한다.
― 이정룡 / 삼성SDS 인트라넷혁신그룹
현재 클라우드 기술 관련 국내외 서적을 통틀어 이 책만큼 다양하고 중요한 오픈소스를 심도 있게 다루고 있는 책은 없다고 단언합니다.
― 한재선 / 넥스알 대표이사, 한국 Hadoop 커뮤니티 회장, KAIST 정보미디어 경영대학원 겸직교수


 

CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

 1쇄 오류/오탈자 

[ p20 세 번째 문단 1행 ]
클라우드 컴퓨 → 클라우드 컴퓨

[ p28 2행 ]
IMB → IBM

[ p87 ●레드햇 계열 ]
yum install boost-devel automake libtool flex bison pkgconfig gcc-c++ → yum install boost-devel automake libtool flex bison pkgconfig gcc-c++ python-devel

[ p90 리스트 3.4 마지막 행 추가 ]
}

[ p123 표 3.4 namespace 설명 패키지]
패지키 → 패키지

[ p425 아래에서 7-10행 ]
[@server1]
$ bin/mongos --port 30000 --configdb server1:20000,server2:20000,server3:20000 ./logs/mongos.log -fork

[@server2]
$ bin/mongos --port 30000 --configdb server1:20000,server2:20000,server3:20000 ./logs/mongos.log -fork ↓ [@server1]
$ bin/mongos --port 30000 --configdb server1:20000,server2:20000,server3:20000 --logpath ./logs/mongos.log --fork

[@server2]
$ bin/mongos --port 30000 --configdb server1:20000,server2:20000,server3:20000 --logpath ./logs/mongos.log --fork

[ p511 그림 9.7 ]
8080 → 8091

 2쇄 오류/오탈자 

[ p59 그림 2.3 URL 변경 ]
http://java.sun.com/blueprints/core2jeepatterns/Patterns → http://www.oracle.com/technetwork/articles/javaee/j2eeevolution-140167.html

[ p64 ●제목 부분 ]
애플리케이션 서버 자체를 구축할 수 있는 프레임워크 → 애플리케이션 서버 자체를 구축할 수 있는 프레임워크

[ p66 ●제목 병기 추가 ]
고가용성 → 고가용성(High Availability) 자동화된 리소스 관리 → 자동화된 리소스 관리(Automatic Resource Management)

[ p89 2행 ]
IDLInterface Definition Language → IDL, Interface Definition Language

[ p146 아래에서 2행 ]
standb → standby

[ p161 아래에서 3행 ]
scheme:id → schema:id

[ p163 아래에서 5행 ]
addAuthIno 메소드 → addAuthInfo 메소드

[ p164 DISCONNECTED 설명 중 아래에서 5행 ]
DISCONNECT 상태에서는 → DISCONNECTED 상태에서는

[ p172 그림 4.7 서버 3 풍선도움말 ]
vote:3 → vote: 서버3

[ p246 코드 5.2 1행 ]
HDFSClientExapmle → HDFSClientExample

[ p246 코드 5.2 아래에서 10행 ]
디렉토리 삭제 → 파일 삭제

[ p345 두 번째 문단 3-4행 ]
다른 다른 테블릿 서버가 → 다른 테블릿 서버가

[ p376 4행 ]
HBase 메인 개발 회사는 → HBase 메인 개발 회사는

[ p389 세 번째 문단 1행 ]
쓰기 연산에 대한 → 쓰기 연산에 대한