이 책은 대규모 서비스를 개발, 운용하는 기술자를 위한 입문서다. 하테나가 학생을 대상으로 개최하는 인턴십에서 수행하는 실제 기술 강의를 기반으로 구성되어 있다. 계속해서 성장하고 있는 웹 서비스를 간단히 처리할 수 없는 규모의 데이터에 직면했을 때 어떻게 처리할까? 자신이 작성한 코드가 시스템을 다운시키지 않게 하려면 어떤 점에 주의해야 할까? 확장성을 고려한 시스템을 설계하려면 무엇을 확보해 두어야 할까? 이러한 쟁점들을 해결할 수 있는 다양한 실전 기술들을 다루고 있다.
내용은 OS 및 컴퓨터의 동작원리, DB 분산방법, 실전적인 알고리즘을 시스템에 적용하는 방법, 대규모 데이터를 요리하는 검색엔진의 원리와 구조, 시스템 전체를 조망하기 위한 인프라 설계지식 등을 다양한 샘플 코드와 함께 자세하게 소개하고 있다. 이와 같은 기본 지식 외에도 하테나의 서비스 개발 현장에서 엔지니어 간 의사소통 방법과 활용도구에 대한 사용 이유, 목표도 소개하고 있어서 개발뿐 아니라 팀 운영 면에서도 도움이 될 만한 정보들이 가득 차 있다. 또한 향후 서비스 전체를 클라우드로의 이전 여부를 선택할 경우에 있을 수 있는 문제나 자체 서버를 사용하려는 입장에서의 고려사항 및 전망, 글로벌화를 위해 넘어야 할 장벽에 대한 설명도 중대규모 서비스를 운영하는 이들에게 도움이 될 것이다.
Contents
제1장 대규모 웹 서비스 개발 오리엔테이션 -전체 그림 파악하기
강의 0 이 책의 근본 - 이 책에서 설명하는 것과 설명하지 않는 것
강의 1 대규모 서비스와 소규모 서비스
강의 2 계속 성장하는 서비스와 대규모화의 벽
강의 3 서비스 개발의 현장
제2장 대규모 데이터 처리 입문 - 메모리와 디스크, 웹 애플리케이션과 부하
강의 4 하테나 북마크의 데이터 규모 - 데이터가 많을수록 처리에 시간이 걸린다
강의 5 대규모 데이터 처리의 어려운 점 ㆍ 메모리와 디스크
강의 6 규모조정의 요소
강의 7 대규모 데이터를 다루기 위한 기초지식
제3장 OS 캐시와 분산 - 대규모 데이터를 효율적으로 처리하는 원리
강의 8 OS의 캐시 구조
강의 9 I/O 부하를 줄이는 방법
강의 10 국소성을 살리는 분산
제4장 DB 스케일아웃 전략 - 분산을 고려한 MySQL 운용
강의 11 인덱스를 올바르게 운용하기 ㆍ 분산을 고려한 MySQL 운용의 대전제
강의 12 MySQL의 분산 ㆍ 확장을 전제로 한 시스템 설계
강의 13 MySQL의 스케일아웃과 파티셔닝
제5장 대규모 데이터 처리 실전 입문 - 애플리케이션 개발의 급소
강의 14 용도특화형 인덱싱 ㆍ 대규모 데이터를 능수능란하게 다루기
강의 15 이론과 실전 양쪽과의 싸움
제6장 [과제] 압축 프로그래밍 - 데이터 크기, I/O 고속화와의 관계 인식하기
강의 16 [과제] 정수 데이터를 컴팩트하게 가져가기
강의 17 VB Code와 속도감각
강의 18 과제에 대한 상세설명과 응답 사례
제7장 알고리즘 실용화 - 가까운 예로 보는 이론ㆍ연구의 실전 투입
강의 19 알고리즘과 평가
강의 20 하테나 다이어리의 키워드 링크
강의 21 하테나 북마크의 기사 분류
제8장 [과제] 하테나 키워드링크 구현 - 응용으로 가는 길 깨닫기
강의 22 [과제] 하테나 키워드 링크 만들기
강의 23 응답 사례와 사고방식
제9장 전문 검색기술 도전 - 대규모 데이터 처리의 노하우
강의 24 전문 검색기술의 응용범위
강의 25 검색 시스템의 아키텍처
강의 26 검색엔진의 내부구조
제10장 [과제] 전문 검색엔진 작성 - 기초, 상세부분 작성, 속도와 정확성 추구
강의 27 [과제] 하테나 북마크 전문 검색 만들기
강의 28 응답 사례와 사고방식
제11장 대규모 데이터 처리를 지탱하는 서버/인프라 입문 - 웹 서비스의 백엔드
강의 29 엔터프라이즈 vs. 웹 서비스
강의 30 클라우드 vs. 자체구축 인프라
제12장 확장성 확보에 필요한 사고방식 - 규모 증대와 시스템 확장
강의 31 계층과 확장성
강의 32 부하 파악, 튜닝
제13장 다중성 확보, 시스템 안정화 - 100%에 근접한 가동률을 실현하는 원리
강의 33 다중성 확보
강의 34 시스템 안정화
강의 35 시스템 안정화 대책
제14장 효율향상전략 - 하드웨어의 리소스 사용률 높이기
강의 36 가상화 기술
강의 37 하드웨어와 효율향상 ㆍ 저비용을 실현하는 요소기술
제15장 웹 서비스와 네트워크 - 서비스의 성장
강의 38 네트워크 분기점
강의 39 한층 높은 단계로
특별편 현대 웹 서비스 구축에 필요한 실전 기술 - 대규모 서비스에 대응하기 위해서
Special 강의 1 작업큐(Job-Queue) 시스템 ㆍ TheSchwartz, Gearman
Special 강의 2 스토리지 선택 ㆍ RDBMS와 key-value 스토어
Special 강의 3 캐시 시스템 ㆍ Squid, Varnish
Special 강의 4 계산 클러스터 ㆍ Hadoop