책 소개
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/nodejs-hp)
요약
Node.js는 서버 쪽에서 자바스크립트를 사용할 수 있게 해주는 도구다. Node.js와 같은 플랫폼에서 성능 최적화를 위해서는 하드웨어의 각 특징을 사용하고, 메모리 관리를 최적으로 해야 한다. 이 책은 성능 분석으로 시작했지만, Node.js 개발자의 성능 병목지점을 제거하는 데 매우 도움이 되며, 성능 저하를 미리 회피할 수 있는 개발 패턴을 알려준다. 가비지 컬렉션(Garbage Collection)과 동작의 중요성을 배울 수 있으며, 어떻게 프로세서를 프로파일링 할 수 있는지 파악할 수 있다.
이 책에서 다루는 내용
■ 제대로 정의되고 테스트된 개발 패턴을 이용한 애플리케이션 개발
■ 성능을 향상시키기 위한 메모리 관리 및 가비지 컬렉션
■ 메모리 변경 모니터링과 힙 스냅샷 분석
■ CPU 프로파일링과 프로세서를 지나치게 사용하는 패턴을 피하는 코딩 방법
■ 데이터의 중요성과 정보 캐싱 시기에 대한 이해
■ 상시 코드 테스트와 필요시 벤치마킹을 위한 자긴 학습
■ 애플리케이션 범위의 확장과 성능 향상 요소 파악
이 책의 대상 독자
애플리케이션의 성능을 향상시키기 위해 플랫폼에 대한 더 많은 지식을 얻으려는 Node.js 개발자를 위한 책이다. Node.js 기본에 대한 배경지식을 갖췄거나, 가비지 컬렉션에 대해 잘 알면서 애플리케이션을 더욱 견고하게 만들고 싶은 전문가 모두에게 이 책의 예제가 많은 도움이 될 것이다.
이 책의 구성
1장, ‘소개 및 컴포지션’에서는 이 책의 주제를 간략히 소개하고, 성능 분석과 벤치마킹의 중요성을 강조한다. 애플리케이션은 여러 개의 더 작은 컴포넌트들로 쪼개질 수 있으며, 애플리케이션 내 각 컴포넌트의 복잡도는 개발자가 관리할 수 있는 수준으로 작게 유지돼야 한다. 여기서는 개발 방법론의 중요성을 이해해야 한다. 그리고 분석은 더 쉽게 이뤄질 수 있어야 한다. 애플리케이션의 수명주기상에서 성능이 더 뛰어나거나 새로운 것이 나오면 쉽게 교체할 수 있도록 복잡도를 더 작게 만들어야 한다.
2장, ‘개발 패턴’에서는 성능이 떨어지는 것을 피하거나 발견할 수 있도록 도와주는 프로그래밍 패턴을 포함한다. 앞으로 발생 가능한 문제점을 피하고, 간단한 패턴이나 기법들을 선택하는 것이 무엇보다도 중요하다. 이를 명심해, 프로그래밍 언어가 동작하는 방법과 이벤트 루프의 중요성, 비동기 프로그래밍이 최적으로 동작하는 방법을 이해해야 한다. 프로그래밍 언어에서의 가장 중요한 요소인 스트림과 버퍼도 이해해야 할 것이다.
3장, ‘가비지 컬렉션’에서는 GC의 중요성과 동작을 알려준다. V8 메모리 관리 방법, 불필요 메모리, 메모리 누수를 이해할 수 있다. 또한 애플리케이션을 프로파일링하는 방법과 개발자가 객체를 제대로 사용하지 않아 발생하는 잘못된 프로그래밍에 의한 메모리 누수를 찾는 방법을 알 수 있다.
4장, ‘CPU 프로파일링’에서는 애플리케이션이 호스트에 독차지해 사용할 때가 언제인지와 왜 그런지 이유를 알 수 있으며, 프로세서 프로파일링도 가능하다. 여기서는 프로그래밍 언어의 한계점을 이해하고, 성능 향상과 확장을 위해 애플리케이션을 여러 개의 모듈로 쪼갠 후 각기 다른 호스트에서 동작시키도록 하는 방법도 살펴본다.
5장, ‘데이터와 캐시’에서는 외부적으로 저장된 애플리케이션 데이터를 설명하고, 그것이 애플리케이션의 성능에 어떠한 영향을 미치는지 살펴본다. 애플리케이션 내부, 디스크, 로컬 서비스, 로컬 네트워크 서비스, 클라이언트 호스트에 저장하는 방법도 살펴본다. 여기서는 각기 다른 타입의 데이터 저장 방법을 알아보고, 어떠한 단점을 가지고 있는지, 가장 최적의 방법을 선택할 때 고려해야 하는 사항은 무엇인지 살펴본다. 데이터가 로컬 또는 외부 저장되는 방법과 데이터의 중요도에 따라 캐싱되는 데이터에 액세스하는 방법을 알 수 있다.
6장, ‘테스트, 벤치마크, 분석’에서는 애플리케이션을 테스트하고 벤치마킹하는 방법을 살펴본다. 살펴보지 않은 애플리케이션 테스트 구역이 생기지 않도록 하기 위해 코드 커버리지를 강화해야 한다. 그리고 벤치마킹과 벤치마크 분석을 해야 한다. 성능을 향상시키기 위해 애플리케이션의 특정 부분을 분석하고, 벤치마크를 수행해 어떻게 테스트해야 하는지 이해할 수 있다.
7장, ‘병목 현상’에서는 애플리케이션 외부에서의 제약 사항을 살펴본다. 여기서는 성능 제약이 애플리케이션 프로그래밍에 있는 것이 아니라 외부 요소, 즉 호스트 하드웨어, 네트워크, 클라이언트에 있다는 것을 보여준다. 외적 요소들로 인해 애플리케이션의 내부 또는 외부 동작이 제약받을 수 있다는 것을 알게 된다. 또한 그 외에 클라이언트 단의 한계도 알 수 있으며, 현재 성능을 향상시키기 위해 아무것도 할 수 없을 때도 있음을 깨닫게 될 것이다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
목차
목차
- 1장. 소개 및 컴포지션
- 2장. 개발 패턴
- 3장. 가비지 컬렉션
- 4장. CPU 프로파일링
- 5장. 데이터와 캐시
- 6장. 테스트, 벤치마크, 분석
- 7장. 병목 현상
도서 오류 신고
정오표
정오표
[p35. : 소스코드의 주석 5행]
// 원래 작업
->
// 개선된 작업
[p35. : 소스코드의 주석 10행]
// 개선된 작업
->
// 기존 작업