본문 바로가기

도서 소개

오픈소스 소프트웨어 성능 최적화 보고서

 

 

이 책은 현재 절판입니다. 그간 읽어주신 분들께 감사를 드립니다.

 

크롬은 브라우저 전쟁에서 어떻게 살아남았을까?

크롬뿐만이 아니다. 여러 오픈소스 소프트웨어가 지금의 성능 최적화를 이루기까지

수많은 시행착오 속에 그 비밀이 들어있다!

15,000원 특별보급가로 판매합니다!

 

출판사 제이펍

원출판사 aosabook.org

원서명 The Performance of Open Source Applications(ISBN: 978-1-304-48878-7)

엮은이 테이비시 암스트롱(Tavish Armstrong)

옮긴이 류광

출판일 2014년 5월 21일

페이지 308쪽

판  형 46배판 변형(188*245)

제  본 무선(soft cover)

정  가 15,000원

ISBN 978-89-94506-90-6 (93000)

키워드 오픈소스 소프트웨어 / 성능 최적화 / OSS / 크롬 / 파이어폭스 / Ninja / memshrink / Warp / Zotonic / Talos / Infinispan

분  야 프로그래밍 / 오픈소스 소프트웨어 

 

관련 사이트

아마존 도서소개 페이지

원출판사 도서소개 페이지

 

관련 포스트

■ 2014/05/01 - [출간전 책소식] - 오픈 소스 성능 이야기

 

관련 시리즈

■ (없음)

 

소스 코드 다운로드

■ (없음)

 

강의 자료

■ 교재로 채택하신 분들에게는 강의교안 제작에 도움이 되도록 본문 이미지 자료(번역서)를 보내드리도록 하겠습니다(출판사로 메일이나 전화로 연락주세요). 

 

샘플 PDF(차례와 옮긴이 머리말, 서문, 1장 크롬의 고성능 네트워킹)

오픈소스소프트웨어성능최적화보고서_본문샘플.pdf
다운로드

 

 

정오표 페이지

http://jpub.tistory.com/443

 

도서구매 사이트(가나다순)

[강컴]   [교보문고]   [도서11번가]   [반디앤루니스]   [알라딘]   [예스이십사]   [인터파크]

 

도서 소개

크롬은 브라우저 전쟁에서 어떻게 살아남았을까?

크롬뿐만이 아니다. 여러 오픈소스 소프트웨어가 지금의 성능 최적화를 이루기까지

수많은 시행착오 속에 그 비밀이 들어있다!

 

1974년에 커누스(Donald Knuth)가 쓴 “이를테면 약 97%의 경우에서 작은 효율성들은 무시해야 마땅하다. 때 이른(premature) 최적화는 만악의 근원이다.”라는 유명한 문구를 기억할 것이다. 컴퓨터들이 당시보다 수백만 배는 빨라진 지금, 프로그래머들은 CPU 주기를 줄이고 바이트들을 아끼는 데 한 세대 전의 프로그래머들보다는 신경을 훨씬 덜 써도 된다. 그러나 “덜 쓴다”가 “안 쓴다”는 아니다. 가끔은 컴퓨터의 성능을 마지막 한 방울까지 짜내는 것이 정말로 중요할 때가 있다.

 

이 책은 오픈소스 소프트웨어의 느린 코드, 메모리 누수, 제어할 수 없는 잠복지연과 싸워야 했던 십여 명의 개발자들이 저술했다. 이 책을 통해 그들은 자신의 실수와 성공담을 공유하고, 주어진 도전과제에 자신이 어떻게 접근했는지를 독자가 어깨 너머로 볼 수 있게 한다. 생물정보학 연구 코드에서 웹 브라우저에 이르기까지 다양한 사례의 문제들이 등장하며, 그만큼이나 다양한 해법들이 제시된다. 

 

독자가 신입 개발자이든 고참 개발자이든, 성능에 대한 동료 개발자들의 관점과 접근방식을 독자가 이해하는 데 이 책이 도움이 될 것이다.

 

이 책에서 논의하는 오픈소스 소프트웨어:

● 파이어폭스

● Pugixml

● 크롬

● Ninja

● EtherCalc 

● Talos

● Warp 

● Khmer

● Zotonic 

● DAnCE

● Infinispan 

● 또한 이동통신망의 성능에 대해서도 논의한다.

 

필진 소개

테이비시 암스트롱(Tavish Armstrong) / 엮은이

테이비시는 Concordia University에서 소프트웨어 공학을 공부하고 있으며, 2014년 봄에는 졸업할 예정이다. 

 

마이클 스노이먼(Michael Snoyman) / Warp

마이클은 FP Complete의 수석 소프트웨어 공학자이며, 안정적이고 성능 높은 웹 응용 프로그램을 작성하는 수단들을 제공하는 Yesod Web Framework의 창시자이자 수석 개발자이다. 

 

가즈 야마모토(Kazu Yamamoto) / Warp 

가즈는 IIJ Innovation Institute의 선임 연구원이다. 그는 약 20년간 오픈소스 소프트웨어 분야에서 일해 왔다. 그가 만든 소프트웨어로는 Mew, KAME, Firemacs, mighty가 있다.

 

안드레아스 보엘미(Andreas Voellmy) / Warp

안드레아스는 Yale University의 전산학 박사(PhD) 후보생이며, GHC 프로젝트에 기여하였고, GHC의 입출력 관리자의 유지보수자이다.

 

일리아 그리고릭(Ilya Grigorik) / 크롬 

일리아는 Google의 Make The Web Fast 팀의 웹 성능 공학자이자 개발자 홍보 담당이다. 거기서 그는 웹을 더 빠르게 만들고 성능에 관한 모범 관행들을 널리 전파하는 데 밤낮을 보낸다. 

 

에번 마틴(Evan Martin) / Ninja

에번은 Google에서 9년 동안 프로그래머로 일했다. 그전에는 전산학과 언어학에서 학위를 받았다. 

 

브라이스 하워드(Bryce Howard) / 이동기기 성능

브라이스는 뭔가를 더 빠르게 만드는 데 집착하는 소프트웨어 아키텍트이다. 그는 15년 이상 업계에서 일했으며, 현재는 저술에 꽂혀서 O’Reilly Associates를 위해 AWS 입문서를 쓰고 있다.

 

카일 휴이(Kyle Huey) / Memshrink

카일은 Mozilla Corporation에서 파이어폭스 웹 브라우저에 쓰이는 Gecko 렌더링 엔진에 대한 일을 하고 있다. 

 

클린트 탤버트(Clint Talbert) / Talos

클린트는 근 10년간 Mozilla 프로젝트에 참여해 왔다. 현재 그는 자동화할 수 있는 모든 것의 자동화를 지상명령으로 삼는 Automation and Tools 팀을 이끌고 있다.

 

조엘 마어(Joel Maher) / Talos

조엘은 소프트웨어 자동화에 15년 이상의 경력을 가지고 있다. 지난 5년간 조엘은 Mozilla의 자동화와 도구들을 이동전화기로 확장하는 작업을 수행했다.

 

오드리 탱(Audrey Tang) / Ethercalc

독학으로 프로그래밍과 번역을 배운 오드리는 ‘무제 페이지(Untitled Page; 또는 직책 없는 사환)’라는 직함으로 Socialtext에서 일하고 있으며, 애플에서 지역화와 릴리스 공학 작업도 수행한다. 

 

C. 타이터스 브라운(Titus Brown) / Khmer

타이터스는 물리 기상학, 발생 생물학, 유전학 등의 분야에서 일해 왔다. 현재는 Michigan State University의 조교수이며, Python Software Foundation의 일원이다.

 

에릭 맥도널드(Eric McDonald) / Khmer

에릭 맥도널드는 그가 지난 13년간 주로 관여했던 고성능 컴퓨팅에 강조를 둔 과학 소프트웨어 개발자이다. 

 

더글러스 C. 슈미트(Douglas C. Schmidt) / DAnCE

더글러스 박사는 Vanderbilt University의 전산학 교수이자 전산학 및 공학 프로그램의 부의장이며 선임 연구원이다. 10권의 책을 저술했고 다양한 소프트웨어 관련 주제들에 대한 기술 논문을 500편 넘게 출판했다. 

 

아니루다 고칼레(Aniruddha Gokhale) / DAnCE

아니루다 S. 고칼레 박사는 Vanderbilt University의 전기공학 및 전산학과의 조교수이자 Vanderbilt University의 Institute for Software Integrated Systems(ISIS)의 선임 연구 과학자이다. 그는 140편이 넘는 기술 논문을 저술 또는 공동 저술했다.

 

윌리엄 R. 오테(William R. Otte) / DAnCE

윌리엄 R. 오테 박사는 Vanderbilt University의 Institute for Software Integrated Systems(ISIS)의 연구 과학자이다. 분산 실시간 내장 시스템에 대한 오픈소스 미들웨어와 모형화 도구 개발에 10년이 넘는 경력을 가지고 있다.

 

마닉 수르타니(Manik Surtani) / Infinispan

마닉은 Red Hat의 미들웨어 분과인 JBoss의 핵심 연구 개발 공학자이다. 그는 Infinispan 프로젝트의 창시자이며 JBoss Data Grid의 플랫폼 아키텍트이다. 

 

아세니 카풀킨(Arseny Kapoulkine) / Pugixml

아세니는 경력 전체를 작은 틈새 타이틀에서부터 FIFA Soccer 같은 다중 플랫폼 AAA급 블록버스터에 이르기까지 다양한 비디오 게임의 그래픽 프로그래밍과 저수준 시스템 프로그래밍으로 보냈다. 

 

아르얀 스헤르페니서(Arjan Scherpenisse) / Zotonic

아르얀은 Zotonic의 주 아키텍트들 중 한 명이며, 다른 십여 개의 프로젝트들(주로는 Zotonic과 Erlang을 사용하는)도 관리하고 있다. 

 

마크 워렐(Marc Worrell) / Zotonic

마크는 Erlang 공동체에서 존경받는 일원이며 Zotonic 프로젝트의 창시자이다. 마크는 대형 Erlang 프로젝트의 컨설팅과 Zotonic 개발에 시간을 보내며, MaxClass와 LearnStone을 만든 Maximonster의 CTO이다.

 

역자 소개

류광 

옮긴이 류광은 1996년부터 활동해온 프로그래밍 서적 전문 번역가로, 『Game Programming Gems』 시리즈와 커누스(Knuth) 교수의 고전 『컴퓨터 프로그래밍의 예술』(The Art of Computer Programming) 시리즈, 스트롭스트룹(Bjarne Stroustrup)의 『C++로 배우는 프로그래밍의 원리와 실제』(Programming―Principles and Practice Using C++)를 비롯한 다양한 분야의 프로그래밍 서적 을 50권 넘게 번역했다. 번역과 프로그래밍 외에 소프트웨어 문서화에도 많은 관심을 가지고 있으며, 수많은 오픈소스 프로젝트들의 표준 문서 형식으로 쓰이는 DocBook의 국내 사용자 모임인 닥북 한국(http://docbook.kr/)의 일원이다.

 

현재 번역서 정보 사이트 occam’s Razor(http://occamsrazr.net/)와 Game Programming Gems 스터디 사이트 GpgStudy(http://www.gpgstudy.com/)를 운영하고 있다.

 

차례

제1장 크롬의 고성능 네트워킹

1.1 구글 크롬의 역사와 기본 지침 1

1.2 성능의 여러 측면 2

1.3 현대적인 웹 응용 프로그램의 특징 4

1.4 네트워크 자원 요청 하나의 일생 5

1.5 “충분히 빠르다”의 의미 8

1.6 3천 미터 상공에서 본 크롬의 네트워크 스택 10

1.7 브라우저 세션의 일생 19

1.8 크롬은 사용하면 할수록 빨라진다 33

더보기

제2장 SocialCalc에서 EtherCalc로

2.1 초기 원형 38

2.2 첫 번째 병목 39

2.3 Node.js로 이식 41

2.4 서버 쪽 SocialCalc 42

2.5 Node.js 프로파일링 43

2.6 다중 코어 규모 확장 46

2.7 교훈 48

 

제3장 Ninja

3.1 크롬의 간단한 역사 54

3.2 Ninja의 설계 56

3.3 Ninja가 하는 일 58

3.4 Ninja의 최적화 60

3.5 결론 및 설계 대안 67

3.6 감사의 글 68

 

제4장 빛의 속도로 XML 파싱하기

4.1 소개 69

4.2 XML 파싱 모형들 70

4.3 pugixml 설계상의 선택들 71

4.4 파싱 72

4.5 DOM 자료구조 85

4.6 스택 기반 메모리 할당 89

4.7 스택 기반 할당자의 메모리 해제 지원 93

4.8 결론 95

 

제5장 MemShrink

5.1 소개 97

5.2 기반구조의 개요 98

5.3 잰 만큼 얻는다 101

5.4 달성하기 쉬운 과제들 105

5.5 내 잘못은 아니지만 내 문제 108

5.6 영속성은 탁월함의 대가 110

5.7 공동체 112

5.8 결론 113

 

제6장 최적화 원리 패턴들을 구성요소 배치와 구성 도구들에 적용하기

6.1 소개 115

6.2 DAnCE의 개요 119

6.3 최적화 원리 패턴들을 DAnCE에 적용하기 123

6.4 결론 140

 

제7장 Infinispan

7.1 소개 145

7.2 개요 146

7.3 Infinispan의 벤치마킹 149

7.4 Radar Gun 150

7.5 성능 문제의 잠재적 근원 153

7.6 결론 159

 

제8장 Talos

8.1 개요 162

8.2 측정 대상의 이해 164

8.3 재작성 대 리팩터링 167

8.4 성능 문화 만들기 168

8.5 결론 171

 

제9장 Zotonic

9.1 Zotonic 소개 173

9.2 왜 Zotonic인가? 왜 Erlang인가? 174

9.3 Zotonic의 구조 177

9.4 문제 해결: 슬래시닷 효과에 맞서기 180

9.5 캐싱 계층들 183

9.6 Erlang의 가상 기계 190

9.7 Webmachine 라이브러리 변경 사항 194

9.8 자료 모형: SQL 기반 문서 데이터베이스 196

9.9 벤치마크, 통계치, 최적화 197

9.10 결론 199

9.11 감사의 글 200

 

제10장 이동통신망 성능의 비밀

10.1 소개 201

10.2 잠복지연의 근원들 202

10.3 셀 방식 이동통신망의 특성 203

10.4 네트워크 프로토콜 성능 208

10.5 TCP(전송 제어 프로토콜) 209

10.6 HTTP(하이퍼텍스트 전송 프로토콜) 213

10.7 TLS(전송층 보안) 216

10.8 DNS(도메인 이름 시스템) 219

10.9 결론 221

 

제11장 Warp

11.1 Haskell의 네트워크 프로그래밍 224

11.2 Warp의 구조 229

11.3 Warp의 성능 231

11.4 핵심 착안 233

11.5 HTTP 요청 파서 235

11.6 HTTP 응답 조합기 242

11.7 타이머를 이용한 정리 245

11.8 향후 작업 249

11.9 결론 251

 

제12장 생물정보학의 거대 자료 다루기

12.1 소개 253

12.2 khmer의 구조와 성능상의 고려사항 257

12.3 프로파일링과 측정 261

12.4 조율 265

12.5 전반적인 조율 266

12.6 병렬화 271

12.7 결론 275

12.8 향후 개선안 275

12.9 감사의 글 276

 

참고문헌 277

찾아보기 282