저자

에이미브라운(엮음),그레그윌슨(엮음)

엮은이에이미브라운AmyBrown은워털루대학교에서수학으로학사를마쳤으며,소프트웨어산업에서10년동안근무했다.최근에는저술과책편집업무에종사하고있으며,때때로소프트웨어에관한책을다루기도한다.토론토에서자녀두명과아주나이먹은고양이와함께살고있다.

목차

목차
옮긴이의글
서문
1장CMake
1.1CMake역사와요구사항
1.2CMake의구현방식
1.3교훈
2장LLVM
2.1빠르게살펴보는고전적컴파일러설계방식
2.2기존구현사례들
2.3LLVMIR
2.4LLVM에서의3단계컴파일러설계구현
2.5이식이용이한LLVM코드생성기의설계
2.6그밖의흥미로운기능들
2.7회고와향후방향
3장NoSQL생태계
3.1NoSQL이란?
3.2NoSQL의데이터와질의모델
3.3데이터내구성(Durability)
3.4스케일링을통한성능향상
3.5일관성
3.6마치며
4장VTK
4.1VTK란무엇인가?
4.2아키텍처
4.3회고와앞으로의기대
5장그래파이트(Graphite)
5.1데이터베이스라이브러리:시계열데이터를저장
5.2백엔드:그저저장소서비스일뿐
5.3프론트엔드:온디멘드그래프
5.4대시보드
5.5뻔했던병목지점
5.6입출력최적화
5.7실시간성회복
5.8커널과캐시그리고대재앙
5.9클러스터링
5.10회고
5.11오픈소스
6장리악(Riak)과얼랭/OTP(Erlang/OTP)
6.1간략한얼랭소개
6.2프로세스뼈대
6.3OTP비헤이비어
6.4다른작업자비헤이비어들
6.5관리자
6.6리악에서의복사와통신
6.7결론과교훈
7장머큐리얼(Mercurial)
7.1버전관리의간략사
7.2데이터구조
7.3버전관리구조
7.4일반구조
7.5부가기능
7.6교훈
8장바이올렛(Violet)
8.1바이올렛소개
8.2그래프프레임워크
8.3JavaBeans프로퍼티의사용
8.4장기저장
8.5JavaWebStart
8.6Java2D
8.7자체구현한스윙프레임워크
8.8Undo/Redo
8.9플러그인구조
8.10결론
9장배시(Bourne-AgainShell,Bash)
9.1서론
9.2구문단위와기본형
9.3입력처리
9.4구문분석
9.5단어확장
9.6명령실행
9.7교훈
9.8마치며
10장버클리DB(BerkeleyDB)
10.1버클리DB의시작
10.2아키텍처살펴보기
10.3액세스메서드들:Btree,Hash,Recno,Queue
10.4라이브러리인터페이스레이어
10.5내부컴포넌트
10.6버퍼관리자:Mpool
10.7로크(lock)관리자
10.8로그관리자
10.9트랜잭션관리자
10.10마무리
11장비스트레일스(VisTrails)
11.1시스템개요
11.2프로젝트의역사
11.3비스트레일스의내부
11.4구성요소와기능
11.5교훈
12장센드메일(Sendmail)
12.1옛날옛적에…
12.2설계원칙
12.3개발단계
12.4설계결정
12.5다른고려사항
12.6보안
12.7센드메일의진화
12.8지금이라면어떻게했을까?
12.9결론
13장셀레늄웹드라이버(SeleniumWebDriver)
13.1역사
13.2용어정리
13.3프로젝트의원칙들
13.4복잡성과상대하기
13.5자바스크립트라이브러리의계층구조
13.6원격드라이버,특히파이어폭스
13.7IE드라이버
13.8웹드라이버RC
13.9회고
13.10향후전망

14장소셜캘크(SocialCalc)
14.1WikiCalc
14.2소셜캘크
14.3명령어실행루프
14.4테이블편집기
14.5저장포맷
14.6리치텍스트편집
14.7실시간협업
14.8교훈
15장스노우플록(SnowFlock)
15.1스노우플록개요
15.2VM복제
15.3스노우플록의접근법
15.4아키텍처VM설명자
15.5부모측컴포넌트
15.6Clone-Side컴포넌트
15.7VM복제애플리케이션인터페이스
15.8결론
16장애스터리스크(Asterisk)
16.1주요아키텍처개념
16.2애스터리스크컴포넌트추상화
16.3스레드
16.4통화시나리오
16.5마지막설명
17장오더시티(Audacity)
17.1오더시티의구조
17.2wxWidgetsGUI라이브러리
17.3ShuttleGui레이어
17.4TrackPanel
17.5PortAudio라이브러리:녹음과재생
17.6블록파일
17.7스크립팅
17.8실시간효과
17.9요약
18장웨스노스전투(BattleforWesnoth)
18.1프로젝트개요
18.2웨스노스마크업언어
18.3웨스노스의유닛
18.4웨스노스의다중사용자구현
18.5결론
19장이클립스(Eclipse)
19.1초기의이클립스
19.2이클립스3.0:런타임,RCP,로봇
19.3이클립스3.4
19.4이클립스4.0
19.5결론
20장지속적통합시스템(ContinuousIntegration)
20.1배경
20.2아키텍처
20.3향후개선방향
21장지트시(Jitsi)
21.1지트시의설계
21.2지트시와OSGi프레임워크
21.3번들의패키징과실행
21.4프로토콜제공자서비스
21.5미디어서비스
21.6사용자인터페이스서비스
21.7교훈
21.8감사의말
22장천파섹(ThousandParsec)
22.1우주제국
22.2천파섹프로토콜
22.3지원기능
22.4교훈1
23장텔레파시(Telepathy)
23.1텔레파시프레임워크의구성요소
23.2Telepathy가D-Bus를사용하는방식
23.3연결,채널그리고클라이언트
23.4언어바인딩의역할
23.5견고함
23.6텔레파시확장하기:사이드카
23.7연결관리자내부개요
23.8얻은교훈
24장파이썬패키징(PythonPackaging)
24.1개요
24.2파이썬개발자의부담
24.3패키징의현재아키텍처
24.4개선표준
24.5구현상세
24.6교훈
24.7레퍼런스및기여자
25장하둡분산파일시스템(HadoopDistributedFileSystem)
25.1개요
25.2아키텍처
25.3파일I/O작업및복제본관리
25.4야후!의사례
25.5교훈
25.6고마운분들
참고자료

출판사 서평

출판사서평
프로그래밍은평생에걸친수련이필요하다.하지만,프로그래밍자체는소프트웨어아키텍처설계와는별개의문제다.많은프로그래머가보다큰규모의설계이슈에대해몇년에걸쳐생각하고씨름한다.그런데개별프로그래머들은역사적으로뚜렷한족적을남긴프로그램들을접하거나,노련한업계종사자들이해당프로그램들에대해작성한평가를읽을기회가거의없었다.그결과로서로의장점과성공을계승하지못하고서로동일한실수를계속반복해왔다.

이책은이런현상을고쳐보고자하는노력의일환이다.각장은오픈소스...
프로그래밍은평생에걸친수련이필요하다.하지만,프로그래밍자체는소프트웨어아키텍처설계와는별개의문제다.많은프로그래머가보다큰규모의설계이슈에대해몇년에걸쳐생각하고씨름한다.그런데개별프로그래머들은역사적으로뚜렷한족적을남긴프로그램들을접하거나,노련한업계종사자들이해당프로그램들에대해작성한평가를읽을기회가거의없었다.그결과로서로의장점과성공을계승하지못하고서로동일한실수를계속반복해왔다.

이책은이런현상을고쳐보고자하는노력의일환이다.각장은오픈소스소프트웨어의아키텍처를설명한다.전체구성은어떻고,각하부구조는어떻게상호동작하며,왜그런방식으로구축하게되었으며,다른대규모설계문제에적용될수있는교훈은어떤것들이있었는지말이다.각해설은해당소프트웨어를잘아는,복잡한애플리케이션을설계하고다시재설계하는작업을길게는수십년에걸쳐수행해온전문가들이저술했다.

각애플리케이션은간단한드로잉프로그램에서부터,웹기반스프레드시트,컴파일러툴킷,그리고수백만라인에이르는시각화패키지등매우다양한분야를아우르고있다.일부는몇년밖에되지않은반면,어떤것은30주년을바라보는애플리케이션이다.하지만이책을저술한43명의필진모두가공통적으로가지고있는바람인,각시스템제작자들이설계에대해오랫동안열심히고민해왔고그결과를독자와자발적으로공유하고싶다는기대로엮어졌다.

하둡과같은분산시스템에서부터bash와같은셸에이르기까지다양한대상들을다루고있는만큼,각챕터마다설명하는방식들도개성이뚜렷하다.하지만,작업한대상의얼개를설명할때어떤내용들을중심으로설명하고어떤내용들을생략했는지,그리고설계할때어떤부분을고민했으며그에따르는장단점이어떤것이었는지등을살펴보면흥미로울듯하다.특히센드메일(Sendmail)이나bash와같이오랜역사를가지고있는소프트웨어들의경우시간이흐름에따라어떤부분이유지되었고어떤부분이변경되었는지,새로만든다면다르게접근하고싶은부분은어떤것인지등에대한설명을듣는것도쉽게접하기어려운부분이다.